further optimize build and project structure