add deepcopy
I have no idea what I'm doing.