implemented history (undo, redo)