laziness, memoization and inlining