diff --git a/VERSION b/VERSION
index bf7b715..b22af29 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.7.16
+0.7.17
diff --git a/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py b/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py
index 7e21416..d377d69 100755
--- a/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py
+++ b/edge-monitoring/agent_modem/edge_monitoring_agent_modem.py
@@ -26,13 +26,9 @@
 
 USE_MODEM_CMDS = False
 
-# Parse config with backwards compatibility with config.json pre 0.6.6
 config_file_contents = open(os.getenv('CONFIG_FILE', "./config.json")).read()
-config_file_contents = config_file_contents.replace("user_plane_ping_test", "dns")
-config_file_contents = config_file_contents.replace("speedtest_iperf", "iperf_server")
-config_file_contents = config_file_contents.replace("\"speedtest_ping_dns\": \"8.8.8.8\",", "")
 # replace 1.1.1.1 with 8.8.8.8
-config_file_contents = config_file_contents.replace('1.1.1.1', '8.8.8.8')
+# config_file_contents = config_file_contents.replace('1.1.1.1', '8.8.8.8')
 CONF = json.loads(
     config_file_contents, object_hook=lambda d: namedtuple('X', d.keys())(*d.values())
 )
@@ -307,26 +303,21 @@
     return result
 
 
-def iperf_test(counters):
-    '''
-    Prepares the iperf test.
-    '''
+def update_iperf_stats(iperf_stats, counters):
+    global cycles
     global hour_iperf_scheduled_time_last_ran
-    speedtest_iperf = {}
-    speedtest_iperf['cluster'] = {}
 
-    if "iperf_schedule" in CONF._fields and len(CONF.iperf_schedule) > 0:
-        if int(time.strftime("%H")) not in CONF.iperf_schedule: # not in the schedule
-            hour_iperf_scheduled_time_last_ran = -1
-            return None
-        elif int(time.strftime("%H")) == hour_iperf_scheduled_time_last_ran: # already ran this hour
-            return None
+    if cycles != 0:
+        if "iperf_schedule" in CONF._fields and len(CONF.iperf_schedule) > 0:
+            if int(time.strftime("%H")) not in CONF.iperf_schedule: # not in the schedule
+                hour_iperf_scheduled_time_last_ran = -1
+                return
+            elif int(time.strftime("%H")) == hour_iperf_scheduled_time_last_ran: # already ran this hour
+                return
     hour_iperf_scheduled_time_last_ran = int(time.strftime("%H"))
 
-    speedtest_iperf['cluster']['downlink'] = run_iperf_test(CONF.ips.iperf_server, CONF.iperf_port, 10, True, counters)
-    speedtest_iperf['cluster']['uplink'] = run_iperf_test(CONF.ips.iperf_server, CONF.iperf_port, 10, False, counters)
-
-    return speedtest_iperf
+    iperf_stats['cluster']['downlink'] = run_iperf_test(CONF.ips.iperf_server, CONF.iperf_port, 10, True, counters)
+    iperf_stats['cluster']['uplink'] = run_iperf_test(CONF.ips.iperf_server, CONF.iperf_port, 10, False, counters)
 
 
 def get_signal_quality(modem, counters, dongle_stats=None):
@@ -408,7 +399,7 @@
     return result
 
 
-def report_status(counters, signal_quality, dongle_stats, cp_state=None, up_state=None, speedtest_ping=None, speedtest_iperf=None):
+def report_status(counters, signal_quality, dongle_stats, cp_state=None, up_state=None, speedtest_ping=None, iperf_stats=None):
     report = {
         'name': CONF.edge_name,
         'status': {
@@ -429,12 +420,6 @@
                     'max': 0.0,
                     'stddev': 0.0
                 }
-            },
-            'iperf': {
-                'cluster': {
-                    'downlink': 0.0,
-                    'uplink': 0.0
-                }
             }
         },
         'signal_quality': {
@@ -449,8 +434,8 @@
         report['status']['user_plane'] = up_state.name
     if speedtest_ping is not None:
         report['speedtest']['ping'] = speedtest_ping
-    if speedtest_iperf is not None:
-        report['speedtest']['iperf'] = speedtest_iperf
+    if iperf_stats is not None:
+        report['speedtest']['iperf'] = iperf_stats
     report['signal_quality'] = signal_quality
     report['dongle_stats'] = dongle_stats
     report['counters'] = counters
@@ -527,6 +512,9 @@
     time.sleep(delay)
     subprocess.check_output("sudo shutdown -r now", shell=True)
 
+def init_iperf_stats():
+    return {'cluster': {'downlink': 0.0, 'uplink': 0.0}}
+
 def init_counters():
     return {
         'dongle_read_error': 0,
@@ -553,6 +541,7 @@
     hour_iperf_scheduled_time_last_ran = -1
 
     counters = init_counters()
+    iperf_stats = init_iperf_stats()
 
     try:
         if "report_in_band" in CONF._fields and \
@@ -625,9 +614,9 @@
         else:
             up_state = State.disconnected
 
-        speedtest_iperf = iperf_test(counters)
+        update_iperf_stats(iperf_stats, counters)
 
-        report_status(counters, signal_quality, dongle_stats, cp_state, up_state, ping_latency, speedtest_iperf)
+        report_status(counters, signal_quality, dongle_stats, cp_state, up_state, ping_latency, iperf_stats)
         # counters = clear_counters(counters)
         time.sleep(CONF.report_interval)
 
