diff --git a/bmc_state_manager.hpp b/bmc_state_manager.hpp
index 026cb3f..29e318f 100644
--- a/bmc_state_manager.hpp
+++ b/bmc_state_manager.hpp
@@ -6,8 +6,6 @@
 
 #include <sdbusplus/bus.hpp>
 
-#include <functional>
-
 namespace phosphor
 {
 namespace state
@@ -40,8 +38,7 @@
             sdbusRule::type::signal() + sdbusRule::member("JobRemoved") +
                 sdbusRule::path("/org/freedesktop/systemd1") +
                 sdbusRule::interface("org.freedesktop.systemd1.Manager"),
-            std::bind(std::mem_fn(&BMC::bmcStateChange), this,
-                      std::placeholders::_1)))
+            [this](sdbusplus::message_t& m) { bmcStateChange(m); }))
     {
         subscribeToSystemdSignals();
         discoverInitialState();
diff --git a/chassis_state_manager.hpp b/chassis_state_manager.hpp
index d12ad36..7e9c7b9 100644
--- a/chassis_state_manager.hpp
+++ b/chassis_state_manager.hpp
@@ -13,7 +13,6 @@
 
 #include <chrono>
 #include <filesystem>
-#include <functional>
 
 namespace phosphor
 {
@@ -54,11 +53,11 @@
             sdbusRule::type::signal() + sdbusRule::member("JobRemoved") +
                 sdbusRule::path("/org/freedesktop/systemd1") +
                 sdbusRule::interface("org.freedesktop.systemd1.Manager"),
-            std::bind(std::mem_fn(&Chassis::sysStateChange), this,
-                      std::placeholders::_1)),
-        id(id), pohTimer(sdeventplus::Event::get_default(),
-                         std::bind(&Chassis::pohCallback, this),
-                         std::chrono::hours{1}, std::chrono::minutes{1})
+            [this](sdbusplus::message_t& m) { sysStateChange(m); }),
+        id(id),
+        pohTimer(
+            sdeventplus::Event::get_default(), [this](auto&) { pohCallback(); },
+            std::chrono::hours{1}, std::chrono::minutes{1})
     {
         subscribeToSystemdSignals();
 
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index cd1389c..8e60130 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -14,7 +14,6 @@
 #include <xyz/openbmc_project/State/OperatingSystem/Status/server.hpp>
 
 #include <filesystem>
-#include <functional>
 #include <string>
 
 namespace phosphor
@@ -60,15 +59,13 @@
             sdbusRule::type::signal() + sdbusRule::member("JobRemoved") +
                 sdbusRule::path("/org/freedesktop/systemd1") +
                 sdbusRule::interface("org.freedesktop.systemd1.Manager"),
-            std::bind(std::mem_fn(&Host::sysStateChangeJobRemoved), this,
-                      std::placeholders::_1)),
+            [this](sdbusplus::message_t& m) { sysStateChangeJobRemoved(m); }),
         systemdSignalJobNew(
             bus,
             sdbusRule::type::signal() + sdbusRule::member("JobNew") +
                 sdbusRule::path("/org/freedesktop/systemd1") +
                 sdbusRule::interface("org.freedesktop.systemd1.Manager"),
-            std::bind(std::mem_fn(&Host::sysStateChangeJobNew), this,
-                      std::placeholders::_1)),
+            [this](sdbusplus::message_t& m) { sysStateChangeJobNew(m); }),
         settings(bus, id), id(id)
     {
         // Enable systemd signals
diff --git a/hypervisor_state_manager.hpp b/hypervisor_state_manager.hpp
index 7b005f6..8fffbe0 100644
--- a/hypervisor_state_manager.hpp
+++ b/hypervisor_state_manager.hpp
@@ -49,8 +49,7 @@
             sdbusRule::propertiesChanged(
                 "/xyz/openbmc_project/state/host0",
                 "xyz.openbmc_project.State.Boot.Progress"),
-            std::bind(std::mem_fn(&Hypervisor::bootProgressChangeEvent), this,
-                      std::placeholders::_1))
+            [this](sdbusplus::message_t& m) { bootProgressChangeEvent(m); })
     {}
 
     /** @brief Set value of HostTransition */
diff --git a/scheduled_host_transition.hpp b/scheduled_host_transition.hpp
index 352fc8c..19736e6 100644
--- a/scheduled_host_transition.hpp
+++ b/scheduled_host_transition.hpp
@@ -34,7 +34,7 @@
         ScheduledHostTransitionInherit(
             bus, objPath, ScheduledHostTransition::action::defer_emit),
         bus(bus), id(id), event(event),
-        timer(event, std::bind(&ScheduledHostTransition::callback, this))
+        timer(event, [this](auto&) { callback(); })
     {
         initialize();
 
diff --git a/systemd_target_signal.hpp b/systemd_target_signal.hpp
index e6bbcbe..cddb358 100644
--- a/systemd_target_signal.hpp
+++ b/systemd_target_signal.hpp
@@ -41,13 +41,10 @@
                     "/org/freedesktop/systemd1") +
                 sdbusplus::bus::match::rules::interface(
                     "org.freedesktop.systemd1.Manager"),
-            std::bind(std::mem_fn(&SystemdTargetLogging::systemdUnitChange),
-                      this, std::placeholders::_1)),
+            [this](sdbusplus::message_t& m) { systemdUnitChange(m); }),
         systemdNameOwnedChangedSignal(
             bus, sdbusplus::bus::match::rules::nameOwnerChanged(),
-            std::bind(
-                std::mem_fn(&SystemdTargetLogging::processNameChangeSignal),
-                this, std::placeholders::_1))
+            [this](sdbusplus::message_t& m) { processNameChangeSignal(m); })
     {}
 
     /**
