diff --git a/src/button_handler.cpp b/src/button_handler.cpp
index 3751df5..72d2f65 100644
--- a/src/button_handler.cpp
+++ b/src/button_handler.cpp
@@ -32,7 +32,7 @@
 constexpr auto mapperService = "xyz.openbmc_project.ObjectMapper";
 constexpr auto BMC_POSITION = 0;
 
-Handler::Handler(sdbusplus::bus::bus& bus) : bus(bus)
+Handler::Handler(sdbusplus::bus_t& bus) : bus(bus)
 {
     try
     {
@@ -56,7 +56,7 @@
                           std::placeholders::_1));
         }
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         // The button wasn't implemented
     }
@@ -75,7 +75,7 @@
                           std::placeholders::_1));
         }
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         // The button wasn't implemented
     }
@@ -94,7 +94,7 @@
                           std::placeholders::_1));
         }
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         // The button wasn't implemented
     }
@@ -140,7 +140,7 @@
         auto position = std::get<size_t>(HSPositionVariant);
         return position;
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         lg2::error("Error reading Host selector Position: {ERROR}", "ERROR", e);
         throw;
@@ -271,45 +271,45 @@
     method.append(dbusIfaceName, transitionName, transition);
     bus.call(method);
 }
-void Handler::powerReleased(sdbusplus::message::message& /* msg */)
+void Handler::powerReleased(sdbusplus::message_t& /* msg */)
 {
     try
     {
         handlePowerEvent(PowerEvent::powerReleased);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         lg2::error("Failed power state change on a power button press: {ERROR}",
                    "ERROR", e);
     }
 }
-void Handler::longPowerPressed(sdbusplus::message::message& /* msg */)
+void Handler::longPowerPressed(sdbusplus::message_t& /* msg */)
 {
     try
     {
         handlePowerEvent(PowerEvent::longPowerPressed);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         lg2::error("Failed powering off on long power button press: {ERROR}",
                    "ERROR", e);
     }
 }
 
-void Handler::resetReleased(sdbusplus::message::message& /* msg */)
+void Handler::resetReleased(sdbusplus::message_t& /* msg */)
 {
     try
     {
         handlePowerEvent(PowerEvent::resetReleased);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         lg2::error("Failed power state change on a reset button press: {ERROR}",
                    "ERROR", e);
     }
 }
 
-void Handler::idReleased(sdbusplus::message::message& /* msg */)
+void Handler::idReleased(sdbusplus::message_t& /* msg */)
 {
     std::string groupPath{ledGroupBasePath};
     groupPath += ID_LED_GROUP;
@@ -345,7 +345,7 @@
         method.append(ledGroupIface, "Asserted", state);
         result = bus.call(method);
     }
-    catch (const sdbusplus::exception::exception& e)
+    catch (const sdbusplus::exception_t& e)
     {
         lg2::error("Error toggling ID LED group on ID button press: {ERROR}",
                    "ERROR", e);
diff --git a/src/main.cpp b/src/main.cpp
index 5b5341d..90c189d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -43,8 +43,8 @@
     EventPtr eventP{event};
     event = nullptr;
 
-    sdbusplus::bus::bus bus = sdbusplus::bus::new_default();
-    sdbusplus::server::manager::manager objManager{
+    sdbusplus::bus_t bus = sdbusplus::bus::new_default();
+    sdbusplus::server::manager_t objManager{
         bus, "/xyz/openbmc_project/Chassis/Buttons"};
 
     bus.request_name("xyz.openbmc_project.Chassis.Buttons");
