Move all the internal implementation details to the internals directory so we can see quickly what is internal and what is not.