add undo operation