Undo-redo stack: https://sites.google.com/site/tddproblems/all-problems-1/undo-redo-stack