refactor project structure