Could result memoize the fields instead?