reverting to ConcreteClass and encapsulating cache by models.Manager