                      (conj result (mapv format-header @hdr))
                      (conj result @hdr))
                    (mapv (partial get input) @hdr))))
-            (rf result (mapv (partial get input) @hdr)))
-          ))))))
+            (rf result (mapv (partial get input) @hdr)))))))))
 
 
 ;; Let's see this in action:

            comment-re      #"^\#"}
     :as opts}]
   (let [map-fn (when mappify
                  (if structs
                    (semantic-csv.transducers/structify {:keyify keyify :header header})
                    (semantic-csv.transducers/mappify {:keyify keyify :header header}))) ;; use mappify or structify
         remove-fn (when remove-comments
                     (semantic-csv.transducers/remove-comments {:comment-re comment-re :comment-char comment-char}))
         cast-with-fn (when cast-fns
                        (semantic-csv.transducers/cast-with cast-fns {:exception-handler cast-exception-handler :only cast-only}))
         ]
     (apply comp (remove nil? [remove-fn map-fn cast-with-fn]))))
  ; Use all defaults
  ([]
   (process {})))

;; Using this function, the code we've been building above is reduced to the following:
;;

;; ## vectorize

(defn vectorize
  "Take a sequence of maps, and returns a transducer that transform them into a sequence of vectors. Options:

  * `:header` - The header to be used. If not specified, this defaults to `(-> rows first keys)`. Only
    values corresponding to the specified header will be included in the output, and will be included in the
