seperated interface added for undo and redo functions