Add ability to undo/redo