Use cache.memoize for ui.hashes