Partial Refactor

Another step in the refactor, breaking classes out into individual class
files and documenting a bit