rewrote whole type system to use a hierarchy of classes for type, so allow management and encapsulation and type conversions and whatever