This is both atm.
It should just become a type registry and we should have a method to create new types, separately.