simplified internal copy functions