diff --git a/inc/button_factory.hpp b/inc/button_factory.hpp
index 29fb990..83cf530 100644
--- a/inc/button_factory.hpp
+++ b/inc/button_factory.hpp
@@ -38,18 +38,17 @@
         buttonIfaceRegistry[std::string(T::getFormFactorName())] =
             [](sdbusplus::bus_t& bus, EventPtr& event,
                ButtonConfig& buttonCfg) {
-            return std::make_unique<T>(bus, T::getDbusObjectPath(), event,
-                                       buttonCfg);
-        };
+                return std::make_unique<T>(bus, T::getDbusObjectPath(), event,
+                                           buttonCfg);
+            };
     }
     /**
      * @brief this method returns the button interface object
      *    corresponding to the button formfactor name provided
      */
-    std::unique_ptr<ButtonIface> createInstance(const std::string& name,
-                                                sdbusplus::bus_t& bus,
-                                                EventPtr& event,
-                                                ButtonConfig& buttonCfg)
+    std::unique_ptr<ButtonIface>
+        createInstance(const std::string& name, sdbusplus::bus_t& bus,
+                       EventPtr& event, ButtonConfig& buttonCfg)
     {
         // find matching name in the registry and call factory method.
         auto objectIter = buttonIfaceRegistry.find(name);
diff --git a/inc/button_interface.hpp b/inc/button_interface.hpp
index b3a98cc..0b8cd47 100644
--- a/inc/button_interface.hpp
+++ b/inc/button_interface.hpp
@@ -12,8 +12,7 @@
   public:
     ButtonIface(sdbusplus::bus_t& bus, EventPtr& event, ButtonConfig& buttonCfg,
                 sd_event_io_handler_t handler = ButtonIface::EventHandler) :
-        bus(bus),
-        event(event), config(buttonCfg), callbackHandler(handler)
+        bus(bus), event(event), config(buttonCfg), callbackHandler(handler)
     {
         int ret = -1;
         std::string configType;
diff --git a/inc/power_button_profile.hpp b/inc/power_button_profile.hpp
index bb113a3..abce90a 100644
--- a/inc/power_button_profile.hpp
+++ b/inc/power_button_profile.hpp
@@ -35,13 +35,13 @@
                          sdbusRule::interface(powerButtonInterface),
                      std::bind(&PowerButtonProfile::pressedHandler, this,
                                std::placeholders::_1)),
-        releasedMatch(bus,
-                      sdbusRule::type::signal() +
-                          sdbusRule::member("Released") +
-                          sdbusRule::path(POWER_DBUS_OBJECT_NAME) +
-                          sdbusRule::interface(powerButtonInterface),
-                      std::bind(&PowerButtonProfile::releasedHandler, this,
-                                std::placeholders::_1))
+        releasedMatch(
+            bus,
+            sdbusRule::type::signal() + sdbusRule::member("Released") +
+                sdbusRule::path(POWER_DBUS_OBJECT_NAME) +
+                sdbusRule::interface(powerButtonInterface),
+            std::bind(&PowerButtonProfile::releasedHandler, this,
+                      std::placeholders::_1))
     {}
 
     virtual ~PowerButtonProfile() = default;
