     /// - parameter username: The resource owner's username.
     /// - parameter password: The resource owner's password.
     /// - parameter completion: A callback to invoke when the request completed.
-    public func requestAccessToken(username: String, password: String, completion: @escaping (Result<Void, NSError>) -> ()) {
+    open func requestAccessToken(username: String, password: String, completion: @escaping (Result<Void, NSError>) -> ()) {
         requestAccessToken(grant: .resourceOwnerPasswordCredentials(username, password)) { result in
             completion(result.map { _ in return })
         }

    ///
    /// - parameter request: An unauthenticated URLRequest.
    /// - parameter completion: A callback to invoke with the authenticated request.
    public func authenticateRequest(_ request: URLRequest, completion: @escaping (Result<URLRequest, NSError>) -> ()) {
        requestQueue.async {
            self.blockRequestQueue()
            self.authenticateRequestConcurrently(request, completion: completion)

    ///
    /// After calling this method the user needs to reauthenticate using 
    /// `requestAccessToken`.
    open func clearAccessToken() {
        accessTokenStore.storeAccessToken(nil)
    }

