undo/redo apply event and reverse