copy_virtual: only copy if different