         }
     }
 
-    func openURL(url: NSURL) -> Bool {
-        guard let _ = clientId, _ = clientSecret else { return false }
+    static func openURL(url: NSURL) -> Bool {
+        guard let _ = sharedInstance.clientId, _ = sharedInstance.clientSecret else { return false }
         guard let code = NSURLComponents(URL: url, resolvingAgainstBaseURL: false)?.queryItems?.filter({ $0.name == "code" }).first?.value else { return false }
 
         fetchAccessToken(code)


            // Auth
            let authString: String
            if sandbox == true {
                authString = "\(clientId):SANDBOX-\(clientSecret)"
            } else {
                authString = "\(clientId):\(clientSecret)"

    static func request(type: HTTPMethod, path: String, params: [String: AnyObject]?, completionHandler: ((response: [String: AnyObject]?, error: NSError?) -> ())?) {
        guard let accessToken = sharedInstance.accessToken else { return }

        var p = lyftAPIv1URL + path
        if let params = params as? [String: String] where type == .GET {
            p += urlQueryString( params: params)
        }
