Now things are working for the most part, move the readers into their own internal namespace. Also start creating an actual separation of the interface and the implementation with some Interface classes at the non internal level.