@adamstrickland one specific question: would you break these three classes out into their own files?  (I'm not asking @nezda since I know you're using a 5k line file on your program ;)