Only a couple of these functions would be needed during initialization. In the next couple commits ProcessContext will get a way to access auxiliary IO, so this really had to be separated.