V3

Separates each class into their own header and implementation file. 
Refactoring globals next.