helper and copy_slot done (untested); put in progress.