[refactored] Broke project into modules of responsibility