everything before undo implementation