split copy and copy_with_transform