refactored project structure