     (add-context-handler s base-path context-path context-listeners)))
 
 (schema/defn ^:always-validate add-ring-handler!
-  [context handler path options :- RingAndWarHandlerOptions]
+  [context handler path options :- ServerIDOption]
   (let [defaults {:server-id :default}
         opts     (merge defaults options)
         server-id (:server-id opts)

    (add-servlet-handler s servlet path servlet-init-params)))

(schema/defn ^:always-validate add-war-handler!
  [context war path options :- RingAndWarHandlerOptions]
  (let [defaults  {:server-id :default}
        opts      (merge defaults options)
        server-id (:server-id opts)

   :path schema/Str
   :port schema/Int})

(def ServerIDOption
  {(schema/optional-key :server-id) schema/Keyword})

(def ContextHandlerOptions
  (assoc ServerIDOption (schema/optional-key :context-listeners) [ServletContextListener]))

(def ServletHandlerOptions
  (assoc ServerIDOption (schema/optional-key :servlet-init-params) {schema/Str schema/Str}))

(def ProxyOptions
  (assoc ServerIDOption
    (schema/optional-key :scheme) (schema/enum :orig :http :https)
    (schema/optional-key :ssl-config) (schema/either
                                        (schema/eq :use-server-config)
                                        config/WebserverSslPemConfig)
    (schema/optional-key :callback-fn) (schema/pred ifn?)
    (schema/optional-key :request-buffer-size) schema/Int))

(def ServerContext
  {:state     Atom
