diff --git a/cold-redundancy/cold_redundancy.cpp b/cold-redundancy/cold_redundancy.cpp
index c1ebc44..c912ed2 100644
--- a/cold-redundancy/cold_redundancy.cpp
+++ b/cold-redundancy/cold_redundancy.cpp
@@ -42,32 +42,31 @@
 } // namespace
 
 ColdRedundancy::ColdRedundancy(
-    boost::asio::io_service& io, sdbusplus::asio::object_server& objectServer,
+    boost::asio::io_service& io,
     std::shared_ptr<sdbusplus::asio::connection>& systemBus) :
     filterTimer(io), systemBus(systemBus)
 {
-    post(io,
-         [this, &io, &objectServer, &systemBus]() { createPSU(systemBus); });
+    post(io, [this, &systemBus]() { createPSU(systemBus); });
     std::function<void(sdbusplus::message_t&)> eventHandler =
-        [this, &io, &objectServer, &systemBus](sdbusplus::message_t& message) {
+        [this, &systemBus](sdbusplus::message_t& message) {
             if (message.is_method_error())
             {
                 std::cerr << "callback method error\n";
                 return;
             }
             filterTimer.expires_after(std::chrono::seconds(1));
-            filterTimer.async_wait([this, &io, &objectServer, &systemBus](
-                                       const boost::system::error_code& ec) {
-                if (ec == boost::asio::error::operation_aborted)
-                {
-                    return;
-                }
-                else if (ec)
-                {
-                    std::cerr << "timer error\n";
-                }
-                createPSU(systemBus);
-            });
+            filterTimer.async_wait(
+                [this, &systemBus](const boost::system::error_code& ec) {
+                    if (ec == boost::asio::error::operation_aborted)
+                    {
+                        return;
+                    }
+                    else if (ec)
+                    {
+                        std::cerr << "timer error\n";
+                    }
+                    createPSU(systemBus);
+                });
         };
 
     std::function<void(sdbusplus::message_t&)> eventCollect =
