cacheable
cacheable copied to clipboard
cache_key should be called first
as it is, you have special handling for nil, etc.