Generally, the more stuff we can make implementation private the less we have to worry about compatibility. Are all of these utils really meant to be part of the public API?