Clojure Design Patterns > Visitor draft almost done