use clojure.core.cache/CacheProtocol