undo redo semi working