   "Returns a lazy sequence of vectors of corresponding items from each collection.
    Stops when the shortest collection runs out."
   [& colls]
-  (partition
-   (count colls)
-   (apply interleave colls)))
+  (apply map vector colls))
 
 (defn find-with
   "Returns the val corresponding to the first key where (pred key) returns true."

(defn filter-vals
  "Returns a map that only contains values where (pred value) returns true."
  [pred map]
  (if map
    (select-keys map (filter-keys-by-val pred map))))

(defn remove-vals

  and v is the new value and returns a new nested structure. The associative structure
  can have transients in it, but if any levels do not exist, non-transient hash-maps will
  be created."
  [m [k & ks] v]
  (let [assoc (if (instance? clojure.lang.ITransientCollection m) assoc! assoc)]
    (if ks
      (assoc m k (assoc-in! (get m k) ks v))
