added decorators, specifically memoize