reorganized to use Module::Build