diff --git a/command_table.cpp b/command_table.cpp
index 5744978..67b5bd6 100644
--- a/command_table.cpp
+++ b/command_table.cpp
@@ -1,15 +1,15 @@
 #include "command_table.hpp"
 
-#include <iomanip>
-#include <iostream>
-
 #include "message_handler.hpp"
 #include "message_parsers.hpp"
 #include "sessions_manager.hpp"
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog-errors.hpp>
 #include "xyz/openbmc_project/Common/error.hpp"
 
+#include <iomanip>
+#include <iostream>
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
+
 using namespace phosphor::logging;
 
 namespace command
@@ -21,8 +21,10 @@
 
     if (command)
     {
-        log<level::DEBUG>("Already Registered", phosphor::logging::entry(
-            "SKIPPED_ENTRY=0x%x", uint32_t(inCommand.command)));
+        log<level::DEBUG>(
+            "Already Registered",
+            phosphor::logging::entry("SKIPPED_ENTRY=0x%x",
+                                     uint32_t(inCommand.command)));
         return;
     }
 
@@ -52,23 +54,24 @@
 
         auto end = std::chrono::steady_clock::now();
 
-        auto elapsedSeconds = std::chrono::duration_cast<std::chrono::seconds>
-                              (end - start);
+        auto elapsedSeconds =
+            std::chrono::duration_cast<std::chrono::seconds>(end - start);
 
         // If command time execution time exceeds 2 seconds, log a time
         // exceeded message
         if (elapsedSeconds > 2s)
         {
             std::cerr << "E> IPMI command timed out:Elapsed time = "
-                      << elapsedSeconds.count() << "s" << "\n";
+                      << elapsedSeconds.count() << "s"
+                      << "\n";
         }
     }
     return response;
 }
 
-std::vector<uint8_t> NetIpmidEntry::executeCommand(
-        std::vector<uint8_t>& commandData,
-        const message::Handler& handler)
+std::vector<uint8_t>
+    NetIpmidEntry::executeCommand(std::vector<uint8_t>& commandData,
+                                  const message::Handler& handler)
 {
     std::vector<uint8_t> errResponse;
 
@@ -85,9 +88,9 @@
     return functor(commandData, handler);
 }
 
-std::vector<uint8_t> ProviderIpmidEntry::executeCommand(
-        std::vector<uint8_t>& commandData,
-        const message::Handler& handler)
+std::vector<uint8_t>
+    ProviderIpmidEntry::executeCommand(std::vector<uint8_t>& commandData,
+                                       const message::Handler& handler)
 {
     std::vector<uint8_t> response(message::parser::MAX_PAYLOAD_SIZE - 1);
     size_t respSize = commandData.size();
