Move vp into own package

Yeah, this one is so simple that is tempting to just re-implement it, but then we end up with it duplicated everywhere. It'd be nice to have an XXX here too, while we discuss with Dave where a public version of this should live