generalized build system to be usable for others