break out mapping generator into separate file, on copyright boundary