refactored the project
refactored a lot