working undo with colors and recording