/// <summary>
        /// Returns an instance of HttpClient
        /// </summary>
        /// <param name="baseAddress">the key that will be used to create a new instance of HttpClient</param>
        /// <returns></returns>
        public HttpClient Create(string baseAddress)
        {
            var client = _httpClients.GetOrAdd(new Uri(baseAddress),
                                               b => new HttpClient {
                BaseAddress = b
            });

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var trackingIdHeaderFieldName = _trackingService.GetTrackingIdHeaderFieldName();

            client.DefaultRequestHeaders.Remove(trackingIdHeaderFieldName);
            var trakingId = _trackingService.GetTrackingIdForContext();

            client.DefaultRequestHeaders.Add(trackingIdHeaderFieldName, trakingId);

            // Add OriginUser to header
            var originSQLUserHeaderFieldName = _originSQLUserService.GetOriginSQLUserHeaderFieldName();

            client.DefaultRequestHeaders.Remove(originSQLUserHeaderFieldName);
            var originSQLUser = _originSQLUserService.GetOriginSQLUserForContext();

            client.DefaultRequestHeaders.Add(originSQLUserHeaderFieldName, originSQLUser);

            // Add OriginUser to header
            var originSQLPasswordHeaderFieldName = _originSQLPasswordService.GetOriginSQLPasswordHeaderFieldName();

            client.DefaultRequestHeaders.Remove(originSQLPasswordHeaderFieldName);
            var originSQLPassword = _originSQLPasswordService.GetOriginSQLPasswordForContext();

            client.DefaultRequestHeaders.Add(originSQLPasswordHeaderFieldName, originSQLPassword);

            AddTracking(client);

            return(client);
        }