        (apply concat)))
 
 (defn- tabbed [line]
-  (s/split line #"\t"))
+  (mapv s/trim (s/split line #"\t")))
 
 (defn- not-blank? [line]
   (not (re-matches #"\s*" line)))

(defn- throw-on-nil [x msg & args]
  (when-not x
    (throw (IllegalArgumentException.
             (apply format msg args))))
  x)

(defmethod ^:private data-line "category"


(defn- columns-from-header [header patterns]
  (when header
    (map (fn [c] (second (first (filter #(re-matches (first %) c) patterns))))
         (tabbed header))))

(defn- pick-header
