VariantBuilder (for initial review)

this is a lot of variables. Doesn't some of them belong together in a small struct?