diff --git a/host-interface.hpp b/host-interface.hpp
index 5b2ac68..5c95a66 100644
--- a/host-interface.hpp
+++ b/host-interface.hpp
@@ -1,8 +1,8 @@
 #pragma once
 
+#include <host-cmd-manager.hpp>
 #include <sdbusplus/bus.hpp>
 #include <xyz/openbmc_project/Control/Host/server.hpp>
-#include <host-cmd-manager.hpp>
 namespace phosphor
 {
 namespace host
@@ -16,46 +16,45 @@
  *  DBus API.
  */
 class Host : public sdbusplus::server::object::object<
-                sdbusplus::xyz::openbmc_project::Control::server::Host>
+                 sdbusplus::xyz::openbmc_project::Control::server::Host>
 {
-    public:
-        /** @brief Constructs Host Control Interface
-         *
-         *  @param[in] bus     - The Dbus bus object
-         *  @param[in] objPath - The Dbus object path
-         */
-        Host(sdbusplus::bus::bus& bus,
-             const char* objPath) :
-             sdbusplus::server::object::object<
-                sdbusplus::xyz::openbmc_project::Control::server::Host>(
-                        bus, objPath),
-             bus(bus)
-        {
-            // Nothing to do
-        }
+  public:
+    /** @brief Constructs Host Control Interface
+     *
+     *  @param[in] bus     - The Dbus bus object
+     *  @param[in] objPath - The Dbus object path
+     */
+    Host(sdbusplus::bus::bus& bus, const char* objPath) :
+        sdbusplus::server::object::object<
+            sdbusplus::xyz::openbmc_project::Control::server::Host>(bus,
+                                                                    objPath),
+        bus(bus)
+    {
+        // Nothing to do
+    }
 
-        /** @brief Send input command to host
-         *         Note that the command will be queued in a FIFO if
-         *         other commands to the host have yet to be run
-         *
-         *  @param[in] command - Input command to execute
-         */
-        void execute(Command command) override;
+    /** @brief Send input command to host
+     *         Note that the command will be queued in a FIFO if
+     *         other commands to the host have yet to be run
+     *
+     *  @param[in] command - Input command to execute
+     */
+    void execute(Command command) override;
 
-    private:
-        /** @brief sdbusplus DBus bus connection. */
-        sdbusplus::bus::bus& bus;
+  private:
+    /** @brief sdbusplus DBus bus connection. */
+    sdbusplus::bus::bus& bus;
 
-        /** @brief  Callback function to be invoked by command manager
-         *
-         *  @detail Conveys the status of the last Host bound command.
-         *          Depending on the status,  a CommandComplete or
-         *          CommandFailure signal would be sent
-         *
-         *  @param[in] cmd    - IPMI command and data sent to Host
-         *  @param[in] status - Success or Failure
-         */
-        void commandStatusHandler(IpmiCmdData cmd, bool status);
+    /** @brief  Callback function to be invoked by command manager
+     *
+     *  @detail Conveys the status of the last Host bound command.
+     *          Depending on the status,  a CommandComplete or
+     *          CommandFailure signal would be sent
+     *
+     *  @param[in] cmd    - IPMI command and data sent to Host
+     *  @param[in] status - Success or Failure
+     */
+    void commandStatusHandler(IpmiCmdData cmd, bool status);
 };
 
 } // namespace command
