memoization
docs update