refactor but still f-ing up copying