Massive refactoring, no new feature, just new file organization + simple refactoring