diff --git a/power-sequencer/pgood_monitor.hpp b/power-sequencer/pgood_monitor.hpp
index ec8e05e..7dbabf9 100644
--- a/power-sequencer/pgood_monitor.hpp
+++ b/power-sequencer/pgood_monitor.hpp
@@ -1,10 +1,11 @@
 #pragma once
 
+#include "device.hpp"
+#include "device_monitor.hpp"
+
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server.hpp>
 #include <sdeventplus/event.hpp>
-#include "device.hpp"
-#include "device_monitor.hpp"
 
 namespace witherspoon
 {
@@ -25,88 +26,85 @@
  */
 class PGOODMonitor : public DeviceMonitor
 {
-    public:
+  public:
+    PGOODMonitor() = delete;
+    ~PGOODMonitor() = default;
+    PGOODMonitor(const PGOODMonitor&) = delete;
+    PGOODMonitor& operator=(const PGOODMonitor&) = delete;
+    PGOODMonitor(PGOODMonitor&&) = delete;
+    PGOODMonitor& operator=(PGOODMonitor&&) = delete;
 
-        PGOODMonitor() = delete;
-        ~PGOODMonitor() = default;
-        PGOODMonitor(const PGOODMonitor&) = delete;
-        PGOODMonitor& operator=(const PGOODMonitor&) = delete;
-        PGOODMonitor(PGOODMonitor&&) = delete;
-        PGOODMonitor& operator=(PGOODMonitor&&) = delete;
+    /**
+     * Constructor
+     *
+     * @param[in] d - the device to monitor
+     * @param[in] b - D-Bus bus object
+     * @param[in] e - event object
+     * @param[in] t - time to allow PGOOD to come up
+     */
+    PGOODMonitor(std::unique_ptr<witherspoon::power::Device>&& d,
+                 sdbusplus::bus::bus& b, const sdeventplus::Event& e,
+                 std::chrono::milliseconds& t) :
+        DeviceMonitor(std::move(d), e, t),
+        bus(b)
+    {
+    }
 
-        /**
-         * Constructor
-         *
-         * @param[in] d - the device to monitor
-         * @param[in] b - D-Bus bus object
-         * @param[in] e - event object
-         * @param[in] t - time to allow PGOOD to come up
-         */
-        PGOODMonitor(std::unique_ptr<witherspoon::power::Device>&& d,
-                sdbusplus::bus::bus& b,
-                const sdeventplus::Event& e,
-                std::chrono::milliseconds& t) :
-            DeviceMonitor(std::move(d), e, t),
-            bus(b)
-        {
-        }
+    /**
+     * Analyzes the power sequencer for fails and then
+     * notifies the event loop that it can exit.
+     *
+     * The timer callback.
+     */
+    void analyze() override;
 
-        /**
-         * Analyzes the power sequencer for fails and then
-         * notifies the event loop that it can exit.
-         *
-         * The timer callback.
-         */
-        void analyze() override;
+    /**
+     * Waits a specified amount of time for PGOOD to
+     * come on, and if it fails to come on in that time
+     * it will analyze the power sequencer for faults.
+     *
+     * It will exit after either PGOOD is asserted or
+     * the device is analyzed for faults.
+     *
+     * @return - the return value from sd_event_loop()
+     */
+    int run() override;
 
-        /**
-         * Waits a specified amount of time for PGOOD to
-         * come on, and if it fails to come on in that time
-         * it will analyze the power sequencer for faults.
-         *
-         * It will exit after either PGOOD is asserted or
-         * the device is analyzed for faults.
-         *
-         * @return - the return value from sd_event_loop()
-         */
-        int run() override;
+  private:
+    /**
+     * Enables the properties changed signal callback
+     * on the power object so we can tell when PGOOD
+     * comes on.
+     */
+    void startListening();
 
-    private:
+    /**
+     * The callback function for the properties changed
+     * signal.
+     */
+    void propertyChanged();
 
-        /**
-         * Enables the properties changed signal callback
-         * on the power object so we can tell when PGOOD
-         * comes on.
-         */
-        void startListening();
+    /**
+     * Returns true if the system has been turned on
+     * but PGOOD isn't up yet.
+     */
+    bool pgoodPending();
 
-        /**
-         * The callback function for the properties changed
-         * signal.
-         */
-        void propertyChanged();
+    /**
+     * Used to break out of the event loop in run()
+     */
+    void exitEventLoop();
 
-        /**
-         * Returns true if the system has been turned on
-         * but PGOOD isn't up yet.
-         */
-        bool pgoodPending();
+    /**
+     * The D-Bus object
+     */
+    sdbusplus::bus::bus& bus;
 
-        /**
-         * Used to break out of the event loop in run()
-         */
-        void exitEventLoop();
-
-        /**
-         * The D-Bus object
-         */
-        sdbusplus::bus::bus& bus;
-
-        /**
-         * The match object for the properties changed signal
-         */
-        std::unique_ptr<sdbusplus::bus::match_t> match;
+    /**
+     * The match object for the properties changed signal
+     */
+    std::unique_ptr<sdbusplus::bus::match_t> match;
 };
 
-}
-}
+} // namespace power
+} // namespace witherspoon
