Refactoring.
More refactoring. This is fun.
Finished... For now.