Type subclasses
Can define new type classes that extend existing type classes, adding new operations and/or defaults
- Define the superclass(es) as contexts
- Instantiate each of a type’s superclasses top-down to satisfy context
- Multiple inheritance allowed
- No name clashes, since operations can not be overloaded