moved
memoization
cache utils