basic working undo and redo