get back to universal swap, with extra doc + vector coercion rules
minor change to logging output