             let message = clientlogin["message"] as? String ?? nil
             guard status == "PASS" else {
                 
+                if let messageCode = clientlogin["messagecode"] as? String {
+                    switch(messageCode) {
+                    case "wrongpassword":
+                        failure(WMFAccountLoginError.wrongPassword)
+                        return
+                    case "oathauth-login-failed":
+                        failure(WMFAccountLoginError.wrongToken)
+                        return
+                    default: break
+                    }
+                }
+
                 if
                     status == "UI",
                     let requests = clientlogin["requests"] as? [AnyObject]

                    }
                }
                
                if let messageCode = clientlogin["messagecode"] as? String {
                    if messageCode == "wrongpassword" {
                        failure(WMFAccountLoginError.wrongPassword)
                        return
                    }
                }
                
                failure(WMFAccountLoginError.statusNotPass(message))
                return
            }

    case temporaryPasswordNeedsChange(String?)
    case needsOathTokenFor2FA(String?)
    case wrongPassword
    case wrongToken
    public var errorDescription: String? {
        switch self {
        case .cannotExtractLoginStatus:
