      *  @return The shared Authentication Manager
      */
     @objc public static let sharedInstance = WMFAuthenticationManager()
-
-    public struct LoginURLs {
-        public static var wikipedia: URL? {
-            var baseURL: URL?
-            if let host = KeychainCredentialsManager.shared.host {
-                var components = URLComponents()
-                components.host = host
-                components.scheme = "https"
-                baseURL = components.url
-            }
-
-            if baseURL == nil {
-                //            #if DEBUG
-                //                let loginHost = "readinglists.wmflabs.org"
-                //                let loginScheme = "https"
-                //                var components = URLComponents()
-                //                components.host = loginHost
-                //                components.scheme = loginScheme
-                //                baseURL = components.url
-                //            #else
-                baseURL = MWKLanguageLinkController.sharedInstance().appLanguage?.siteURL()
-                //            #endif
-            }
-
-            return baseURL
-        }
-
-        static var wikidata: URL? {
-            return URL(string: WikidataAPI.host)
-        }
-    }
-
-    private enum LoginURLError: LocalizedError {
-        case couldNotConstructLoginURL
-
-        var errorDescription: String? {
-            return "Could not construct login URL; login URL is nil"
-        }
-    }
-
-
-    /// @objc wrapper around attemptLogin(to:completion:failure:) that lets us avoid having @objc classes call LoginURLs struct.
-    @objc public func attemptWikipediaLogin(_ completion: @escaping () -> Void = {}, failure: @escaping (_ error: Error) -> Void = {_ in }) {
-        attemptLogin(completion, failure: failure)
-    }
-    
-    public func attemptLogin(to loginURL: URL? = LoginURLs.wikipedia, _ completion: @escaping () -> Void = {}, failure: @escaping (_ error: Error) -> Void = {_ in }) {
-        guard let loginURL = loginURL else {
-            failure(LoginURLError.couldNotConstructLoginURL)
-            return
-        }
+    
+    public func attemptLogin(_ loginURL: URL? = LoginURL.wikipedia, completion: @escaping () -> Void = {}, failure: @escaping (_ error: Error) -> Void = {_ in }) {
         let performCompletionOnTheMainThread = {
             DispatchQueue.main.async {
                 completion()

    }
    
    public func isUserLoggedInRemotely() -> Bool {
        let taskGroup = WMFTaskGroup()
        let sessionManager = AFHTTPSessionManager(baseURL: loginSiteURL)
        var errorCode: String? = nil

     *  @param userAlreadyLoggedInHandler     The handler called if a user was found to already be logged in
     *  @param failure     The handler for any errors
     */
    public func loginWithSavedCredentials(loginURL: URL? = LoginURL.wikipedia, success:@escaping WMFAccountLoginResultBlock, userAlreadyLoggedInHandler:@escaping WMFCurrentlyLoggedInUserBlock, failure:@escaping WMFErrorHandler){
        guard let siteURL = loginURL else {
            failure(LoginURLError.couldNotConstructLoginURL)
            return
        }
