Entirely refactored the project