diff --git a/include/ADCSensor.hpp b/include/ADCSensor.hpp
index f49b3db..d4ad601 100644
--- a/include/ADCSensor.hpp
+++ b/include/ADCSensor.hpp
@@ -4,9 +4,10 @@
 #include "sensor.hpp"
 
 #include <gpiod.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
 #include <memory>
 #include <optional>
-#include <sdbusplus/asio/object_server.hpp>
 #include <stdexcept>
 #include <string>
 #include <vector>
diff --git a/include/CPUSensor.hpp b/include/CPUSensor.hpp
index 8f9cb6e..0bcf3ed 100644
--- a/include/CPUSensor.hpp
+++ b/include/CPUSensor.hpp
@@ -5,11 +5,12 @@
 #include "sensor.hpp"
 
 #include <boost/container/flat_map.hpp>
+#include <gpiod.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
 #include <filesystem>
 #include <fstream>
-#include <gpiod.hpp>
 #include <memory>
-#include <sdbusplus/asio/object_server.hpp>
 #include <stdexcept>
 #include <string>
 #include <variant>
diff --git a/include/ChassisIntrusionSensor.hpp b/include/ChassisIntrusionSensor.hpp
index f65ef33..a54299e 100644
--- a/include/ChassisIntrusionSensor.hpp
+++ b/include/ChassisIntrusionSensor.hpp
@@ -1,8 +1,9 @@
 #pragma once
 
 #include <gpiod.hpp>
-#include <memory>
 #include <sdbusplus/asio/object_server.hpp>
+
+#include <memory>
 #include <string>
 
 enum IntrusionSensorType
diff --git a/include/ExitAirTempSensor.hpp b/include/ExitAirTempSensor.hpp
index 33ecb04..e3c2ef5 100644
--- a/include/ExitAirTempSensor.hpp
+++ b/include/ExitAirTempSensor.hpp
@@ -2,10 +2,11 @@
 #include "sensor.hpp"
 
 #include <boost/container/flat_map.hpp>
+#include <sdbusplus/bus/match.hpp>
+
 #include <chrono>
 #include <limits>
 #include <memory>
-#include <sdbusplus/bus/match.hpp>
 #include <string>
 #include <vector>
 
@@ -47,8 +48,9 @@
     sdbusplus::asio::object_server& objServer;
 };
 
