copy.deepcopy() is fine
better parameter handling