Separation of clone() and copy logic