VariantBuilder (for initial review)

yeah possibly -- when I clean up the branch for final merge I can try to beautify this ugly thing