memoize constructor