                                                         (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)))))
+
+    (make-dataset (->> dataset
+                       (:rows)
+                       (map (fn [row]
+                              (apply merge (map #(hash-map % ((functions %) (row %)))
+                                                (keys row))))))
+                  (column-names dataset))))
 
 
 (defn swap

  "Maps the function f over the dataset and returns a new dataset.
  This is really just map/fmap defined on dataset data."
  [dataset f]
  (make-dataset (column-names dataset)
                (->> dataset inc/to-list f)))

(defn- map-keys [f hash]
  "Apply f to the keys in the supplied hashmap and return a new

                   (-> 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)
