    (s/optional-key :browser-name) s/Str
    (s/optional-key :node)         Node})
 
+(def Capabilities {s/Any s/Any})
+
 (def Requirement
   "A schema for a session requirement."
   (s/either

        (car/sadd session-set-key session-id)
        (car/return (modify-session session-id defaulted-reqs))))))

(defn get-or-create-session
  [{:keys [browser-name
           node

  (let [u (if (string? url) (uri/uri url) url)]
    (assoc u :host (resolve-host (uri/host u)))))

(def OldRequirements
  {(s/optional-key :browser-name)  s/Str
   (s/optional-key :reserved)      s/Bool
   (s/optional-key :tags)          [s/Str]
   (s/optional-key :node)          {:url s/Str}})

(defn matches-requirements [session-model requirements]
  (s/validate OldRequirements requirements)
  (let [exact-match-keys [:browser-name :reserved]
        resolved-nodes (map (comp str host-resolved-url)
                            (filter identity
