add copy logic