diff --git a/presence/anyof.hpp b/presence/anyof.hpp
index 70ddb43..efe3c79 100644
--- a/presence/anyof.hpp
+++ b/presence/anyof.hpp
@@ -1,10 +1,11 @@
 #pragma once
 
-#include <functional>
-#include <vector>
 #include "fan.hpp"
 #include "rpolicy.hpp"
 
+#include <functional>
+#include <vector>
+
 namespace phosphor
 {
 namespace fan
@@ -24,50 +25,45 @@
  */
 class AnyOf : public RedundancyPolicy
 {
-    public:
-        AnyOf() = delete;
-        AnyOf(const AnyOf&) = default;
-        AnyOf& operator=(const AnyOf&) = default;
-        AnyOf(AnyOf&&) = default;
-        AnyOf& operator=(AnyOf&&) = default;
-        ~AnyOf() = default;
+  public:
+    AnyOf() = delete;
+    AnyOf(const AnyOf&) = default;
+    AnyOf& operator=(const AnyOf&) = default;
+    AnyOf(AnyOf&&) = default;
+    AnyOf& operator=(AnyOf&&) = default;
+    ~AnyOf() = default;
 
-        /**
-         * @brief Construct an any of bitwise policy.
-         *
-         * @param[in] fan - The fan associated with the policy.
-         * @param[in] s - The set of sensors associated with the policy.
-         */
-        AnyOf(
-                const Fan& fan,
-                const std::vector<std::reference_wrapper<PresenceSensor>>& s);
+    /**
+     * @brief Construct an any of bitwise policy.
+     *
+     * @param[in] fan - The fan associated with the policy.
+     * @param[in] s - The set of sensors associated with the policy.
+     */
+    AnyOf(const Fan& fan,
+          const std::vector<std::reference_wrapper<PresenceSensor>>& s);
 
-        /**
-         * @brief stateChanged
-         *
-         * Update the inventory and execute the fallback
-         * policy.
-         *
-         * @param[in] present - The new presence state according
-         *             to the specified sensor.
-         * @param[in] sensor - The sensor reporting the new state.
-         */
-        void stateChanged(bool present, PresenceSensor& sensor) override;
+    /**
+     * @brief stateChanged
+     *
+     * Update the inventory and execute the fallback
+     * policy.
+     *
+     * @param[in] present - The new presence state according
+     *             to the specified sensor.
+     * @param[in] sensor - The sensor reporting the new state.
+     */
+    void stateChanged(bool present, PresenceSensor& sensor) override;
 
-        /**
-         * @brief monitor
-         *
-         * Start monitoring the fan.
-         */
-        void monitor() override;
+    /**
+     * @brief monitor
+     *
+     * Start monitoring the fan.
+     */
+    void monitor() override;
 
-    private:
-
-        /** @brief All presence sensors in the redundancy set. */
-        std::vector<
-            std::tuple<
-                std::reference_wrapper<PresenceSensor>,
-                bool>> state;
+  private:
+    /** @brief All presence sensors in the redundancy set. */
+    std::vector<std::tuple<std::reference_wrapper<PresenceSensor>, bool>> state;
 };
 
 } // namespace presence
