first pass of copy and undo