Merge from sall/vixen

....

Implementation is a bit iffy -- lots of reused code :-( -- but it'll do for now.