what's the benefit of changing the API here. I understand the information is redundant but is there a reason? Also, this code path seems repeated in many places.