we shouldn't be modifying the user passed objects.