it's because of the way _cache_key is called in caching.py: 
key = cls._cache_key(*args, **kwargs)
should I change it? wouldn't it be more dirty?