project structure refactored