update generics section
diff --git a/CITIZENSHIP.md b/CITIZENSHIP.md
index 8f9a05b..8bc966e 100644
--- a/CITIZENSHIP.md
+++ b/CITIZENSHIP.md
@@ -58,11 +58,11 @@
   - `!nullable` means any type `t` can be made non-nullable as `!t`.
   - In TypeScript, the `Null` type is a subtype of all types.
 
-- Generics 101:
+- Generics: suppose we have `class B extends A {}`, then:
 
-  - _bivariant_ means `List<number>` variables accept both `Iterable<number>` and `List<int>` values.
-  - _covariant_ means `List<number>` variables accept `List<int>` values but not `Iterable<number>`.
-  - _contravariant_ means `List<number>` variables accept `Iterable<number>` values but not `List<int>`.
-  - _invariant_ means `List<number>` vars only accept `List<number>` values.
+  - _bivariant_ means `List<A>` `<:` `List<B>` *and* `List<B>` `<:` `List<A>`
+  - _covariant_ means `List<B>` `<:` `List<A>` but not the other way around
+  - _contravariant_ means `List<A>` `<:` `List<B>` but not the other way around
+  - _invariant_ means Neither subtypes the other
 
 TODO(ochafik): Decorators (ES7 / TypeScript / AtScript)