depscriptor caching moved into a base class