restructured build system, broken out generic parts