commit functionality. add examples. add memoization