You should be overriding persist() instead of cache() here to work with all storage levels