                               current-url]
                        :or {browser-name "firefox"
                             node nil
-                            reserved nil
-                            tags nil
+                            reserved false
+                            tags []
                             extra-desired-capabilities nil
                             reserve-after-create nil
                             force-create nil
                             current-url nil}
                        :as requirements}]
   (with-car*
-    (def defaulted-reqs {})
+    (def defaulted-reqs
+      (assoc
+        (select-keys requirements [:browser-name :reserved :tags])
+        :node
+        (or node (get-node))))
     (def capabilities (merge {"browserName" browser-name}
                              extra-desired-capabilities))
     (def wd (new-webdriver (get-node) capabilities))

    (def session-tags-key (format session-tags-key-template session-id))

    (doall
      (map (partial car/hset session-key)
           (select-keys defaulted-reqs
                        [:browser-name :node :reserved :current-url])))
    (car/del session-tags-key)

  (view-model session-id))

(defn view-model [session-id]
  (let [[contents tags]
        (subvec
          (with-car*
            (let [session-key (format session-key-template session-id)
                  session-tags-key (format session-tags-key session-id)]
              (car/watch session-key)
              (car/watch session-tags-key)
              (if (car/exists session-key)
                (do
                  (car/hgetall session-key)
                  (car/smembers session-tags-key))
                nil))) 3 5)]
    (assoc (keywordize-keys (apply hash-map contents)) :tags tags)))

(defn view-models [session-ids]
  (with-car*
    (let [session-ids (or session-ids (car/smembers session-set-key))]
      (map view-model session-ids))))
