added caching of type properties