use clj-tuple and fast-memoize
mark 0.1.5