use clj-tuple for fast-memoize