deep copy, it's the only way