lazy loaded objects
Object.factory returns user defined types if exists. Also returns same type for two calls with same arguments.