 
 (defn- grep-row [dataset f]
   (let [filtered-data (filter f (:rows dataset))]
-    (make-dataset (column-names dataset)
-                  filtered-data)))
+    (make-dataset filtered-data
+                  (column-names dataset))))
 
 (defmulti grep
   "Filters rows in the table for matches.  This is multi-method

                                                        (set (keys fs-hash))))
                           (cycle [identity]))
        functions (conj fs-hash other-hash)]
   (->> dataset
        (:rows)
        (map (fn [row]
               (apply merge (map #(hash-map % ((functions %) (row %)))
                    (keys row)))))
        (make-dataset (column-names dataset)))))


(defn swap

                   (-> v
                       (assoc i (v j))
                       (assoc j (v i))))]
     (make-dataset data
                   (-> header
                       (swapper (col-position header first-col)
                                (col-position header second-col))))))
  ([dataset first-col second-col & more]
   (if (even? (count more))
     (if (seq more)
