* better memoize decorator