Massive refactoring into smaller modules.