diff --git a/pid/builderconfig.cpp b/pid/builderconfig.cpp
index 652724d..732d9fc 100644
--- a/pid/builderconfig.cpp
+++ b/pid/builderconfig.cpp
@@ -102,22 +102,24 @@
                 /* set-point is only required to be set for thermal. */
                 /* TODO(venture): Verify this works optionally here. */
                 info.setpoint = pid.lookup("set-point");
-                info.pidInfo.ts = pid.lookup("pid.sampleperiod");
-                info.pidInfo.p_c = pid.lookup("pid.p_coefficient");
-                info.pidInfo.i_c = pid.lookup("pid.i_coefficient");
-                info.pidInfo.ff_off = pid.lookup("pid.ff_off_coefficient");
-                info.pidInfo.ff_gain = pid.lookup("pid.ff_gain_coefficient");
-                info.pidInfo.i_lim.min = pid.lookup("pid.i_limit.min");
-                info.pidInfo.i_lim.max = pid.lookup("pid.i_limit.max");
-                info.pidInfo.out_lim.min = pid.lookup("pid.out_limit.min");
-                info.pidInfo.out_lim.max = pid.lookup("pid.out_limit.max");
-                info.pidInfo.slew_neg = pid.lookup("pid.slew_neg");
-                info.pidInfo.slew_pos = pid.lookup("pid.slew_pos");
+                info.pidInfo.ts = pid.lookup("pid.samplePeriod");
+                info.pidInfo.proportionalCoeff =
+                    pid.lookup("pid.proportionalCoeff");
+                info.pidInfo.integralCoeff = pid.lookup("pid.integralCoeff");
+                info.pidInfo.feedFwdOffset =
+                    pid.lookup("pid.feedFwdOffOffsetCoeff");
+                info.pidInfo.feedFwdGain = pid.lookup("pid.feedFwdGainCoeff");
+                info.pidInfo.integralLimit.min =
+                    pid.lookup("pid.integralCoeff.min");
+                info.pidInfo.integralLimit.max =
+                    pid.lookup("pid.integralCoeff.max");
+                info.pidInfo.outLim.min = pid.lookup("pid.outLimit.min");
+                info.pidInfo.outLim.max = pid.lookup("pid.outLimit.max");
+                info.pidInfo.slewNeg = pid.lookup("pid.slewNeg");
+                info.pidInfo.slewPos = pid.lookup("pid.slewPos");
 
-                std::cerr << "out_lim.min: " << info.pidInfo.out_lim.min
-                          << "\n";
-                std::cerr << "out_lim.max: " << info.pidInfo.out_lim.max
-                          << "\n";
+                std::cerr << "outLim.min: " << info.pidInfo.outLim.min << "\n";
+                std::cerr << "outLim.max: " << info.pidInfo.outLim.max << "\n";
 
                 const Setting& inputs = pid["inputs"];
                 int icount = inputs.getLength();
diff --git a/pid/ec/pid.cpp b/pid/ec/pid.cpp
index af70da7..7d8b403 100644
--- a/pid/ec/pid.cpp
+++ b/pid/ec/pid.cpp
@@ -74,7 +74,7 @@
 
     // slew rate
     // TODO(aarena) - Simplify logic as Andy suggested by creating dynamic
-    // out_lim_min/max that are affected by slew rate control and just clamping
+    // outLim_min/max that are affected by slew rate control and just clamping
     // to those instead of effectively clamping twice.
     if (pidinfoptr->initialized)
     {
diff --git a/pid/ec/pid.hpp b/pid/ec/pid.hpp
index 432e043..74ad5a7 100644
--- a/pid/ec/pid.hpp
+++ b/pid/ec/pid.hpp
@@ -40,15 +40,15 @@
 /* Condensed version for use by the configuration. */
 struct pidinfo
 {
-    double ts;            // sample time in seconds
-    double p_c;           // coeff for P
-    double i_c;           // coeff for I
-    double ff_off;        // offset coeff for feed-forward term
-    double ff_gain;       // gain for feed-forward term
-    ec::limits_t i_lim;   // clamp of integral
-    ec::limits_t out_lim; // clamp of output
-    double slew_neg;
-    double slew_pos;
+    double ts;                  // sample time in seconds
+    double proportionalCoeff;   // coeff for P
+    double integralCoeff;       // coeff for I
+    double feedFwdOffset;       // offset coeff for feed-forward term
+    double feedFwdGain;         // gain for feed-forward term
+    ec::limits_t integralLimit; // clamp of integral
+    ec::limits_t outLim;        // clamp of output
+    double slewNeg;
+    double slewPos;
     double positiveHysteresis;
     double negativeHysteresis;
 };
diff --git a/pid/util.cpp b/pid/util.cpp
index 6993fbb..5c6e5d4 100644
--- a/pid/util.cpp
+++ b/pid/util.cpp
@@ -24,32 +24,32 @@
     std::memset(info, 0x00, sizeof(ec::pid_info_t));
 
     info->ts = initial.ts;
-    info->proportionalCoeff = initial.p_c;
-    info->integralCoeff = initial.i_c;
-    info->feedFwdOffset = initial.ff_off;
-    info->feedFwdGain = initial.ff_gain;
-    info->integralLimit.min = initial.i_lim.min;
-    info->integralLimit.max = initial.i_lim.max;
-    info->outLim.min = initial.out_lim.min;
-    info->outLim.max = initial.out_lim.max;
-    info->slewNeg = initial.slew_neg;
-    info->slewPos = initial.slew_pos;
+    info->proportionalCoeff = initial.proportionalCoeff;
+    info->integralCoeff = initial.integralCoeff;
+    info->feedFwdOffset = initial.feedFwdOffset;
+    info->feedFwdGain = initial.feedFwdGain;
+    info->integralLimit.min = initial.integralLimit.min;
+    info->integralLimit.max = initial.integralLimit.max;
+    info->outLim.min = initial.outLim.min;
+    info->outLim.max = initial.outLim.max;
+    info->slewNeg = initial.slewNeg;
+    info->slewPos = initial.slewPos;
     info->negativeHysteresis = initial.negativeHysteresis;
     info->positiveHysteresis = initial.positiveHysteresis;
 }
 
 void dumpPIDStruct(ec::pid_info_t* info)
 {
-    std::cerr << " ts: " << info->ts << " p_c: " << info->proportionalCoeff
-              << " i_c: " << info->integralCoeff
-              << " ff_off: " << info->feedFwdOffset
-              << " ff_gain: " << info->feedFwdGain
-              << " i_lim.min: " << info->integralLimit.min
-              << " i_lim.max: " << info->integralLimit.max
-              << " out_lim.min: " << info->outLim.min
-              << " out_lim.max: " << info->outLim.max
-              << " slew_neg: " << info->slewNeg
-              << " slew_pos: " << info->slewPos
+    std::cerr << " ts: " << info->ts
+              << " proportionalCoeff: " << info->proportionalCoeff
+              << " integralCoeff: " << info->integralCoeff
+              << " feedFwdOffset: " << info->feedFwdOffset
+              << " feedFwdGain: " << info->feedFwdGain
+              << " integralLimit.min: " << info->integralLimit.min
+              << " integralLimit.max: " << info->integralLimit.max
+              << " outLim.min: " << info->outLim.min
+              << " outLim.max: " << info->outLim.max
+              << " slewNeg: " << info->slewNeg << " slewPos: " << info->slewPos
               << " last_output: " << info->lastOutput
               << " integral: " << info->integral << std::endl;
 
