       (lma/add-state) 
       (merge old-app-state)
       (lma/add-encoded-auth-string)
-      (reset! lma/app-state))))
+      (swap! lma/app-state assoc provider-name))))
 
 ;Here we either supply our key or don't. If no key, just return (first tokens)
 (defn oauth-token
   "Retreive oauth token for use in authentication call"
-  []
-  (:access_token @lma/app-state))
+  ([] (:access_token (first @lma/app-state)))
+  ([provider] (provider @lma/app-state)))


;Here we pass the name of our provider, :spotify or "spotify" or whatever
(defn refresh-token
  []
  "In case of emergency token refresh, we supply this function."
  (lma/get-tokens @lma/app-state))

(defn init
  "Init oauth token request cycle."
  []

    "No user interaction nescessary."))

;We can totally get away with only rewriting this namespace, just make each function take a keyword as argument, no argument, give us first in list.
;What do we do if we don't have provider name as key:value?"
(defn set-oauth-params
  "Set oauth-parameters for use in call to get token"
  [params]
  (let [old-app-state @lma/app-state
        provider-name (:provider params)
        ]
    (->>
      (if-not (:response-type params)
        (lma/add-response-type "code" params)
