diff --git a/settings.hpp b/settings.hpp
index 91c9930..5382fdd 100644
--- a/settings.hpp
+++ b/settings.hpp
@@ -1,8 +1,8 @@
 #pragma once
 
+#include <sdbusplus/bus.hpp>
 #include <string>
 #include <tuple>
-#include <sdbusplus/bus.hpp>
 
 namespace settings
 {
@@ -18,36 +18,36 @@
  */
 struct Objects
 {
-    public:
-        /** @brief Constructor - fetch settings objects
-         *
-         * @param[in] bus - The Dbus bus object
-         * @param[in] filter - A vector of settings interfaces the caller is
-         *            interested in.
-         */
-        Objects(sdbusplus::bus::bus& bus, const std::vector<Interface>& filter);
-        Objects(const Objects&) = default;
-        Objects& operator=(const Objects&) = default;
-        Objects(Objects&&) = delete;
-        Objects& operator=(Objects&&) = delete;
-        ~Objects() = default;
+  public:
+    /** @brief Constructor - fetch settings objects
+     *
+     * @param[in] bus - The Dbus bus object
+     * @param[in] filter - A vector of settings interfaces the caller is
+     *            interested in.
+     */
+    Objects(sdbusplus::bus::bus& bus, const std::vector<Interface>& filter);
+    Objects(const Objects&) = default;
+    Objects& operator=(const Objects&) = default;
+    Objects(Objects&&) = delete;
+    Objects& operator=(Objects&&) = delete;
+    ~Objects() = default;
 
-        /** @brief Fetch d-bus service, given a path and an interface. The
-         *         service can't be cached because mapper returns unique
-         *         service names.
-         *
-         * @param[in] path - The Dbus object
-         * @param[in] interface - The Dbus interface
-         *
-         * @return std::string - the dbus service
-         */
-        Service service(const Path& path, const Interface& interface) const;
+    /** @brief Fetch d-bus service, given a path and an interface. The
+     *         service can't be cached because mapper returns unique
+     *         service names.
+     *
+     * @param[in] path - The Dbus object
+     * @param[in] interface - The Dbus interface
+     *
+     * @return std::string - the dbus service
+     */
+    Service service(const Path& path, const Interface& interface) const;
 
-        /** @brief map of settings objects */
-        std::map<Interface, std::vector<Path>> map;
+    /** @brief map of settings objects */
+    std::map<Interface, std::vector<Path>> map;
 
-        /** @brief The Dbus bus object */
-        sdbusplus::bus::bus& bus;
+    /** @brief The Dbus bus object */
+    sdbusplus::bus::bus& bus;
 };
 
 namespace boot
