add memoization to fibonacci