Add deepcopy implementation, however doesn't user input_sources argument so is not fully complete yet