refactor the project structure