         case ReverseAuth
     }
     
-    public class func requestRequestToken(session: Session, xAuthMode: xAuthMode?, callback: String, handler: @escaping (String?, String?, NSError?) -> Void) {
+    public class func requestRequestToken(session: Session, xAuthMode: xAuthMode? = nil, callback: String = "oob", handler: @escaping (String?, String?, NSError?) -> Void) {
         guard let url = URL.twitterOAuthURL(endpoint: "request_token") else {
             handler(nil, nil, Error.unknown)
             return

                    return
                }
                
                guard let response = response as? HTTPURLResponse, 200 <= response.statusCode && response.statusCode < 300 else {
                    handler(nil, nil, Error.unknown)
                    return
                }
                
                guard let data = data else {
                    handler(nil, nil, Error.unknown)
                    return
                }
                
                guard let queryString = String(data: data, encoding: .utf8) else {
                    handler(nil, nil, Error.unknown)
                    return
                }
                
                var urlComponents = URLComponents()
                urlComponents.percentEncodedQuery = queryString
                
                guard let queryItems = urlComponents.queryItems else {
                    handler(nil, nil, Error.unknown)
                    return
                }
                
                guard let token = queryItems.filter({$0.name == "oauth_token"}).last?.value else {
                    handler(nil, nil, Error.unknown)
                    return
                }
                
                guard let tokenSecret = queryItems.filter({$0.name == "oauth_token_secret"}).last?.value else {
                    handler(nil, nil, Error.unknown)
                    return
                }
                
                handler(token, tokenSecret, nil)
            })
            task.resume()
        }

            urlRequest.httpMethod = httpMethod
            
            var oauthItems = ["oauth_callback": callback]
            
            // TODO: xAuth
            
            let authorizationHeader = try self.authorizationHeader(oauthItems: oauthItems, HTTPMethod: httpMethod, url: url, consumerKey: session.consumerKey, consumerSecret: session.consumerSecret)
            
