I believe we should move it to decarator to avoid global implementation of cache.