removed explicit create functions
type_register no longer requires inheritance