Generalized the build system