Use reduce slightly more elegantly
Rev version
Simplify Visitor#initialize
Extract complicated error logging into its own method