                               (map #(cast-data % columns) d))))]
     (reduce concat file-data)))
 
-(defn read-concept-data
+(defn- read-concept-data
   [concept definition]
   (let [cdef (get-in definition [:concepts concept])
         tables (:tables definition)]
     (when-let [table (:table cdef)]
       (read-table table definition))))
 
-(defn read-concepts
+(defn- read-concepts
   [definition]
   (let [concepts (:concepts definition)]
     (reduce (fn [acc concept]

  directory containing a definition.json and a set of CSV files.

  These files are loaded in parallel."
  [dataset & {:keys [delete]}]
  (log/info "Loading dataset" dataset)
  (let [dataset (name dataset)
        dir (str "datasets/" dataset)
        drakefile (-> (str dir "/Drakefile")
                      (io/resource)
                      (io/as-file))
        definition (-> (str dir "/definition.json")
                       io/resource
                       slurp
                       (json/parse-string true)
                       (assoc :dir dir)
                       (assoc :database dataset))
        concepts (read-concepts definition)]
    (when delete
      (log/info "Dropping old dataset" dataset)

(defmethod cast-value :default [value _]
  value)

(defn- cast-data
  "Given the data from a CSV file and the definition of the data's columns,
transform that data into the form we want."
  [data columns]
