Additional architectural changes. I am attempting to make the code as testable as possible, as I will be adding unit tests shortly. A couple new classes have been added, but are not "feature" complete as I haven't finished the operations.