memoize module implementation