This should memoize.