The Great Refactoring(TM).

I am refactoring pretty much everything here. The decision was made to make
testing easier, which I realized was necessary. At the time of writing, I have
coverage for almost everything.