   "A session, as represented in redis."
   :model-name "sessions"
   {(s/optional-key :webdriver-id) s/Str
-   (s/optional-key :tags)        [s/Str]
+   (s/optional-key :tags)       #{s/Str}
    (s/optional-key :reserved)     s/Bool
    (s/optional-key :current-url)  s/Str
    (s/optional-key :browser-name) s/Str

                lists (for [list-k list-keys]
                       {list-k (list (with-car* (car/lrange list-k 0 -1)))})
                maps (for [map-k map-keys]
                       {map-k (hash-map (with-car* (car/smembers map-k)))})]
            (if-not (= base {})
              (reduce merge (list* base (concat sets []))))))))))

(defn delete-model!
  "Delete a model from Redis."

  [model-schema id]
  (let [set-keys (->> model-schema
                      (keys-with-vals-matching-pred set?)
                      (map (comp name :k)))
        list-keys (->> model-schema
                       (keys-with-vals-matching-pred sequential?)
                       (map (comp name :k)))
        map-keys (->> model-schema
                      (keys-with-vals-matching-pred map?)
                      (map (comp name :k)))
        regular-keys (->> model-schema
                          (keys-with-vals-matching-pred
                            #(not-any? identity (juxt sequential? map? set?)))
                          (map (comp name :k)))
        k (model-key model-schema id)]
    (last
      (with-car*
