diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index d3c2284..1a5911b 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -39,8 +39,7 @@
 
 SoftPowerOff::SoftPowerOff(sdbusplus::bus_t& bus, sd_event* event,
                            pldm::InstanceIdDb& instanceIdDb) :
-    bus(bus),
-    timer(event), instanceIdDb(instanceIdDb)
+    bus(bus), timer(event), instanceIdDb(instanceIdDb)
 {
     auto jsonData = parseConfig();
 
@@ -154,8 +153,8 @@
 
 Json SoftPowerOff::parseConfig()
 {
-    fs::path softoffConfigJson(fs::path(SOFTOFF_CONFIG_JSON) /
-                               "softoff_config.json");
+    fs::path softoffConfigJson(
+        fs::path(SOFTOFF_CONFIG_JSON) / "softoff_config.json");
 
     if (!fs::exists(softoffConfigJson) || fs::is_empty(softoffConfigJson))
     {
@@ -256,8 +255,8 @@
                 sensorOffset = offset;
                 break;
             }
-            possibleStatesStart += possibleStateSize + sizeof(setId) +
-                                   sizeof(possibleStateSize);
+            possibleStatesStart +=
+                possibleStateSize + sizeof(setId) + sizeof(possibleStateSize);
         }
     }
     catch (const sdbusplus::exception_t& e)
@@ -281,9 +280,9 @@
     // TODO: fix mapping to work around OpenBMC ecosystem deficiencies
     pldm_tid_t pldmTID = static_cast<pldm_tid_t>(mctpEID);
 
-    std::array<uint8_t, sizeof(pldm_msg_hdr) + sizeof(effecterID) +
-                            sizeof(effecterCount) +
-                            sizeof(set_effecter_state_field)>
+    std::array<uint8_t,
+               sizeof(pldm_msg_hdr) + sizeof(effecterID) +
+                   sizeof(effecterCount) + sizeof(set_effecter_state_field)>
         requestMsg{};
     auto request = reinterpret_cast<pldm_msg*>(requestMsg.data());
     set_effecter_state_field stateField{
@@ -316,8 +315,8 @@
                std::chrono::seconds{1}, std::move(timerCallback));
 
     // Add a callback to handle EPOLLIN on fd
-    auto callback = [=, &pldmTransport, this](IO& io, int fd,
-                                              uint32_t revents) mutable {
+    auto callback = [=, &pldmTransport,
+                     this](IO& io, int fd, uint32_t revents) mutable {
         if (fd != pldmTransport.getEventSource())
         {
             return;
@@ -341,8 +340,8 @@
             return;
         }
 
-        std::unique_ptr<void, decltype(std::free)*> responseMsgPtr{responseMsg,
-                                                                   std::free};
+        std::unique_ptr<void, decltype(std::free)*> responseMsgPtr{
+            responseMsg, std::free};
 
         // We've got the response meant for the PLDM request msg that was
         // sent out
