WIP, copy! funcs need more error handling