Refactored the project to consist of 3 modules