diff --git a/ssifbridged.cpp b/ssifbridged.cpp
index dd1533c..5ac0eed 100644
--- a/ssifbridged.cpp
+++ b/ssifbridged.cpp
@@ -91,9 +91,10 @@
      * not processed properly
      * */
     int numberOfReqNotRsp;
+
+    boost::asio::steady_timer rspTimer;
 };
 
-std::unique_ptr<boost::asio::steady_timer> rspTimer;
 std::unique_ptr<SsifChannel> ssifchannel = nullptr;
 
 SsifChannel::SsifChannel(std::shared_ptr<boost::asio::io_context>& io,
@@ -101,7 +102,8 @@
                          const std::string& device, bool verbose,
                          int numberOfReqNotRsp) :
     io(io),
-    bus(bus), verbose(verbose), numberOfReqNotRsp(numberOfReqNotRsp)
+    bus(bus), verbose(verbose), numberOfReqNotRsp(numberOfReqNotRsp),
+    rspTimer(*io)
 {
     std::string devName = devBase;
     if (!device.empty())
@@ -203,14 +205,6 @@
     }
 }
 
-void initTimer(boost::asio::io_context& io)
-{
-    if (!rspTimer)
-    {
-        rspTimer = std::make_unique<boost::asio::steady_timer>(io);
-    }
-}
-
 void SsifChannel::processMessage(const boost::system::error_code& ecRd,
                                  size_t rlen)
 {
@@ -235,8 +229,8 @@
     /* there is a request coming */
     numberOfReqNotRsp++;
     /* start response timer */
-    rspTimer->expires_after(std::chrono::microseconds(hostReqTimeout));
-    rspTimer->async_wait(rspTimerHandler);
+    rspTimer.expires_after(std::chrono::microseconds(hostReqTimeout));
+    rspTimer.async_wait(rspTimerHandler);
 
     if (verbose)
     {
@@ -363,7 +357,7 @@
                 " cc=" + std::to_string(cc);
             log<level::ERR>(msgToLog.c_str());
         }
-        rspTimer->cancel();
+        rspTimer.cancel();
     },
         ipmiQueueService, ipmiQueuePath, ipmiQueueIntf, ipmiQueueMethod,
         dbusTimeout, netfn, lun, cmd, data, options);
@@ -391,7 +385,6 @@
     {
         return EXIT_FAILURE;
     }
-    initTimer(*io);
     io->run();
 
     return 0;
