Polymorphism Existentially quantified types Advanced type classes Phantom types Generalised algebraic data-types (GADT) Datatype algebra Type constructors & Kinds