visitors are meant to be shared

* extract visitor
* share visitor instance between transforms