modularizing the build process