added cache key generation utility class