close #4: add undo, redo