Cache now accepts Data class to be implemented by subclasses