diff --git a/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png b/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5732f8d162182a014497f219b510baa3d5ac105
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/MW/generate.sh b/src/common/method_wrappers/results-perf-eval/MW/generate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..bb86e747580cc48cfd93d9091584ebe66a2586fc
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/MW/generate.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+python generate_plot.py "DEVICE_DRIVER_MW"
+python generate_plot.py "SERVICE_HANDLER_MW"
diff --git a/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py b/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py
new file mode 100644
index 0000000000000000000000000000000000000000..beae663f671b73b685e5ac8ec2048df35771c862
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py
@@ -0,0 +1,69 @@
+import enum, sys
+import numpy as np
+import matplotlib.pyplot as plt
+
+class PlotName(enum.Enum):
+    DEVICE_DRIVER_MW = 'dev-drv-mw'
+    SERVICE_HANDLER_MW = 'srv-hlr-mw'
+
+plot_name = PlotName.__members__.get(sys.argv[1])
+if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name)))
+
+PLOTS = {
+    PlotName.DEVICE_DRIVER_MW: (
+        #'Device Driver - MicroWave', '0.0001-100', [
+        #    ('GetConfig',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,10,172,0,1,0,0,0,0,0,0]),
+        #    ('SetConfig',    [89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,6,34,50,1,0,0,0,0,0,0,0]),
+        #    ('DeleteConfig', [90,1,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,4,72,12,0,0,0,0,0,0]),
+        #]),
+        'Device Driver - MicroWave', '0.1-10', [
+            ('GetConfig',    [0,1,0,10,172,0,1,0]),
+            ('SetConfig',    [0,0,6,34,50,1,0,0]),
+            ('DeleteConfig', [0,2,3,0,4,72,12,0]),
+        ]),
+    PlotName.SERVICE_HANDLER_MW: (
+        'Service Handler - L2NM MicroWave', '1-100', [
+            ('SetEndpoint',    [0,1,0,1,5,75,6,0]),
+            ('DeleteEndpoint', [0,0,0,0,1,77,17,0]),
+        ]),
+}
+
+BINS_RANGES = {
+    '0.0001-100'    : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,
+                        25, 50, 75, 100, 200],
+    '0.1-10'    : [0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10],
+    '0.0001-1'      : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1],
+    '0.0001-0.25'   : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25],
+    '1-100'     : [1, 2.5, 5, 7.5, 10, 25, 50, 75, 100],
+    '0.001-100'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200],
+    '0.001-7.5'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10],
+    '0.01-5'        : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5],
+}
+
+# plot the cumulative histogram
+fig, ax = plt.subplots(figsize=(8, 8))
+
+bins = PLOTS[plot_name][1]
+if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]]
+bins = np.array(bins).astype(float)
+
+for label, counts in PLOTS[plot_name][2]:
+    counts = np.array(counts).astype(float)
+    assert len(bins) == len(counts) + 1
+    centroids = (bins[1:] + bins[:-1]) / 2
+    ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True,
+            histtype='step', cumulative=True, label=label)
+
+ax.grid(True)
+ax.legend(loc='upper left')
+ax.set_title(PLOTS[plot_name][0])
+ax.set_xlabel('seconds')
+ax.set_ylabel('Likelihood of occurrence')
+plt.xscale('log')
+plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) 
+plt.show()
diff --git a/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png b/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png
new file mode 100644
index 0000000000000000000000000000000000000000..70368ade484fd07310b521b6ea8182b223604922
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png
new file mode 100644
index 0000000000000000000000000000000000000000..7130d5cc721a5b3dd419f0eba1217664aab064d4
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0ecd000fd52dc8b5d40b0b115f09b4e957582240
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+python generate_plot.py "DEVICE_DRIVER_OPENCONFIG"
+python generate_plot.py "SERVICE_HANDLER_OPENCONFIG_L2NM"
+python generate_plot.py "SERVICE_HANDLER_OPENCONFIG_L3NM"
diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6fda331d7782acefd47759d28d7e1d82508efef
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py
@@ -0,0 +1,74 @@
+import enum, sys
+import numpy as np
+import matplotlib.pyplot as plt
+
+class PlotName(enum.Enum):
+    DEVICE_DRIVER_OPENCONFIG = 'dev-drv-openconfig'
+    SERVICE_HANDLER_OPENCONFIG_L2NM = 'srv-hlr-openconfig-l2nm'
+    SERVICE_HANDLER_OPENCONFIG_L3NM = 'srv-hlr-openconfig-l3nm'
+
+plot_name = PlotName.__members__.get(sys.argv[1])
+if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name)))
+
+PLOTS = {
+    PlotName.DEVICE_DRIVER_OPENCONFIG: (
+        'Device Driver - OpenConfig', '0.0001-100', [
+            #('GetConfig',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,0,0,0,0]),
+            #('SetConfig',    [127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,19,0,0,0,0,0,0]),
+            #('DeleteConfig', [92,1,0,0,0,0,0,0,0,0,0,0,0,0,5,2,8,71,14,0,0,0,0,0,0,0]),
+
+            ('GetConfig',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,0,0,0,0]),
+            ('SetConfig',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,19,0,0,0,0,0,0]),
+            ('DeleteConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,8,71,14,0,0,0,0,0,0,0]),
+        ]),
+    PlotName.SERVICE_HANDLER_OPENCONFIG_L2NM: (
+        'Service Handler - L2NM OpenConfig', '0.001-100', [
+            ('SetEndpoint',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,10]),
+            ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14]),
+        ]),
+    PlotName.SERVICE_HANDLER_OPENCONFIG_L3NM: (
+        'Service Handler - L3NM OpenConfig', '0.001-100', [
+            ('SetEndpoint',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17]),
+            ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20]),
+        ]),
+}
+
+BINS_RANGES = {
+    '0.0001-100'    : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,
+                        25, 50, 75, 100, 200],
+    '0.1-10'    : [0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10],
+    '0.0001-1'      : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1],
+    '0.0001-0.25'   : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25],
+    '1-100'     : [1, 2.5, 5, 7.5, 10, 25, 50, 75, 100],
+    '0.001-100'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200],
+    '0.001-7.5'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10],
+    '0.01-5'        : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5],
+}
+
+# plot the cumulative histogram
+fig, ax = plt.subplots(figsize=(8, 8))
+
+bins = PLOTS[plot_name][1]
+if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]]
+bins = np.array(bins).astype(float)
+
+for label, counts in PLOTS[plot_name][2]:
+    counts = np.array(counts).astype(float)
+    assert len(bins) == len(counts) + 1
+    centroids = (bins[1:] + bins[:-1]) / 2
+    ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True,
+            histtype='step', cumulative=True, label=label)
+
+ax.grid(True)
+ax.legend(loc='upper left')
+ax.set_title(PLOTS[plot_name][0])
+ax.set_xlabel('seconds')
+ax.set_ylabel('Likelihood of occurrence')
+plt.xscale('log')
+plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) 
+plt.show()
diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b4393a0ee713b0232b2e4eb5bba75f30159f6e9
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4b2d83685dc983cbd2738eecf7064eba74c8e13
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py b/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py
new file mode 100644
index 0000000000000000000000000000000000000000..60919ba8bb2a1e5976d14bafd727e176cf86b0cd
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py
@@ -0,0 +1,30 @@
+import matplotlib.pyplot as plt
+
+flow_creation_us = [
+    3.007065,3.007783,3.010780,3.007374,3.006519,3.006668,3.006303,3.006463,3.006758,3.007992,3.012198,3.001413,
+    3.007289,3.006241,3.007523,3.007569,3.006643,3.006255,3.007058,3.006111,3.006918,3.007972,3.006829,3.007378,
+    3.007666,3.003071,3.006774,3.006060,3.006731,3.005812
+]
+
+flow_update_us = [
+    3.005123,3.004228,3.003897,3.006692,3.003767,3.003749,3.004626,3.004333,3.004449,3.003895,3.004092,3.003979,
+    3.005099,3.213206,3.004625,3.004707,3.004187,3.004609,3.003885,3.004064,3.004308,3.004280,3.004423,3.211980,
+    3.004138,3.004394,3.004018,3.004747,3.005719,3.003656
+]
+
+n_bins = 10
+fig, ax = plt.subplots(figsize=(8, 8))
+
+# plot the cumulative histograms
+n, bins, _ = ax.hist(flow_creation_us, n_bins, density=True, histtype='step', cumulative=True, label='FlowCreate')
+print(n, bins)
+n, bins, _ = ax.hist(flow_update_us, n_bins, density=True, histtype='step', cumulative=True, label='FlowUpdate')
+print(n, bins)
+
+ax.grid(True)
+ax.legend(loc='lower center')
+ax.set_title('TE Flow Management Delay')
+ax.set_xlabel('seconds')
+ax.set_ylabel('Likelihood of occurrence')
+plt.savefig('te-perf-eval.png', dpi = (600)) 
+plt.show()
diff --git a/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png b/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b2fd8160bddb4322d8fbb22dac950598bf2115b
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png
new file mode 100644
index 0000000000000000000000000000000000000000..9607ce0436ee962b7fa5b7ed333ca219ef097884
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png
new file mode 100644
index 0000000000000000000000000000000000000000..61f7d3e394676a05f240d032ce62124a70d8b8bb
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/XR/generate.sh b/src/common/method_wrappers/results-perf-eval/XR/generate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..eae3eb6d6e615f3be97b2df9f44ce544523ddb72
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/XR/generate.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+python generate_plot.py "DEVICE_DRIVER_XR"
diff --git a/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py b/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py
new file mode 100644
index 0000000000000000000000000000000000000000..66110b44400719a796bc86bf6ea1b0c7a1d44224
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py
@@ -0,0 +1,61 @@
+import enum, sys
+import numpy as np
+import matplotlib.pyplot as plt
+
+class PlotName(enum.Enum):
+    DEVICE_DRIVER_XR = 'dev-drv-xr'
+
+plot_name = PlotName.__members__.get(sys.argv[1])
+if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name)))
+
+PLOTS = {
+    PlotName.DEVICE_DRIVER_XR: (
+        #'Device Driver - XR', '0.0001-0.25', [
+        #    ('GetConfig',    [0,0,0,0,0,0,0,0,0,77,1,1,0,0]),
+        #    ('SetConfig',    [0,15,17,7,0,0,0,0,0,0,34,3,2,0]),
+        #    ('DeleteConfig', [23,16,0,0,0,0,0,0,0,1,32,5,1,0]),
+        #]),
+        'Device Driver - XR', '0.0001-0.25', [
+            ('GetConfig',    [0,0,0,0,0,0,0,0,0,77,1,1,0,0]),
+            ('SetConfig',    [0,0,0,0,0,0,0,0,0,0,34,3,2,0]),
+            ('DeleteConfig', [0,0,0,0,0,0,0,0,0,1,32,5,1,0]),
+        ]),
+}
+
+BINS_RANGES = {
+    '0.0001-100'    : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,
+                        25, 50, 75, 100, 200],
+    '0.0001-1'      : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1],
+    '0.0001-0.25'   : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25],
+    '0.001-100'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200],
+    '0.001-7.5'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10],
+    '0.01-5'        : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5],
+}
+
+# plot the cumulative histogram
+fig, ax = plt.subplots(figsize=(8, 8))
+
+bins = PLOTS[plot_name][1]
+if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]]
+bins = np.array(bins).astype(float)
+
+for label, counts in PLOTS[plot_name][2]:
+    counts = np.array(counts).astype(float)
+    assert len(bins) == len(counts) + 1
+    centroids = (bins[1:] + bins[:-1]) / 2
+    ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True,
+            histtype='step', cumulative=True, label=label)
+
+ax.grid(True)
+ax.legend(loc='upper left')
+ax.set_title(PLOTS[plot_name][0])
+ax.set_xlabel('seconds')
+ax.set_ylabel('Likelihood of occurrence')
+plt.xscale('log')
+plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) 
+plt.show()
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png
new file mode 100644
index 0000000000000000000000000000000000000000..84ab8747e2a6ca5153e4b6e02483030ab891a421
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png
new file mode 100644
index 0000000000000000000000000000000000000000..d37827794618024ddaa553de8d2134b455aa31a0
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png
new file mode 100644
index 0000000000000000000000000000000000000000..70b51e144e259191d9d174abfebd5a6ff3a52e57
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png
new file mode 100644
index 0000000000000000000000000000000000000000..af84e7e9d5866671e9441c1a93b9d2a66a9218c9
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e58fcbb8d8a25c7bbbd2094a28dad419afbeb02
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png
new file mode 100644
index 0000000000000000000000000000000000000000..317af9ca13267f313cab9e6d67a3ba068a3993a4
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png
new file mode 100644
index 0000000000000000000000000000000000000000..764b4f6cc64db88512b449e91b2ff31d6b260f91
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..4caa6681993a1850c9e561fed300a16a0d333a87
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..188d784b68cbc1abb2ea90eaa305863b36cb838a
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc3b5ea36e7a278b670699baf7fddf12447510dc
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..74e639b85b70d35c2f0830aa837497646d6b3666
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..4060b8ae9b9d2a901b8d0cc2b009ce888f34fab9
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..aae9d07ef4420e53ee4ba3d715f5bf37eae924dd
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b6e4d2a47d09f884a1c6e95e5ae27c4df56d55a
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..70182fad226d4a387a13991cfba80a6cbd7d57fe
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..dae5e567c7395d5e6972a55b5e7053a551da624f
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c48c875f19b3a49238ee473bc265b9358cfbf6a
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c50e199195dec26ac29abf6901103d66d3bca33
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png
new file mode 100644
index 0000000000000000000000000000000000000000..1292bc5e717634807ce835d481bd08424ef19f2b
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png
new file mode 100644
index 0000000000000000000000000000000000000000..403baefa0ccd07a70c7fd08db964ae30c3a56301
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c45a0ddf886369fc50a828ded57c26ac6691634
Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png differ
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/generate.sh b/src/common/method_wrappers/results-perf-eval/emulated/generate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f7ed1e31f0382ce1f3b1c89e1ab7de465692614c
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/emulated/generate.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L2NM"
+#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L3NM"
+python generate_plot.py "EXP1_DEVICE_DRIVER_TAPI"
+#python generate_plot.py "EXP2_DEVICE_DRIVER_EMU"
+
+# ----- All ------------------------------------------------------------
+#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L2NM"
+#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L3NM"
+#python generate_plot.py "EXP1_DEVICE_DRIVER_TAPI"
+#python generate_plot.py "EXP1_SERVICE_HANDLER_EMU_L2NM"
+#python generate_plot.py "EXP1_SERVICE_HANDLER_EMU_L3NM"
+#python generate_plot.py "EXP1_SERVICE_HANDLER_TAPI"
+#python generate_plot.py "EXP1_COMP_PATHCOMP_RPC_COMPUTE"
+#python generate_plot.py "EXP2_DEVICE_DRIVER_EMU"
+#python generate_plot.py "EXP2_SERVICE_HANDLER_EMU_L2NM"
+#python generate_plot.py "EXP2_SERVICE_HANDLER_EMU_L3NM"
+#python generate_plot.py "EXP2_COMP_CONTEXT_DEVICE_RPCS"
+#python generate_plot.py "EXP2_COMP_CONTEXT_LINK_RPCS"
+#python generate_plot.py "EXP2_COMP_CONTEXT_SERVICE_RPCS"
+#python generate_plot.py "EXP2_COMP_CONTEXT_SLICE_RPCS"
+#python generate_plot.py "EXP2_COMP_CONTEXT_TOPOLOGY_RPCS"
+#python generate_plot.py "EXP2_COMP_CONTEXT_CONNECTION_RPCS"
+#python generate_plot.py "EXP2_COMP_DEVICE_RPCS"
+#python generate_plot.py "EXP2_COMP_SERVICE_RPCS"
+#python generate_plot.py "EXP2_COMP_SLICE_RPCS"
+#python generate_plot.py "EXP2_COMP_PATHCOMP_RPCS"
+#python generate_plot.py "EXP2_COMP_DLT_RPCS"
diff --git a/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py b/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py
new file mode 100644
index 0000000000000000000000000000000000000000..74ae49c26b56cae22d812496633a96ea1b595405
--- /dev/null
+++ b/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py
@@ -0,0 +1,219 @@
+import enum, sys
+import numpy as np
+import matplotlib.pyplot as plt
+
+class PlotName(enum.Enum):
+    EXP1_DEVICE_DRIVER_EMU_L2NM       = 'exp1-dev-drv-emu-l2nm'
+    EXP1_DEVICE_DRIVER_EMU_L3NM       = 'exp1-dev-drv-emu-l3nm'
+    EXP1_DEVICE_DRIVER_TAPI           = 'exp1-dev-drv-tapi'
+    EXP1_SERVICE_HANDLER_EMU_L2NM     = 'exp1-svc-hdl-l2nm-emu'
+    EXP1_SERVICE_HANDLER_EMU_L3NM     = 'exp1-svc-hdl-l3nm-emu'
+    EXP1_SERVICE_HANDLER_TAPI         = 'exp1-svc-hdl-tapi'
+    EXP1_COMP_PATHCOMP_RPC_COMPUTE    = 'exp1-pathcomp-rpc-compute'
+
+    EXP2_DEVICE_DRIVER_EMU            = 'exp2-device-driver-emu'
+    EXP2_SERVICE_HANDLER_EMU_L2NM     = 'exp2-svc-hdl-l2nm-emu'
+    EXP2_SERVICE_HANDLER_EMU_L3NM     = 'exp2-svc-hdl-l3nm-emu'
+
+    EXP2_COMP_CONTEXT_DEVICE_RPCS     = 'exp2-context-device-rpcs'
+    EXP2_COMP_CONTEXT_LINK_RPCS       = 'exp2-context-link-rpcs'
+    EXP2_COMP_CONTEXT_SERVICE_RPCS    = 'exp2-context-service-rpcs'
+    EXP2_COMP_CONTEXT_SLICE_RPCS      = 'exp2-context-slice-rpcs'
+    EXP2_COMP_CONTEXT_TOPOLOGY_RPCS   = 'exp2-context-topology-rpcs'
+    EXP2_COMP_CONTEXT_CONNECTION_RPCS = 'exp2-context-connection-rpcs'
+    EXP2_COMP_DEVICE_RPCS             = 'exp2-device-rpcs'
+    EXP2_COMP_SERVICE_RPCS            = 'exp2-service-rpcs'
+    EXP2_COMP_SLICE_RPCS              = 'exp2-slice-rpcs'
+    EXP2_COMP_PATHCOMP_RPCS           = 'exp2-pathcomp-rpcs'
+    EXP2_COMP_DLT_RPCS                = 'exp2-dlt-rpcs'
+
+plot_name = PlotName.__members__.get(sys.argv[1])
+if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name)))
+
+PLOTS = {
+    PlotName.EXP1_DEVICE_DRIVER_EMU_L2NM: (
+        'Device Driver - Emulated (using L2NM services)', '0.0001-1', [
+            ('GetConfig',    [0,27,252,212,160,261,26,2,3,9,19,11,2,1,0,0,0]),
+            ('SetConfig',    [575,56,112,78,61,82,8,0,2,5,5,0,1,    0,0,0,0]),
+            ('DeleteConfig', [606,96,150,66,29,31,5,0,0,1,1,0,    0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP1_DEVICE_DRIVER_EMU_L3NM: (
+        'Device Driver - Emulated (using L3NM services)', '0.0001-1', [
+            ('GetConfig',    [0,1,40,83,127,460,132,24,13,39,36,31,9,5,1,0,0]),
+            ('SetConfig',    [487,29,110,52,55,171,48,6,6,15,12,8,0,1, 0,0,0]),
+            ('DeleteConfig', [510,86,79,43,26,120,70,20,6,9,15,8,5,3,  0,0,0]),
+        ]),
+
+    PlotName.EXP1_DEVICE_DRIVER_TAPI: (
+        #'Device Driver - TAPI', '0.0001-1', [
+        #    ('GetConfig',    [0,0,0,0,0,0,0,0,0,1,1,3,10,159,14, 0,0]),
+        #    ('SetConfig',    [92,3,1,0,0,0,0,6,11,47,13,13,0,0,0,0,0]),
+        #    ('DeleteConfig', [90,0,0,0,0,0,3,14,25,35,6,11,2,0,0,0,0]),
+        #]),
+        'Device Driver - TAPI', '0.0001-1', [
+            ('GetConfig',    [0,0,0,0,0,0,0,0,0,1,1,3,10,159,14, 0,0]),
+            ('SetConfig',    [0,0,0,0,0,0,0,6,11,47,13,13,0,0,0,0,0]),
+            ('DeleteConfig', [0,0,0,0,0,0,3,14,25,35,6,11,2,0,0,0,0]),
+        ]),
+
+    PlotName.EXP1_SERVICE_HANDLER_EMU_L2NM: (
+        'Service Handler - L2NM Emulated', '0.001-100', [
+            ('SetEndpoint',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,35,12,1,0]),
+            ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,3,29,45,7,0,0]),
+        ]),
+
+    PlotName.EXP1_SERVICE_HANDLER_EMU_L3NM: (
+        'Service Handler - L3NM Emulated', '0.001-100', [
+            ('SetEndpoint',    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,8,27,29,15,11]),
+            ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,6,22,29,18,11]),
+        ]),
+
+    PlotName.EXP1_SERVICE_HANDLER_TAPI: (
+        'Service Handler - TAPI', '0.001-100', [
+            ('SetEndpoint',    [0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,79,2,0,0,0,0]),
+            ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,5,0,3,1,73,12,0,0,0,0]),
+        ]),
+
+    PlotName.EXP1_COMP_PATHCOMP_RPC_COMPUTE: (
+        'PathComp - Compute RPC', '0.01-5', [
+            ('Compute (using L2NM services)', [0,0,20,32,14,22,0]),
+            ('Compute (using L3NM services)', [0,1,1,10,17,59,2]),
+            ('Compute (using TAPI services)', [3,70,10,3,2,6,0]),
+        ]),
+
+    PlotName.EXP2_DEVICE_DRIVER_EMU: (
+        'Device Driver - Emulated', '0.0001-0.25', [
+            ('GetConfig',    [0,21,198,247,190,332,28,5,3,7,14,8,0,0]),
+            ('SetConfig',    [558,61,139,85,57,117,22,1,2,4,1,5,1,0]),
+            ('DeleteConfig', [573,123,142,63,30,78,24,2,2,8,5,2,0,0]),
+        ]),
+
+    PlotName.EXP2_SERVICE_HANDLER_EMU_L2NM: (
+        'Service Handler - L2NM Emulated', '0.001-100', [
+            ('SetEndpoint',    [0,0,0,0,0,0,0,0,0,0,0,0,2,18,15,4,1,2,2,0,0,0]),
+            ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,1,0,20,20,5,1,0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_SERVICE_HANDLER_EMU_L3NM: (
+        'Service Handler - L3NM Emulated', '0.001-100', [
+            ('SetEndpoint',    [0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,2,5,4,1,0,0,0]),
+            ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,11,27,7,3,1,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_CONTEXT_DEVICE_RPCS: (
+        'Context RPCs', '0.001-7.5', [
+            ('GetDevice',        [0,0,0,0,6,130,348,305,382,578,76,7,6,0,0,0,0]),
+            ('ListDevices',      [0,0,0,0,0,0,0,0,0,4,37,43,8,2,0,0,0]),
+            ('SetDevice',        [0,0,0,0,0,42,236,158,179,380,46,9,0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_CONTEXT_LINK_RPCS: (
+        'Context RPCs', '0.001-7.5', [
+            ('GetLink',          [0,1,9,5,1,1,0,0,0,0,0,0,0,0,0,0,0]),
+            ('ListLinks',        [0,0,0,0,0,5,20,23,27,17,2,0,0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_CONTEXT_SERVICE_RPCS: (
+        'Context RPCs', '0.001-7.5', [
+            ('GetService',       [124,120,42,55,80,167,62,34,14,33,9,2,1,0,0,0,0]),
+            ('ListServices',     [0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0]),
+            ('RemoveService',    [0,0,3,18,15,29,13,5,1,4,1,0,0,0,0,0,0]),
+            ('SetService',       [6,90,59,51,63,165,70,32,5,12,8,2,0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_CONTEXT_SLICE_RPCS: (
+        'Context RPCs', '0.001-7.5', [
+            ('GetSlice',         [30,75,48,24,32,118,56,34,12,19,8,2,0,0,0,0,0]),
+            ('ListSlices',       [0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]),
+            ('RemoveSlice',      [0,0,2,10,8,14,8,2,1,2,0,0,0,0,0,0,0]),
+            ('SetSlice',         [6,29,22,18,21,70,25,12,11,13,1,0,0,0,0,0,0]),
+            ('UnsetSlice',       [0,12,12,8,1,3,6,3,1,2,0,0,0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_CONTEXT_TOPOLOGY_RPCS: (
+        'Context RPCs', '0.001-7.5', [
+            ('GetTopology',      [72,11,0,0,0,2,6,1,0,1,1,0,0,0,0,0,0]),
+            ('ListTopologies',   [0,0,0,0,5,38,25,10,6,10,0,0,0,0,0,0,0]),
+            ('ListTopologyIds',  [1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_CONTEXT_CONNECTION_RPCS: (
+        'Context RPCs', '0.001-7.5', [
+            ('ListConnections',  [13,21,5,19,23,145,46,27,10,15,4,2,0,1,0,0,0]),
+            ('ListContextIds',   [1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),
+            ('RemoveConnection', [0,0,17,17,12,23,11,2,2,6,0,0,0,0,0,0,0]),
+            ('SetConnection',    [0,0,17,26,9,18,4,7,2,5,4,2,0,0,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_DEVICE_RPCS: (
+        'Device RPCs', '0.001-7.5', [
+            ('AddDevice',       [0,0,0,0,0,0,0,1,2,4,0,0,0,0,0,0,0]),
+            ('ConfigureDevice', [0,0,0,0,0,0,0,0,2,140,367,243,127,143,19,9,5]),
+        ]),
+
+    PlotName.EXP2_COMP_SERVICE_RPCS: (
+        'Service RPCs', '0.001-7.5', [
+            ('CreateService',   [0,0,0,9,11,32,13,10,4,7,3,2,1,0,0,0,0]),
+            ('UpdateService',   [0,0,0,0,0,0,0,0,0,0,0,0,0,19,41,15,18]),
+            ('DeleteService',   [0,0,0,0,0,0,0,0,0,0,0,0,1,23,45,21,6]),
+        ]),
+
+    PlotName.EXP2_COMP_SLICE_RPCS: (
+        'Slice RPCs', '0.001-7.5', [
+            ('CreateSlice',     [0,0,0,0,0,4,5,4,10,11,6,2,1,0,0,0,0]),
+            ('UpdateSlice',     [0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,10,10]),
+            ('DeleteSice',      [0,0,0,0,0,0,0,0,0,0,0,0,0,9,21,15,2]),
+        ]),
+
+    PlotName.EXP2_COMP_PATHCOMP_RPCS: (
+        'PathComp RPCs', '0.001-7.5', [
+            ('Compute',         [0,0,0,0,0,0,0,0,0,0,13,43,22,14,0,0,0]),
+        ]),
+
+    PlotName.EXP2_COMP_DLT_RPCS: (
+        'DLT RPCs', '0.001-7.5', [
+            ('RecordDevice',    [0,0,0,0,0,0,0,1,4,5,6,6,0,26,71,94,306]),
+            ('RecordLink',      [0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0]),
+            ('RecordService',   [0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,30,184]),
+            ('RecordSlice',     [0,0,0,0,0,0,0,0,2,3,1,2,1,6,19,23,82]),
+        ]),
+}
+
+BINS_RANGES = {
+    '0.0001-100'    : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,
+                        25, 50, 75, 100, 200],
+    '0.0001-1'      : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1],
+    '0.0001-0.25'   : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075,
+                        0.01, 0.025, 0.05, 0.075, 0.1, 0.25],
+    '0.001-100'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200],
+    '0.001-7.5'     : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075,
+                        0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10],
+    '0.01-5'        : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5],
+}
+
+# plot the cumulative histogram
+fig, ax = plt.subplots(figsize=(8, 8))
+
+bins = PLOTS[plot_name][1]
+if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]]
+bins = np.array(bins).astype(float)
+
+for label, counts in PLOTS[plot_name][2]:
+    counts = np.array(counts).astype(float)
+    assert len(bins) == len(counts) + 1
+    centroids = (bins[1:] + bins[:-1]) / 2
+    ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True,
+            histtype='step', cumulative=True, label=label)
+
+ax.grid(True)
+ax.legend(loc='best')
+ax.set_title(PLOTS[plot_name][0])
+ax.set_xlabel('seconds')
+ax.set_ylabel('Likelihood of occurrence')
+plt.xscale('log')
+plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) 
+plt.show()