ipmlemented history (undo/redo)