Reorganize the copy logic to hopefully be clearer.