memoize on construct