API change: cachedResource takes a cache key