There is also freedom with respect to the type formers. The only type formation facility we require is encapsulation. There can be other type formers such as generic types or type generator (such as set[T], where T can be an arbitrary type), restriction, union and arrow (functions).
Another option is whether the type system is second order. Finally, the type system for variables might be richer than the type system for objects.