Initial split of internal and external api types.

This may be a Go question more than a code review question - why not just return the address of the value?