project structure was nicely refactored