diff --git a/include/TachSensor.hpp b/include/TachSensor.hpp
index 9fc50a6..1e01859 100644
--- a/include/TachSensor.hpp
+++ b/include/TachSensor.hpp
@@ -6,13 +6,13 @@
 #include <sdbusplus/asio/object_server.hpp>
 #include <sensor.hpp>
 
-constexpr const char *gpioPath = "/sys/class/gpio/";
+constexpr const char* gpioPath = "/sys/class/gpio/";
 class PresenceSensor
 {
 
   public:
     PresenceSensor(const size_t index, bool inverted,
-                   boost::asio::io_service &io);
+                   boost::asio::io_service& io);
     ~PresenceSensor();
 
     void monitorPresence(void);
@@ -29,35 +29,35 @@
 class RedundancySensor
 {
   public:
-    RedundancySensor(size_t count, const std::vector<std::string> &children,
-                     sdbusplus::asio::object_server &objectServer);
+    RedundancySensor(size_t count, const std::vector<std::string>& children,
+                     sdbusplus::asio::object_server& objectServer);
     ~RedundancySensor();
 
-    void update(const std::string &name, bool failed);
+    void update(const std::string& name, bool failed);
 
   private:
     size_t count;
     std::shared_ptr<sdbusplus::asio::dbus_interface> iface;
-    sdbusplus::asio::object_server &objectServer;
+    sdbusplus::asio::object_server& objectServer;
     boost::container::flat_map<std::string, bool> statuses;
 };
 
 class TachSensor : public Sensor
 {
   public:
-    TachSensor(const std::string &path, const std::string &objectType,
-               sdbusplus::asio::object_server &objectServer,
-               std::shared_ptr<sdbusplus::asio::connection> &conn,
-               std::unique_ptr<PresenceSensor> &&presence,
-               const std::shared_ptr<RedundancySensor> &redundancy,
-               boost::asio::io_service &io, const std::string &fanName,
-               std::vector<thresholds::Threshold> &&thresholds,
-               const std::string &sensorConfiguration,
-               const std::pair<size_t, size_t> &limits);
+    TachSensor(const std::string& path, const std::string& objectType,
+               sdbusplus::asio::object_server& objectServer,
+               std::shared_ptr<sdbusplus::asio::connection>& conn,
+               std::unique_ptr<PresenceSensor>&& presence,
+               const std::shared_ptr<RedundancySensor>& redundancy,
+               boost::asio::io_service& io, const std::string& fanName,
+               std::vector<thresholds::Threshold>&& thresholds,
+               const std::string& sensorConfiguration,
+               const std::pair<size_t, size_t>& limits);
     ~TachSensor();
 
   private:
-    sdbusplus::asio::object_server &objServer;
+    sdbusplus::asio::object_server& objServer;
     std::shared_ptr<RedundancySensor> redundancy;
     std::unique_ptr<PresenceSensor> presence;
     boost::asio::posix::stream_descriptor inputDev;
@@ -65,6 +65,6 @@
     boost::asio::streambuf readBuf;
     int errCount;
     void setupRead(void);
-    void handleResponse(const boost::system::error_code &err);
+    void handleResponse(const boost::system::error_code& err);
     void checkThresholds(void) override;
 };
