diff --git a/Makefile.am b/Makefile.am
index 264ae1c..9a31124 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,20 +2,6 @@
 
 sbin_PROGRAMS = swampd setsensor
 
-if !CONFIGURE_DBUS
-BUILT_SOURCES = sensorlist-gen.cpp pidlist-gen.cpp zoneinfo-gen.cpp
-endif
-CLEANFILES = $(BUILT_SOURCES)
-
-sensorlist-gen.cpp:
-	$(AM_V_GEN)@SENSORGEN@ -o $(top_builddir) generate-cpp
-
-pidlist-gen.cpp:
-	$(AM_V_GEN)@PIDGEN@ -o $(top_builddir) generate-cpp
-
-zoneinfo-gen.cpp:
-	$(AM_V_GEN)@ZONEGEN@ -o $(top_builddir) generate-cpp
-
 setsensor_SOURCES = setsensor.cpp
 setsensor_LDADD = \
 	$(SDBUSPLUS_LIBS) \
@@ -76,8 +62,7 @@
 	pid/pidthread.cpp \
 	threads/busthread.cpp \
 	build/buildjson.cpp \
-	experiments/drive.cpp \
-	$(BUILT_SOURCES)
+	experiments/drive.cpp
 
 if CONFIGURE_DBUS
 libswampd_la_SOURCES += dbus/dbusconfiguration.cpp
diff --git a/configure.ac b/configure.ac
index d7d34ff..978df6a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,10 +12,6 @@
 AC_PROG_INSTALL
 AC_PROG_MAKE_SET
 
-# Python
-AM_PATH_PYTHON([2.7], [AC_SUBST([PYTHON], [echo "$PYTHON"])],
-[AC_MSG_ERROR([Could not find python-2.7 installed...python-2.7 is required])])
-
 # Checks for typedefs, structures, and compiler characteristics.
 AX_CXX_COMPILE_STDCXX_17([noext])
 AX_APPEND_COMPILE_FLAGS([-fpic -Wall -Werror], [CXXFLAGS])
@@ -93,18 +89,6 @@
     AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags])
 )
 
