refactor project to have multiple modules