Make clear the goal of the abstract classes
Comments to clarify lowercasing for sanity
Rename objects
Consistent assertions
Add unit test for Config