Major refactoring and changing to new name spaces and reorganising file structure. I promise not to do this again.