start Undo class for easy undo/redo
full undo implementation