- ensuring that the same type is not registered more than once
- using pointers for method definitons for TypeRegistry