I suggest passing in the cache instance and the cache key at `__construct` directly (minor BC break, but we can live with that and it removes some more hardcoded stuff)