diff --git a/http/http_client.hpp b/http/http_client.hpp
index 571b5a9..ae077ef 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -93,11 +93,11 @@
     std::function<void(bool, uint32_t, Response&)> callback;
     RetryPolicyData retryPolicy;
     PendingRequest(
-        boost::beast::http::request<boost::beast::http::string_body>&& req,
-        const std::function<void(bool, uint32_t, Response&)>& callback,
-        const RetryPolicyData& retryPolicy) :
-        req(std::move(req)),
-        callback(callback), retryPolicy(retryPolicy)
+        boost::beast::http::request<boost::beast::http::string_body>&& reqIn,
+        const std::function<void(bool, uint32_t, Response&)>& callbackIn,
+        const RetryPolicyData& retryPolicyIn) :
+        req(std::move(reqIn)),
+        callback(callbackIn), retryPolicy(retryPolicyIn)
     {}
 };
 
@@ -394,11 +394,12 @@
     }
 
   public:
-    explicit ConnectionInfo(boost::asio::io_context& ioc, const std::string& id,
-                            const std::string& destIP, const uint16_t destPort,
-                            const unsigned int connId) :
-        subId(id),
-        host(destIP), port(destPort), connId(connId), conn(ioc), timer(ioc)
+    explicit ConnectionInfo(boost::asio::io_context& ioc,
+                            const std::string& idIn, const std::string& destIP,
+                            const uint16_t destPort,
+                            const unsigned int connIdIn) :
+        subId(idIn),
+        host(destIP), port(destPort), connId(connIdIn), conn(ioc), timer(ioc)
     {}
 };
 
@@ -598,11 +599,12 @@
     }
 
   public:
-    explicit ConnectionPool(boost::asio::io_context& ioc, const std::string& id,
-                            const std::string& destIP,
-                            const uint16_t destPort) :
-        ioc(ioc),
-        id(id), destIP(destIP), destPort(destPort)
+    explicit ConnectionPool(boost::asio::io_context& iocIn,
+                            const std::string& idIn,
+                            const std::string& destIPIn,
+                            const uint16_t destPortIn) :
+        ioc(iocIn),
+        id(idIn), destIP(destIPIn), destPort(destPortIn)
     {
         std::string clientKey = destIP + ":" + std::to_string(destPort);
         BMCWEB_LOG_DEBUG << "Initializing connection pool for " << destIP << ":"
