Move a lot of internal stuff that needs to be public for various reasons to the internal package