 (defn fetch-all
   "Fetch all of the entities for the given type."
   [type & options]
-  (map #(make type %) (apply c/fetch-all (collection-for type) options)))
+  (apply fetch type nil options))
 
 (defn fetch-one
   "Fetch the first entity for the given type matching the supplied criteria and options."
   [type criteria & options]
-  (make type (apply c/fetch-one (collection-for type) criteria options)))
+  (first (apply fetch type criteria options)))
 
 (defn fetch-by-id
   "Fetch an enity by :_id"

  ([type]
     (count-instances type nil))
  ([type criteria]
     (c/fetch (collection-for type) criteria :count true)))

(defn distinct-values
  "Return the distinct values of a given type for a given key."

  ([type where]
     (c/delete (collection-for type) where)))

(defn delete
  "Deletes one or more entities."
  ([entity]
     (delete-all entity (where (eq :_id (:_id entity)))))
  ([entity & entities]
     (doall (map delete (cons entity entities)))))

(defn fetch
  "Fetch a seq of entities for the given type matching the supplied parameters."
  [type criteria & options]
