Refactor the undo API
Merge branch 'undo_refactor'