maybe add a note saying that it modifies the same object that is passed