diff --git a/command/channel_auth.cpp b/command/channel_auth.cpp
index 44d5cad..ba101e4 100644
--- a/command/channel_auth.cpp
+++ b/command/channel_auth.cpp
@@ -23,9 +23,9 @@
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 using Json = nlohmann::json;
 
-std::vector<uint8_t>
-    GetChannelCapabilities(const std::vector<uint8_t>& inPayload,
-                           std::shared_ptr<message::Handler>& /* handler */)
+std::vector<uint8_t> GetChannelCapabilities(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& /* handler */)
 {
     auto request =
         reinterpret_cast<const GetChannelCapabilitiesReq*>(inPayload.data());
@@ -184,9 +184,9 @@
  *  @returns ipmi completion code plus response data
  *   - vector of response data: cc, channel, record data
  **/
-std::vector<uint8_t>
-    getChannelCipherSuites(const std::vector<uint8_t>& inPayload,
-                           std::shared_ptr<message::Handler>& /* handler */)
+std::vector<uint8_t> getChannelCipherSuites(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& /* handler */)
 {
     const auto errorResponse = [](uint8_t cc) {
         std::vector<uint8_t> rsp(1);
diff --git a/command/channel_auth.hpp b/command/channel_auth.hpp
index 7dc4677..059d0c7 100644
--- a/command/channel_auth.hpp
+++ b/command/channel_auth.hpp
@@ -118,9 +118,9 @@
  *
  * @return Response data for the command
  */
-std::vector<uint8_t>
-    GetChannelCapabilities(const std::vector<uint8_t>& inPayload,
-                           std::shared_ptr<message::Handler>& handler);
+std::vector<uint8_t> GetChannelCapabilities(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler);
 
 /**
  * @brief Get Channel Cipher Suites
@@ -136,8 +136,8 @@
  *
  * @return Response data for the command
  */
-std::vector<uint8_t>
-    getChannelCipherSuites(const std::vector<uint8_t>& inPayload,
-                           std::shared_ptr<message::Handler>& handler);
+std::vector<uint8_t> getChannelCipherSuites(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler);
 
 } // namespace command
diff --git a/command/open_session.cpp b/command/open_session.cpp
index 21e0f3f..9d5fc49 100644
--- a/command/open_session.cpp
+++ b/command/open_session.cpp
@@ -9,9 +9,9 @@
 namespace command
 {
 
-std::vector<uint8_t>
-    openSession(const std::vector<uint8_t>& inPayload,
-                std::shared_ptr<message::Handler>& /* handler */)
+std::vector<uint8_t> openSession(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& /* handler */)
 {
     auto request =
         reinterpret_cast<const OpenSessionRequest*>(inPayload.data());
diff --git a/command/payload_cmds.cpp b/command/payload_cmds.cpp
index e2b154e..ea517e8 100644
--- a/command/payload_cmds.cpp
+++ b/command/payload_cmds.cpp
@@ -114,9 +114,9 @@
     return outPayload;
 }
 
-std::vector<uint8_t>
-    deactivatePayload(const std::vector<uint8_t>& inPayload,
-                      std::shared_ptr<message::Handler>& handler)
+std::vector<uint8_t> deactivatePayload(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler)
 {
     auto request =
         reinterpret_cast<const DeactivatePayloadRequest*>(inPayload.data());
@@ -201,9 +201,9 @@
     return outPayload;
 }
 
-std::vector<uint8_t>
-    getPayloadStatus(const std::vector<uint8_t>& inPayload,
-                     std::shared_ptr<message::Handler>& /* handler */)
+std::vector<uint8_t> getPayloadStatus(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& /* handler */)
 {
     auto request =
         reinterpret_cast<const GetPayloadStatusRequest*>(inPayload.data());
@@ -235,9 +235,9 @@
     return outPayload;
 }
 
-std::vector<uint8_t>
-    getPayloadInfo(const std::vector<uint8_t>& inPayload,
-                   std::shared_ptr<message::Handler>& /* handler */)
+std::vector<uint8_t> getPayloadInfo(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& /* handler */)
 {
     auto request =
         reinterpret_cast<const GetPayloadInfoRequest*>(inPayload.data());
diff --git a/command/payload_cmds.hpp b/command/payload_cmds.hpp
index 470d693..37e071f 100644
--- a/command/payload_cmds.hpp
+++ b/command/payload_cmds.hpp
@@ -109,9 +109,9 @@
  *
  *  @return Response data for the command
  */
-std::vector<uint8_t>
-    activatePayload(const std::vector<uint8_t>& inPayload,
-                    std::shared_ptr<message::Handler>& handler);
+std::vector<uint8_t> activatePayload(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler);
 
 constexpr uint8_t IPMI_CC_PAYLOAD_DEACTIVATED = 0x80;
 
@@ -173,9 +173,9 @@
  *
  * @return Response data for the command.
  */
-std::vector<uint8_t>
-    deactivatePayload(const std::vector<uint8_t>& inPayload,
-                      std::shared_ptr<message::Handler>& handler);
+std::vector<uint8_t> deactivatePayload(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler);
 
 /** @struct GetPayloadStatusRequest
  *
@@ -252,9 +252,9 @@
  *
  *  @return Response data for the command
  */
-std::vector<uint8_t>
-    getPayloadStatus(const std::vector<uint8_t>& inPayload,
-                     std::shared_ptr<message::Handler>& handler);
+std::vector<uint8_t> getPayloadStatus(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler);
 
 /** @struct GetPayloadInfoRequest
  *
diff --git a/command/session_cmds.cpp b/command/session_cmds.cpp
index 1a7c266..5ee7f8f 100644
--- a/command/session_cmds.cpp
+++ b/command/session_cmds.cpp
@@ -16,9 +16,9 @@
 namespace command
 {
 
-std::vector<uint8_t>
-    setSessionPrivilegeLevel(const std::vector<uint8_t>& inPayload,
-                             std::shared_ptr<message::Handler>& handler)
+std::vector<uint8_t> setSessionPrivilegeLevel(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler)
 {
     auto request =
         reinterpret_cast<const SetSessionPrivLevelReq*>(inPayload.data());
diff --git a/command/session_cmds.hpp b/command/session_cmds.hpp
index b3d0ca6..b94143e 100644
--- a/command/session_cmds.hpp
+++ b/command/session_cmds.hpp
@@ -74,9 +74,9 @@
  *
  * @return Response data for the command
  */
-std::vector<uint8_t>
-    setSessionPrivilegeLevel(const std::vector<uint8_t>& inPayload,
-                             std::shared_ptr<message::Handler>& handler);
+std::vector<uint8_t> setSessionPrivilegeLevel(
+    const std::vector<uint8_t>& inPayload,
+    std::shared_ptr<message::Handler>& handler);
 /**
  * @struct CloseSessionRequest
  *
