let is memoized and lazily evaluated