use best practice project structure (modular)