copy/paste/move implementation