    [modular.bidi :refer (WebService)]
    [cylon.oauth.client :refer (AccessTokenGrantee UserIdentity solicit-access-token)]
    [cylon.authorization :refer (RequestAuthorizer)]
-   [cylon.session :refer (->cookie get-session assoc-session! create-session! cookies-response-with-session get-session-value get-session-id purge-session!)]
+   [cylon.session :refer (create-and-attach! get-data exists? ->cookie get-session assoc-session! create-session! cookies-response-with-session get-session-value get-session-id purge-session! remove! assoc-data!)]
    [ring.middleware.cookies :refer (wrap-cookies cookies-request cookies-response)]
    [ring.util.response :refer (redirect)]
    [ring.middleware.params :refer (wrap-params)]

                   :body (format "Something went wrong: status of underlying request %s" (:status at-resp))}


                  (let [app-session-id (get-session-id req APP-SESSION-ID)
                        original-uri (get-session-value req APP-SESSION-ID (:session-store this) :original-uri)
                        access-token (get (:body at-resp) "access_token")

                        ;; TODO If scope not there it is the same as

                     (s/optional-key :location-after-logout) s/Str
                     })
        map->WebClient)
   [ :client-registry :browser-session]))

;; But this isn't authorization - this is authentication
;; can you write?
