Nearly complete

Still need to add about 4 more classes and test.