/// <summary>
        /// Prepares the request. It is not nessisary to call this method unless additional configuration is required.
        /// </summary>
        /// <returns>A <see cref="HttpClient"/> object fully configured and ready for execution.</returns>
        public async Task<HttpRequestMessage> PrepareRequest()
        {
            SetupOAuth();

			formData = null;
			string contentType = string.Empty;

            if (!Multipart)
			{	//We don't add the parameters to the query if we are multipart-ing
				AddQueryStringParametersToUri();
			}
			else
			{
				string dataBoundary = "--------------------r4nd0m";
				contentType = "multipart/form-data; boundary=" + dataBoundary;

				formData = GetMultipartFormData(Parameters, dataBoundary);

				this.Verb = HttpMethod.Post;
			}

            if (Multipart)
            {	
                //Parameters are not added to the query string, post them in the request body instead
                MultipartFormDataContent content = new MultipartFormDataContent();

                content.Headers.ContentType = new MediaTypeHeaderValue(contentType);

                using (Stream requestStream = new MemoryStream())
                {
                    if (formData != null)
                    {
                        requestStream.Write(formData, 0, formData.Length);
                    }
                    await content.CopyToAsync(requestStream);
                }
            }

            request = new HttpRequestMessage(this.Verb, this.RequestUri);
            
            request.Headers.ExpectContinue = false;

            if (!this.UseOAuth && this.networkCredentials != null)
            {
                request.Headers.ProxyAuthorization = new System.Net.Http.Headers.AuthenticationHeaderValue("basic", String.Format(networkCredentials.UserName, ":", networkCredentials.Password));
            }

            request.Headers.Add("User-Agent", (string.IsNullOrEmpty(userAgent)) ? string.Format(CultureInfo.InvariantCulture, "Twitterizer/{0}", Information.AssemblyVersion()) : userAgent);
            
            if (this.UseOAuth)
            {
                request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("OAuth", GenerateAuthorizationHeader());
            }

            return request;
        }