Visitors are intended to be-reused not created on each transform.

* extract each visitor into own file
* expose Visitor.visitor as the visitor instance
* use shared visitor instance for all invocations of transform