private void PerformRequest(string consumerKey, string consumerSecret, string oAuthToken, string oAuthTokenSecret, string baseURL, Dictionary<string, string> queryParams = null)
        {
            var query = System.Web.HttpUtility.ParseQueryString(String.Empty);

            if (queryParams == null)
            {
                queryParams = new Dictionary<string, string>();
            }

            foreach (var queryParam in queryParams)
            {
                query[queryParam.Key] = queryParam.Value;
            }

            var uriBuilder = new UriBuilder(baseURL);
            uriBuilder.Query = query.ToString();

            m_request = WebRequest.Create(uriBuilder.ToString());
            m_request.Method = "GET";

            m_request.SignRequest(
                new Tokens
                {
                    ConsumerKey = consumerKey,
                    ConsumerSecret = consumerSecret,
                    AccessToken = oAuthToken,
                    AccessTokenSecret = oAuthTokenSecret
                }
            ).WithEncryption(EncryptionMethod.HMACSHA1).InHeader();

            DoWithResponse(m_request as HttpWebRequest, (response) => {

                string body = string.Empty;

                if (response != null)
                {
                    body = new StreamReader(response.GetResponseStream()).ReadToEnd();
                }

                m_dispatcher.BeginInvoke(webRequestCallback, body, nativePointer);
                CurrentRequest = null;
            });
        }