diff --git a/dbus/dbusutil.cpp b/dbus/dbusutil.cpp
index a1f0a95..03cf41e 100644
--- a/dbus/dbusutil.cpp
+++ b/dbus/dbusutil.cpp
@@ -90,7 +90,7 @@
 
 std::string getSensorPath(const std::string& type, const std::string& id)
 {
-    std::string layer = type;
+    std::string layer;
     if (type == "fan")
     {
         layer = "fan_tach";
diff --git a/ipmi/manualcmds.cpp b/ipmi/manualcmds.cpp
index 1622e2e..0967539 100644
--- a/ipmi/manualcmds.cpp
+++ b/ipmi/manualcmds.cpp
@@ -105,7 +105,8 @@
  * </method>
  */
 ipmi_ret_t ZoneControlIpmiHandler::setManualModeState(
-    const uint8_t* reqBuf, [[maybe_unused]] uint8_t* replyBuf, size_t* dataLen)
+    const uint8_t* reqBuf, [[maybe_unused]] uint8_t* replyBuf,
+    const size_t* dataLen)
 {
     if (*dataLen < sizeof(struct FanCtrlRequestSet))
     {
diff --git a/ipmi/manualcmds.hpp b/ipmi/manualcmds.hpp
index 4e11662..057ffc9 100644
--- a/ipmi/manualcmds.hpp
+++ b/ipmi/manualcmds.hpp
@@ -17,7 +17,8 @@
 class ZoneControlIpmiHandler
 {
   public:
-    ZoneControlIpmiHandler(std::unique_ptr<ZoneControlInterface> control) :
+    explicit ZoneControlIpmiHandler(
+        std::unique_ptr<ZoneControlInterface> control) :
         _control(std::move(control))
     {}
 
@@ -28,7 +29,7 @@
                                   size_t* dataLen);
 
     ipmi_ret_t setManualModeState(const uint8_t* reqBuf, uint8_t* replyBuf,
-                                  size_t* dataLen);
+                                  const size_t* dataLen);
 
   private:
     std::unique_ptr<ZoneControlInterface> _control;
diff --git a/pid/pidcontroller.hpp b/pid/pidcontroller.hpp
index c3bbc2e..fcc021c 100644
--- a/pid/pidcontroller.hpp
+++ b/pid/pidcontroller.hpp
@@ -22,7 +22,24 @@
   public:
     PIDController(const std::string& id, ZoneInterface* owner) :
         Controller(), _owner(owner), _id(id)
-    {}
+    {
+        _pid_info.initialized = false;
+        _pid_info.ts = static_cast<double>(0.0);
+        _pid_info.integral = static_cast<double>(0.0);
+        _pid_info.lastOutput = static_cast<double>(0.0);
+        _pid_info.proportionalCoeff = static_cast<double>(0.0);
+        _pid_info.integralCoeff = static_cast<double>(0.0);
+        _pid_info.feedFwdOffset = static_cast<double>(0.0);
+        _pid_info.feedFwdGain = static_cast<double>(0.0);
+        _pid_info.integralLimit.min = static_cast<double>(0.0);
+        _pid_info.integralLimit.max = static_cast<double>(0.0);
+        _pid_info.outLim.min = static_cast<double>(0.0);
+        _pid_info.outLim.max = static_cast<double>(0.0);
+        _pid_info.slewNeg = static_cast<double>(0.0);
+        _pid_info.slewPos = static_cast<double>(0.0);
+        _pid_info.negativeHysteresis = static_cast<double>(0.0);
+        _pid_info.positiveHysteresis = static_cast<double>(0.0);
+    }
 
     virtual ~PIDController()
     {}
diff --git a/pid/util.cpp b/pid/util.cpp
index ad7c139..646376d 100644
--- a/pid/util.cpp
+++ b/pid/util.cpp
@@ -26,8 +26,6 @@
 
 void initializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial)
 {
-    std::memset(info, 0x00, sizeof(ec::pid_info_t));
-
     info->ts = initial.ts;
     info->proportionalCoeff = initial.proportionalCoeff;
     info->integralCoeff = initial.integralCoeff;
