diff --git a/phosphor-power-sequencer/src/services.hpp b/phosphor-power-sequencer/src/services.hpp
index d573743..2f38008 100644
--- a/phosphor-power-sequencer/src/services.hpp
+++ b/phosphor-power-sequencer/src/services.hpp
@@ -84,9 +84,9 @@
      * @param severity Severity property of the error log entry
      * @param additionalData AdditionalData property of the error log entry
      */
-    virtual void
-        logError(const std::string& message, Entry::Level severity,
-                 std::map<std::string, std::string>& additionalData) = 0;
+    virtual void logError(
+        const std::string& message, Entry::Level severity,
+        std::map<std::string, std::string>& additionalData) = 0;
 
     /**
      * Returns whether the hardware with the specified inventory path is
@@ -183,16 +183,16 @@
     }
 
     /** @copydoc Services::logError() */
-    virtual void
-        logError(const std::string& message, Entry::Level severity,
-                 std::map<std::string, std::string>& additionalData) override;
+    virtual void logError(
+        const std::string& message, Entry::Level severity,
+        std::map<std::string, std::string>& additionalData) override;
 
     /** @copydoc Services::isPresent() */
     virtual bool isPresent(const std::string& inventoryPath) override;
 
     /** @copydoc Services::getGPIOValues() */
-    virtual std::vector<int>
-        getGPIOValues(const std::string& chipLabel) override;
+    virtual std::vector<int> getGPIOValues(
+        const std::string& chipLabel) override;
 
     /** @copydoc Services::createPMBus() */
     virtual std::unique_ptr<PMBusBase> createPMBus(