-struct ExitAirTempSensor : public Sensor,
-                           std::enable_shared_from_this<ExitAirTempSensor>
+struct ExitAirTempSensor :
+    public Sensor,
+    std::enable_shared_from_this<ExitAirTempSensor>
 {
 
     double powerFactorMin;
diff --git a/include/HwmonTempSensor.hpp b/include/HwmonTempSensor.hpp
index 5124260..7da2a4d 100644
--- a/include/HwmonTempSensor.hpp
+++ b/include/HwmonTempSensor.hpp
@@ -4,11 +4,13 @@
 #include "sensor.hpp"
 
 #include <sdbusplus/asio/object_server.hpp>
+
 #include <string>
 #include <vector>
 
-class HwmonTempSensor : public Sensor,
-                        public std::enable_shared_from_this<HwmonTempSensor>
+class HwmonTempSensor :
+    public Sensor,
+    public std::enable_shared_from_this<HwmonTempSensor>
 {
   public:
     HwmonTempSensor(const std::string& path, const std::string& objectType,
diff --git a/include/IpmbSensor.hpp b/include/IpmbSensor.hpp
index 2185b68..c5548fa 100644
--- a/include/IpmbSensor.hpp
+++ b/include/IpmbSensor.hpp
@@ -3,6 +3,7 @@
 
 #include <boost/asio/deadline_timer.hpp>
 #include <boost/container/flat_map.hpp>
+
 #include <chrono>
 #include <limits>
 #include <memory>
diff --git a/include/MCUTempSensor.hpp b/include/MCUTempSensor.hpp
index eb12c9a..74ba083 100644
--- a/include/MCUTempSensor.hpp
+++ b/include/MCUTempSensor.hpp
@@ -3,6 +3,7 @@
 
 #include <boost/asio/deadline_timer.hpp>
 #include <boost/container/flat_map.hpp>
+
 #include <chrono>
 #include <limits>
 #include <memory>
diff --git a/include/PSUEvent.hpp b/include/PSUEvent.hpp
index 50f6359..cc9a0e6 100644
--- a/include/PSUEvent.hpp
+++ b/include/PSUEvent.hpp
@@ -17,8 +17,9 @@
 #pragma once
 
 #include <boost/container/flat_map.hpp>
-#include <memory>
 #include <sdbusplus/asio/object_server.hpp>
+
+#include <memory>
 #include <set>
 #include <string>
 #include <vector>
diff --git a/include/PSUSensor.hpp b/include/PSUSensor.hpp
index 811250d..b63e767 100644
--- a/include/PSUSensor.hpp
+++ b/include/PSUSensor.hpp
@@ -4,8 +4,9 @@
 #include "Thresholds.hpp"
 #include "sensor.hpp"
 
-#include <memory>
 #include <sdbusplus/asio/object_server.hpp>
+
+#include <memory>
 #include <string>
 
 class PSUSensor : public Sensor, public std::enable_shared_from_this<PSUSensor>
@@ -44,8 +45,7 @@
     PSUProperty(std::string name, double max, double min, unsigned int factor) :
         labelTypeName(name), maxReading(max), minReading(min),
         sensorScaleFactor(factor)
-    {
-    }
+    {}
     ~PSUProperty() = default;
 
     std::string labelTypeName;
diff --git a/include/PwmSensor.hpp b/include/PwmSensor.hpp
index f0dc7e6..22614e6 100644
--- a/include/PwmSensor.hpp
+++ b/include/PwmSensor.hpp
@@ -1,7 +1,8 @@
 #pragma once
 
-#include <memory>
 #include <sdbusplus/asio/object_server.hpp>
+
+#include <memory>
 #include <string>
 
 class PwmSensor
diff --git a/include/TachSensor.hpp b/include/TachSensor.hpp
index 9ae04e1..0e3a837 100644
--- a/include/TachSensor.hpp
+++ b/include/TachSensor.hpp
@@ -7,9 +7,10 @@
 #include <boost/container/flat_map.hpp>
 #include <boost/container/flat_set.hpp>
 #include <gpiod.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
 #include <memory>
 #include <optional>
-#include <sdbusplus/asio/object_server.hpp>
 #include <string>
 #include <utility>
 #include <vector>
diff --git a/include/Thresholds.hpp b/include/Thresholds.hpp
index 33c6f8f..fe27474 100644
--- a/include/Thresholds.hpp
+++ b/include/Thresholds.hpp
@@ -2,9 +2,10 @@
 #include "Utils.hpp"
 
 #include <boost/asio/io_service.hpp>
+#include <nlohmann/json.hpp>
+
 #include <list>
 #include <memory>
-#include <nlohmann/json.hpp>
 #include <string>
 #include <utility>
 #include <vector>
@@ -28,8 +29,7 @@
               bool write = true) :
         level(lev),
         direction(dir), value(val), writeable(write)
-    {
-    }
+    {}
     Level level;
     Direction direction;
     double value;
@@ -59,8 +59,7 @@
 
     ThresholdTimer(boost::asio::io_service& ioService, Sensor* sensor) :
         io(ioService), sensor(sensor)
-    {
-    }
+    {}
 
     void stopTimer(const Threshold& threshold)
     {
diff --git a/include/Utils.hpp b/include/Utils.hpp
index 565656a..224842c 100644
--- a/include/Utils.hpp
+++ b/include/Utils.hpp
@@ -3,14 +3,15 @@
 
 #include <boost/algorithm/string/predicate.hpp>
 #include <boost/container/flat_map.hpp>
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+#include <sdbusplus/message/types.hpp>
+
 #include <filesystem>
 #include <functional>
 #include <iostream>
 #include <memory>
 #include <regex>
-#include <sdbusplus/asio/connection.hpp>
-#include <sdbusplus/asio/object_server.hpp>
-#include <sdbusplus/message/types.hpp>
 #include <string>
 #include <tuple>
 #include <utility>
@@ -155,16 +156,15 @@
     std::shared_ptr<sdbusplus::asio::dbus_interface> association,
     const std::string& path);
 
-struct GetSensorConfiguration
-    : std::enable_shared_from_this<GetSensorConfiguration>
+struct GetSensorConfiguration :
+    std::enable_shared_from_this<GetSensorConfiguration>
 {
     GetSensorConfiguration(
         std::shared_ptr<sdbusplus::asio::connection> connection,
         std::function<void(ManagedObjectType& resp)>&& callbackFunc) :
         dbusConnection(connection),
         callback(std::move(callbackFunc))
-    {
-    }
+    {}
     void getConfiguration(const std::vector<std::string>& interfaces)
     {
         std::shared_ptr<GetSensorConfiguration> self = shared_from_this();
diff --git a/include/sensor.hpp b/include/sensor.hpp
index a8fb952..4e98089 100644
--- a/include/sensor.hpp
+++ b/include/sensor.hpp
@@ -2,9 +2,10 @@
 
 #include "Thresholds.hpp"
 
+#include <sdbusplus/asio/object_server.hpp>
+
 #include <limits>
 #include <memory>
-#include <sdbusplus/asio/object_server.hpp>
 #include <string>
 #include <vector>
 
@@ -22,8 +23,7 @@
         maxValue(max), minValue(min), thresholds(std::move(thresholdData)),
         hysteresisTrigger((max - min) * 0.01),
         hysteresisPublish((max - min) * 0.0001)
-    {
-    }
+    {}
     virtual ~Sensor() = default;
     virtual void checkThresholds(void) = 0;
     std::string name;