-AS_IF([test "x$SENSOR_YAML_GEN" == "x"], [SENSOR_YAML_GEN="sensor-example.yaml"])
-SENSORGEN="$PYTHON ${srcdir}/scripts/sensor_gen.py -i $SENSOR_YAML_GEN"
-AC_SUBST(SENSORGEN)
-
-AS_IF([test "x$PID_YAML_GEN" == "x"], [PID_YAML_GEN="pid-example.yaml"])
-PIDGEN="$PYTHON ${srcdir}/scripts/pid_gen.py -i $PID_YAML_GEN"
-AC_SUBST(PIDGEN)
-
-AS_IF([test "x$ZONE_YAML_GEN" == "x"], [ZONE_YAML_GEN="zone-example.yaml"])
-ZONEGEN="$PYTHON ${srcdir}/scripts/zone_gen.py -i $ZONE_YAML_GEN"
-AC_SUBST(ZONEGEN)
-
 AC_ARG_ENABLE([configure-dbus],
     AS_HELP_STRING(
         [--enable-configure-dbus], [Enable configuring pid from D-Bus.]
diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index fa7a3dd..5fceaa9 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -32,9 +32,9 @@
 
 static constexpr bool DEBUG = false; // enable to print found configuration
 
-std::map<std::string, struct SensorConfig> sensorConfig = {};
-std::map<int64_t, PIDConf> zoneConfig = {};
-std::map<int64_t, struct ZoneConfig> zoneDetailsConfig = {};
+extern std::map<std::string, struct SensorConfig> sensorConfig;
+extern std::map<int64_t, PIDConf> zoneConfig;
+extern std::map<int64_t, struct ZoneConfig> zoneDetailsConfig;
 
 constexpr const char* pidConfigurationInterface =
     "xyz.openbmc_project.Configuration.Pid";
diff --git a/examples/README b/examples/README
new file mode 100644
index 0000000..33c2077
--- /dev/null
+++ b/examples/README
@@ -0,0 +1,82 @@
+# Sensor Config
+
+This program is only meant to control fans given thermal sensor readings.
+
+All sensors in phosphor-dbus-interfaces for OpenBMC use Sensor.Value as their
+accessor.  This provides read-only access to information.  The goal of the
+configuration is to specify how it can be read and if it's a fan, how the PID
+output can be written.  Initially there'll only be sysfs and passive dbus
+access.  If a writePath for a sensor is a dbus path, then the system will need
+to verify which Control.Fan* interfaces is registered and send values to the
+Target property of that interface.
+
+The min/max specified are to range a writePercent to the sensor.  The current
+FanController object outputs the new fan speed goal as a PWM percentage.  Other
+fan PID control objects may not, and they can leave the fields as 0 & 0.
+
+The only requirement for a sensor is that it isn't writeonly.  Only fans are
+expected to have a writePath set, and in this current version non-fan sensors
+are assumed readonly.
+
+The sensor names are unique across all zones.
+
+"sensors" : [
+  {
+    "name": "fan1",  /* Name of the sensor. */
+    "type": "fan",   /* Type of sensor, fan, temp, margin */
+    "readPath": "",  /* How the sensor can be read[1] */
+    "writePath": "", /* How the sensor can be set[2] */
+    "min": 0,        /* The minimum value used for scaling writes (int64) */
+    "max": 255,      /* The maximum value used for scaling writes (int64) */
+    "timeout": 0     /* The timeout value for the sensor, used for failsafe, 0
+                      * means no timeout (int64) */
+  },
+]
+
+[1] readPath has multiple options:
+* If it has "/xyz/openbmc_project/extsensors/" in it, it's an EXTERNAL or
+  host-provided sensor.
+* If it has "/xyz/openbmc_project/" in it, it's a sensor whose value is
+  received passively over dbus.
+* If it has "/sys/" in it, it's a sensor read directly from sysfs.
+
+[2]
+* This can be left blank if the sensor is read-only.
+* If it has "/sys/" in it, it's a sensor written to sysfs.
+  * If min and max are non-zero, it'll convert the value to within the range.
+    and output that modified value.  So, if it receives a value of .90 and min
+    is 0, and max is 255, it'll convert that to a value of 229.5 that is then
+    cast to int64_t.
+
+# PID Config
+
+The PID configuration is a list of PIDs per zone.
+
+"zones" : [
+  {
+    "id": 1, /* zone id. */
+    "minThermalRpm": 3000.0, /* The minimum thermal RPM value. (double) */
+    "failsafePercent": 75.0, /* The percent to use when the zone is in fail-safe mode. (double) */
+    "pids": [
+      {
+        "name": "fan1-5",           /* PID name */
+        "type": "fan",              /* Type of PID, fan, temp, or margin. */
+        "inputs": ["fan1", "fan5"], /* Sensor names that are inputs for the PID */
+        "setpoint": 90.0,           /* For temp/margin PIDs this is the setpoint, ignored otherwise (double) */
+        "pid": {
+          "samplePeriod": 0.1,          /* The input sample period. (double) */
+          "proportionalCoeff": 0.0,     /* The proportional coefficient. (double) */
+          "integralCoeff": 0.0,         /* The integral coefficient. (double) */
+          "feedFwdOffOffsetCoeff": 0.0, /* The feed-forward offset coefficient. (double) */
+          "feedFwdGainCoeff": 0.010,    /* The feed-forward gain coefficient. (double) */
+          "integralLimit_min": 0.0,     /* The integral limit clamp, min, max (double) */
+          "integralLimit_max": 0.0,
+          "outLim_min": 30.0,           /* the PID output clamp, min, max (double) */
+          "outLim_max": 100.0,
+          "slewNeg": 0.0, /* The slew negative value. (double) */
+          "slewPos": 0.0  /* The slew positive value. (double) */
+        }
+      }
+    ]
+  }
+]
diff --git a/examples/fan-info.json b/examples/fan-info.json
index 45afe3f..15c2d09 100644
--- a/examples/fan-info.json
+++ b/examples/fan-info.json
@@ -71,7 +71,7 @@
                     "inputs": ["fan1", "fan5"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -90,7 +90,7 @@
                     "inputs": ["fan2", "fan6"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -109,7 +109,7 @@
                     "inputs": ["fan3", "fan7"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -128,7 +128,7 @@
                     "inputs": ["fan4", "fan8"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -147,7 +147,7 @@
                     "inputs": ["fleeting0"],
                     "setpoint": 10,
                     "pid": {
-                        "sampleperiod": 1,
+                        "samplePeriod": 1,
                         "proportionalCoeff": 750.0,
                         "integralCoeff": 16.0,
                         "feedFwdOffOffsetCoeff": 0.0,
diff --git a/main.cpp b/main.cpp
index ef6cb48..012eca4 100644
--- a/main.cpp
+++ b/main.cpp
@@ -46,11 +46,11 @@
 #endif
 
 /* The YAML converted sensor list. */
-extern std::map<std::string, struct SensorConfig> sensorConfig;
+std::map<std::string, struct SensorConfig> sensorConfig = {};
 /* The YAML converted PID list. */
-extern std::map<int64_t, PIDConf> zoneConfig;
+std::map<int64_t, PIDConf> zoneConfig = {};
 /* The YAML converted Zone configuration. */
-extern std::map<int64_t, struct ZoneConfig> zoneDetailsConfig;
+std::map<int64_t, struct ZoneConfig> zoneDetailsConfig = {};
 
 /** the swampd daemon will check for the existence of this file. */
 constexpr auto jsonConfigurationPath = "/usr/share/swampd/config.json";
@@ -97,27 +97,26 @@
     {
         dbus_configuration::init(modeControlBus);
     }
-#endif
+#else
+    const std::string& path =
+        (configPath.length() > 0) ? configPath : jsonConfigurationPath;
 
     /*
      * When building the sensors, if any of the dbus passive ones aren't on the
      * bus, it'll fail immediately.
      */
-    if (configPath.length() > 0)
+    try
     {
-        try
-        {
-            auto jsonData = parseValidateJson(configPath);
-            sensorConfig = buildSensorsFromJson(jsonData);
-            std::tie(zoneConfig, zoneDetailsConfig) =
-                buildPIDsFromJson(jsonData);
-        }
-        catch (const std::exception& e)
-        {
-            std::cerr << "Failed during building: " << e.what() << "\n";
-            exit(EXIT_FAILURE); /* fatal error. */
-        }
+        auto jsonData = parseValidateJson(path);
+        sensorConfig = buildSensorsFromJson(jsonData);
+        std::tie(zoneConfig, zoneDetailsConfig) = buildPIDsFromJson(jsonData);
     }
+    catch (const std::exception& e)
+    {
+        std::cerr << "Failed during building: " << e.what() << "\n";
+        exit(EXIT_FAILURE); /* fatal error. */
+    }
+#endif
 
     SensorManager mgmr = buildSensors(sensorConfig);
     std::unordered_map<int64_t, std::unique_ptr<PIDZone>> zones =
diff --git a/scripts/README b/scripts/README
deleted file mode 100644
index 8695774..0000000
--- a/scripts/README
+++ /dev/null
@@ -1,25 +0,0 @@
-# Sensor Config
-This program is only meant to control fans given thermal sensor readings.
-
-All sensors in phosphor-dbus-interfaces for OpenBMC use Sensor.Value as their
-accessor.  This provides read-only access to information.  The goal of the
-configuration is to specify how it can be read and if it's a fan, how the PID
-output can be written.  Initially there'll only be sysfs and passive dbus
-access.  If a writePath for a sensor is a dbus path, then the system will need
-to verify which Control.Fan* interfaces is registered and send values to the
-Target property of that interface.
-
-The min/max specified are to range a writePercent to the sensor.  The current
-FanController object outputs the new fan speed goal as a PWM percentage.  Other
-fan PID control objects may not, and they can leave the fields as 0 & 0.
-
-The only requirement for a sensor is that it isn't writeonly.  Only fans are
-expected to have a writePath set, and in this current version non-fan sensors
-are assumed readonly. 
-
-The sensor names are unique across all zones.
-
-# PID Config
-
-The PID configuration is a list of PIDs per zone.
-
diff --git a/scripts/pid-example.txt b/scripts/pid-example.txt
deleted file mode 100644
index 5161d7f..0000000
--- a/scripts/pid-example.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-0x01:  /* zone ID */
-  fan2-6: /* PID name */
-    type: fan /* Type of PID, fan, temp, or margin. */
-    inputs:   /* Sensor names that are inputs for the PID */
-      fan2
-      fan6
-    /* For temp/margin PIDs this is the setpoint, ignored otherwise (double) */
-    setpoint: 90.0
-    pid: /* The PID calculation configuration. */
-      samplePeriod: 0.1        /* The input sample period. (double) */
-      proportionalCoeff: 0.01      /* The proportional coefficient. (double) */
-      integralCoeff: 0.001     /* The integral coefficient. (double) */
-      /* The feed-forward offset coefficient. (double) */
-      feedFwdOffOffsetCoeff: 0.0
-      /* The feed-forward gain coefficient. (double) */
-      feedFwdGainCoeff: 0.0
-      integralCoeff:   /* The integral limit clamp, min, max (double) */
-        min: 0
-        max: 100
-      outLimit: /* the PID output clamp, min, max (double) */
-        min: 0
-        max: 100
-      slewNeg: -100 /* The slew negative value. (double) */
-      slewPos: 0 /* The slew positive value. (double) */
diff --git a/scripts/pid-example.yaml b/scripts/pid-example.yaml
deleted file mode 100644
index 001eab1..0000000
--- a/scripts/pid-example.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-0x01:
-  fan2-6:
-    type: fan
-    inputs:
-      fan2
-      fan6
-    setpoint: 90.0
-    pid:
-      samplePeriod: 0.1
-      proportionalCoeff: 0.01
-      integralCoeff: 0.001
-      feedFwdOffOffsetCoeff: 0.0
-      feedFwdGainCoeff: 0.0
-      integralLimit:
-        min: 0
-        max: 100
-      outLimit:
-        min: 0
-        max: 100
-      slewNeg: 0
-      slewPos: 0
-  temp1:
-    type: temp
-    inputs:
-      temp1
-    setpoint: 30.0
-    pid:
-      samplePeriod: 1
-      proportionalCoeff: 94.0
-      integralCoeff: 2.0
-      feedFwdOffOffsetCoeff: 0.0
-      feedFwdGainCoeff: 0.0
-      integralLimit:
-        min: 3000
-        max: 10000
-      outLimit:
-        min: 3000
-        max: 10000
-      slewNeg: 0
-      slewPos: 0
-  sluggish0:
-    type: margin
-    inputs:
-      sluggish0
-    setpoint: 50
-    pid:
-      samplePeriod: 1
-      proportionalCoeff: 94.0
-      integralCoeff: 2.0
-      feedFwdOffOffsetCoeff: 0.0
-      feedFwdGainCoeff: 0.0
-      integralLimit:
-        min: 3000
-        max: 10000
-      outLimit:
-        min: 3000
-        max: 10000
-      slewNeg: 0
-      slewPos: 0
diff --git a/scripts/pid_gen.py b/scripts/pid_gen.py
deleted file mode 100644
index cd62199..0000000
--- a/scripts/pid_gen.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-import yaml
-import argparse
-from mako.template import Template
-
-
-def generate_cpp(sensor_yaml, output_dir):
-    with open(os.path.join(script_dir, sensor_yaml), 'r') as f:
-        ifile = yaml.safe_load(f)
-        if not isinstance(ifile, dict):
-            ifile = {}
-
-        # Render the mako template
-
-        t = Template(filename=os.path.join(
-                     script_dir,
-                     "writepid.mako.cpp"))
-
-        output_cpp = os.path.join(output_dir, "pidlist-gen.cpp")
-        with open(output_cpp, 'w') as fd:
-            fd.write(t.render(PIDDict=ifile))
-
-
-def main():
-
-    valid_commands = {
-        'generate-cpp': generate_cpp
-    }
-    parser = argparse.ArgumentParser(
-        description="IPMI Sensor parser and code generator")
-
-    parser.add_argument(
-        '-i', '--sensor_yaml', dest='sensor_yaml',
-        default='example.yaml', help='input sensor yaml file to parse')
-
-    parser.add_argument(
-        "-o", "--output-dir", dest="outputdir",
-        default=".",
-        help="output directory")
-
-    parser.add_argument(
-        'command', metavar='COMMAND', type=str,
-        choices=valid_commands.keys(),
-        help='Command to run.')
-
-    args = parser.parse_args()
-
-    if (not (os.path.isfile(os.path.join(script_dir, args.sensor_yaml)))):
-        sys.exit("Can not find input yaml file " + args.sensor_yaml)
-
-    function = valid_commands[args.command]
-    function(args.sensor_yaml, args.outputdir)
-
-
-if __name__ == '__main__':
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()
diff --git a/scripts/sensor-example.txt b/scripts/sensor-example.txt
deleted file mode 100644
index b1318b8..0000000
--- a/scripts/sensor-example.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-fan2: /* Name of the sensor. */
-  type: fan /* Type of sensor, fan, temp, margin */
-  /* How the sensor can be read[1] */
-  readPath: /xyz/openbmc_project/sensors/fan_tach/fan2
-  /* How the sensor can be set[2] */
-  writePath: /sys/class/hwmon/hwmon0/pwm1
-  /* The minimum value used for scaling writes (int64) */
-  min: 0
-  /* The maximum value used for scaling writes (int64) */
-  max: 255
-  /* The timeout value for the sensor, used for failsafe, 0 means no timeout
-   * (int64)
-   */
-  timeout: 0
-
-[1] readPath has multiple options:
-* If it has "/xyz/openbmc_project/extsensors/" in it, it's an EXTERNAL or
-  host-provided sensor.
-* If it has "/xyz/openbmc_project/" in it, it's a sensor whose value is
-  received passively over dbus.
-* If it has "/sys/" in it, it's a sensor read directly from sysfs.
-
-[2]
-* This can be left blank if the sensor is read-only.
-* If it has "/sys/" in it, it's a sensor written to sysfs.
-  * If min and max are non-zero, it'll convert the value to within the range.
-    and output that modified value.  So, if it receives a value of .90 and min
-    is 0, and max is 255, it'll convert that to a value of 229.5 that is then
-    cast to int64_t.
diff --git a/scripts/sensor-example.yaml b/scripts/sensor-example.yaml
deleted file mode 100644
index 1debe3e..0000000
--- a/scripts/sensor-example.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-fan2:
-  type: fan
-  readPath: /xyz/openbmc_project/sensors/fan_tach/fan2
-  writePath: /sys/class/hwmon/hwmon0/pwm1
-  min: 0
-  max: 255
-  timeout: 0
-
-fan6:
-  type: fan
-  readPath: /xyz/openbmc_project/sensors/fan_tach/fan6
-  writePath:
-  min: 0
-  max: 0
-  timeout: 0
-
-temp1:
-  type: temp
-  readPath: /xyz/openbmc_project/sensors/temperature/temp1
-  writePath: 
-  min: 0
-  max: 0
-  timeout: 0
-
-sluggish0:
-  type: margin
-  readPath: /xyz/openbmc_project/extsensors/margin/sluggish0
-  writePath:
-  min: 0
-  max: 0
-  timeout: 0
diff --git a/scripts/sensor_gen.py b/scripts/sensor_gen.py
deleted file mode 100644
index 7e9c6ca..0000000
--- a/scripts/sensor_gen.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-import yaml
-import argparse
-from mako.template import Template
-
-
-def generate_cpp(sensor_yaml, output_dir):
-    with open(os.path.join(script_dir, sensor_yaml), 'r') as f:
-        ifile = yaml.safe_load(f)
-        if not isinstance(ifile, dict):
-            ifile = {}
-
-        # Render the mako template
-
-        t = Template(filename=os.path.join(
-                     script_dir,
-                     "writesensor.mako.cpp"))
-
-        output_cpp = os.path.join(output_dir, "sensorlist-gen.cpp")
-        with open(output_cpp, 'w') as fd:
-            fd.write(t.render(sensorDict=ifile))
-
-
-def main():
-
-    valid_commands = {
-        'generate-cpp': generate_cpp
-    }
-    parser = argparse.ArgumentParser(
-        description="IPMI Sensor parser and code generator")
-
-    parser.add_argument(
-        '-i', '--sensor_yaml', dest='sensor_yaml',
-        default='example.yaml', help='input sensor yaml file to parse')
-
-    parser.add_argument(
-        "-o", "--output-dir", dest="outputdir",
-        default=".",
-        help="output directory")
-
-    parser.add_argument(
-        'command', metavar='COMMAND', type=str,
-        choices=valid_commands.keys(),
-        help='Command to run.')
-
-    args = parser.parse_args()
-
-    if (not (os.path.isfile(os.path.join(script_dir, args.sensor_yaml)))):
-        sys.exit("Can not find input yaml file " + args.sensor_yaml)
-
-    function = valid_commands[args.command]
-    function(args.sensor_yaml, args.outputdir)
-
-
-if __name__ == '__main__':
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()
\ No newline at end of file
diff --git a/scripts/writepid.mako.cpp b/scripts/writepid.mako.cpp
deleted file mode 100644
index 2e6738d..0000000
--- a/scripts/writepid.mako.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-
-// !!! WARNING: This is GENERATED Code... Please do NOT edit !!!
-
-#include <map>
-#include "conf.hpp"
-
-std::map<int64_t, PIDConf> zoneConfig = {
-% for zone in PIDDict.iterkeys():
-    % if zone:
-    {${zone},
-        {
-            % for key, details in PIDDict[zone].iteritems():
-            {"${key}",
-                {"${details['type']}",
-                 {
-                   % for item in details['inputs'].split():
-                   "${item}",
-                   % endfor
-                 },
-                 <%
-                      # If the PID type is a fan, setpoint field is unused,
-                      # so just use a default of 0.  If the PID is not a type
-                      # of fan, require the setpoint field.
-                      if 'fan' == details['type']:
-                          setpoint = 0
-                      else:
-                          setpoint = details['setpoint']
-
-                      neg_hysteresis = 0
-                      pos_hysteresis = 0
-                      if 'neg_hysteresis' in details['pid']:
-                          neg_hysteresis = details['pid']['neg_hysteresis']
-                      if 'pos_hysteresis' in details['pid']:
-                          pos_hysteresis = details['pid']['pos_hysteresis']
-                  %>
-                 ${setpoint},
-                 {${details['pid']['samplePeriod']},
-                  ${details['pid']['proportionalCoeff']},
-                  ${details['pid']['integralCoeff']},
-                  ${details['pid']['feedFwdOffOffsetCoeff']},
-                  ${details['pid']['feedFwdGainCoeff']},
-                  {${details['pid']['integralLimit']['min']}, ${details['pid']['integralLimit']['max']}},
-                  {${details['pid']['outLimit']['min']}, ${details['pid']['outLimit']['max']}},
-                  ${details['pid']['slewNeg']},
-                  ${details['pid']['slewPos']},
-                  ${neg_hysteresis},
-                  ${pos_hysteresis}},
-                },
-            },
-            % endfor
-        },
-    },
-   % endif
-% endfor
-};
diff --git a/scripts/writesensor.mako.cpp b/scripts/writesensor.mako.cpp
deleted file mode 100644
index 56e7965..0000000
--- a/scripts/writesensor.mako.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-
-// !!! WARNING: This is GENERATED Code... Please do NOT edit !!!
-
-#include <map>
-#include "conf.hpp"
-
-std::map<std::string, struct SensorConfig> sensorConfig = {
-% for key in sensorDict.iterkeys():
-   % if key:
-   <%
-           sensor = sensorDict[key]
-           type = sensor["type"]
-           readPath = sensor["readPath"]
-           writePath = sensor.get("writePath", "")
-           min = sensor.get("min", 0)
-           max = sensor.get("max", 0)
-           # Presently only thermal inputs have their timeout
-           # checked, but we should default it as 2s, which is
-           # the previously hard-coded value.
-           # If it's a fan sensor though, let's set the default
-           # to 0.
-           if type == "fan":
-               timeout = sensor.get("timeout", 0)
-           else:
-               timeout = sensor.get("timeout", 2)
-   %>
-    {"${key}",
-        {"${type}","${readPath}","${writePath}", ${min}, ${max}, ${timeout}},
-    },
-   % endif
-% endfor
-};
-
-
diff --git a/scripts/writezone.mako.cpp b/scripts/writezone.mako.cpp
deleted file mode 100644
index f466060..0000000
--- a/scripts/writezone.mako.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-
-// !!! WARNING: This is GENERATED Code... Please do NOT edit !!!
-
-#include <map>
-#include "conf.hpp"
-
-std::map<int64_t, struct ZoneConfig> zoneDetailsConfig = {
-% for zone in ZoneDict.iterkeys():
-   % if zone:
-   <%
-           zConf = ZoneDict[zone]
-           min = zConf["minThermalRpm"]
-           percent = zConf["failsafePercent"]
-   %>
-    {${zone},
-        {${min}, ${percent}},
-    },
-   % endif
-% endfor
-};
diff --git a/scripts/zone-example.txt b/scripts/zone-example.txt
deleted file mode 100644
index 3f987a2..0000000
--- a/scripts/zone-example.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-0x01: /* The zone ID */
-  minThermalRpm: 3000.0 /* The minimum thermal RPM value. (double) */
-  /* The percent to use when the zone is in fail-safe mode. (double) */
-  failsafePercent: 90.0
diff --git a/scripts/zone-example.yaml b/scripts/zone-example.yaml
deleted file mode 100644
index 8fecf71..0000000
--- a/scripts/zone-example.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-0x01:
-  minThermalRpm: 3000.0
-  failsafePercent: 90.0
diff --git a/scripts/zone_gen.py b/scripts/zone_gen.py
deleted file mode 100644
index a98a3b5..0000000
--- a/scripts/zone_gen.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-import yaml
-import argparse
-from mako.template import Template
-
-
-def generate_cpp(zoneinfo_yaml, output_dir):
-    with open(os.path.join(script_dir, zoneinfo_yaml), 'r') as f:
-        ifile = yaml.safe_load(f)
-        if not isinstance(ifile, dict):
-            ifile = {}
-
-        # Render the mako template
-
-        t = Template(filename=os.path.join(
-                     script_dir,
-                     "writezone.mako.cpp"))
-
-        output_cpp = os.path.join(output_dir, "zoneinfo-gen.cpp")
-        with open(output_cpp, 'w') as fd:
-            fd.write(t.render(ZoneDict=ifile))
-
-
-def main():
-
-    valid_commands = {
-        'generate-cpp': generate_cpp
-    }
-    parser = argparse.ArgumentParser(
-        description="IPMI Zone info parser and code generator")
-
-    parser.add_argument(
-        '-i', '--zoneinfo_yaml', dest='zoneinfo_yaml',
-        default='example.yaml', help='input zone yaml file to parse')
-
-    parser.add_argument(
-        "-o", "--output-dir", dest="outputdir",
-        default=".",
-        help="output directory")
-
-    parser.add_argument(
-        'command', metavar='COMMAND', type=str,
-        choices=valid_commands.keys(),
-        help='Command to run.')
-
-    args = parser.parse_args()
-
-    if (not (os.path.isfile(os.path.join(script_dir, args.zoneinfo_yaml)))):
-        sys.exit("Can not find input yaml file " + args.zoneinfo_yaml)
-
-    function = valid_commands[args.command]
-    function(args.zoneinfo_yaml, args.outputdir)
-
-
-if __name__ == '__main__':
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()
