Memoization: the what, why and how?