Visitor cleanup

Some useful refactorings I did when implementing #173.

By creating a visitor per method, we can avoid evil `var`s and having to re-initialize them per method.