diff --git a/pid/fancontroller.cpp b/pid/fancontroller.cpp
index f085927..f622698 100644
--- a/pid/fancontroller.cpp
+++ b/pid/fancontroller.cpp
@@ -25,7 +25,7 @@
 std::unique_ptr<PIDController>
     FanController::CreateFanPid(ZoneInterface* owner, const std::string& id,
                                 const std::vector<std::string>& inputs,
-                                ec::pidinfo initial)
+                                const ec::pidinfo& initial)
 {
     if (inputs.size() == 0)
     {
@@ -34,7 +34,7 @@
     auto fan = std::make_unique<FanController>(id, inputs, owner);
     ec::pid_info_t* info = fan->get_pid_info();
 
-    InitializePIDStruct(info, &initial);
+    InitializePIDStruct(info, initial);
 
     return fan;
 }
diff --git a/pid/fancontroller.hpp b/pid/fancontroller.hpp
index c081ce1..e0e79e7 100644
--- a/pid/fancontroller.hpp
+++ b/pid/fancontroller.hpp
@@ -19,7 +19,7 @@
     static std::unique_ptr<PIDController>
         CreateFanPid(ZoneInterface* owner, const std::string& id,
                      const std::vector<std::string>& inputs,
-                     ec::pidinfo initial);
+                     const ec::pidinfo& initial);
 
     FanController(const std::string& id, const std::vector<std::string>& inputs,
                   ZoneInterface* owner) :
diff --git a/pid/thermalcontroller.cpp b/pid/thermalcontroller.cpp
index d7ea5ae..f9d1e11 100644
--- a/pid/thermalcontroller.cpp
+++ b/pid/thermalcontroller.cpp
@@ -21,7 +21,8 @@
 
 std::unique_ptr<PIDController> ThermalController::CreateThermalPid(
     ZoneInterface* owner, const std::string& id,
-    const std::vector<std::string>& inputs, float setpoint, ec::pidinfo initial)
+    const std::vector<std::string>& inputs, float setpoint,
+    const ec::pidinfo& initial)
 {
     // ThermalController currently only supports precisely one input.
     if (inputs.size() != 1)
@@ -34,7 +35,7 @@
     ec::pid_info_t* info = thermal->get_pid_info();
     thermal->set_setpoint(setpoint);
 
-    InitializePIDStruct(info, &initial);
+    InitializePIDStruct(info, initial);
 
     return thermal;
 }
diff --git a/pid/thermalcontroller.hpp b/pid/thermalcontroller.hpp
index e38938f..9b2da71 100644
--- a/pid/thermalcontroller.hpp
+++ b/pid/thermalcontroller.hpp
@@ -17,7 +17,7 @@
     static std::unique_ptr<PIDController>
         CreateThermalPid(ZoneInterface* owner, const std::string& id,
                          const std::vector<std::string>& inputs, float setpoint,
-                         ec::pidinfo initial);
+                         const ec::pidinfo& initial);
 
     ThermalController(const std::string& id,
                       const std::vector<std::string>& inputs,
diff --git a/pid/util.cpp b/pid/util.cpp
index 9004059..8b24fb2 100644
--- a/pid/util.cpp
+++ b/pid/util.cpp
@@ -19,21 +19,21 @@
 #include <cstring>
 #include <iostream>
 
-void InitializePIDStruct(ec::pid_info_t* info, ec::pidinfo* initial)
+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->p_c = initial->p_c;
-    info->i_c = initial->i_c;
-    info->ff_off = initial->ff_off;
-    info->ff_gain = initial->ff_gain;
-    info->i_lim.min = initial->i_lim.min;
-    info->i_lim.max = initial->i_lim.max;
-    info->out_lim.min = initial->out_lim.min;
-    info->out_lim.max = initial->out_lim.max;
-    info->slew_neg = initial->slew_neg;
-    info->slew_pos = initial->slew_pos;
+    info->ts = initial.ts;
+    info->p_c = initial.p_c;
+    info->i_c = initial.i_c;
+    info->ff_off = initial.ff_off;
+    info->ff_gain = initial.ff_gain;
+    info->i_lim.min = initial.i_lim.min;
+    info->i_lim.max = initial.i_lim.max;
+    info->out_lim.min = initial.out_lim.min;
+    info->out_lim.max = initial.out_lim.max;
+    info->slew_neg = initial.slew_neg;
+    info->slew_pos = initial.slew_pos;
 }
 
 void DumpPIDStruct(ec::pid_info_t* info)
diff --git a/pid/util.hpp b/pid/util.hpp
index 0f37afe..a80e07f 100644
--- a/pid/util.hpp
+++ b/pid/util.hpp
@@ -6,6 +6,6 @@
  * Given a configuration structure, fill out the information we use within the
  * PID loop.
  */
-void InitializePIDStruct(ec::pid_info_t* info, ec::pidinfo* initial);
+void InitializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial);
 
 void DumpPIDStruct(ec::pid_info_t* info);
