diff --git a/py-dashboard/GhostRequest.py b/py-dashboard/GhostRequest.py
index 9792b42a..7004d148 100644
--- a/py-dashboard/GhostRequest.py
+++ b/py-dashboard/GhostRequest.py
@@ -280,7 +280,7 @@ class GhostRequest:
         subtest_pass_fail = list()
         subtest_pass_total = 0
         subtest_fail_total = 0
-        test_tag = dict()
+        test_tag_1 = list()
         columns = ['test-rig', 'dut-hw-version', 'dut-sw-version',
                    'dut-model-num', 'dut-serial-num']
         duts = dict()
@@ -296,10 +296,7 @@ class GhostRequest:
                         duts[column] = column_data
                     except:
                         print('no column named %s' % column)
-                try:
-                    test_tag[test_id] = csvreader.get_column(df, 'test-tag')[0]
-                except:
-                    print('no test-id')
+                    test_tag_1.append([test_id, list(set(csvreader.get_column(df, 'test-tag')))])
                 pass_fail = Counter(csvreader.get_column(df, 'pass/fail'))
                 test_pass_fail.append(pass_fail)
                 subtest_pass = csvreader.get_column(df, 'Subtest-Pass')
@@ -387,17 +384,25 @@ class GhostRequest:
                         pass
 
                 low_priority = csvreader.filter_df(results, 'test-priority', 'less than', 94)
-                print('Low Priority results %s' % len(low_priority))
+                if self.debug:
+                    print('Low Priority results %s' % len(low_priority))
                 high_priority = csvreader.filter_df(results, 'test-priority', 'greater than or equal to', 95)
                 high_priority_list.append(high_priority)
                 low_priority_list.append(low_priority)
 
             except:
-                print("Failure")
+                print("Failed to process %s" % target_folder)
                 target_folders.remove(target_folder)
                 failuredict = dict()
                 failuredict[target_folder] = ['Failure']
                 web_pages_and_pdfs.append(failuredict)
+        test_tag = dict()
+        for x in list(set([x[0] for x in test_tag_1])):
+            l3 = list()
+            for sublist in test_tag_1:
+                if sublist[0] == x:
+                    l3 += sublist[1]
+            test_tag[x] = l3
         if len(times) == 0:
             return ArithmeticError("There are no datapoints in any folders passed into Ghost")
 
@@ -447,7 +452,8 @@ class GhostRequest:
             short_description = 'Tests passed'  # variable name
             numeric_score = test_pass_fail_results['PASS']  # value
             tags = dict()
-            print(datetime.utcfromtimestamp(max(times)))
+            if self.debug:
+                print(datetime.utcfromtimestamp(max(times)))
             tags['testbed'] = testbeds[0]
             tags['script'] = 'GhostRequest'
             tags['Graph-Group'] = 'PASS'
@@ -466,7 +472,8 @@ class GhostRequest:
             short_description = 'Subtests passed'  # variable name
             numeric_score = subtest_pass_fail_results['PASS']  # value
             tags = dict()
-            print(datetime.utcfromtimestamp(max(times)))
+            if self.debug:
+                print(datetime.utcfromtimestamp(max(times)))
             tags['testbed'] = testbeds[0]
             tags['script'] = 'GhostRequest'
             tags['Graph-Group'] = 'Subtest PASS'
@@ -483,11 +490,14 @@ class GhostRequest:
             influxdb.post_to_influx(short_description, numeric_score, tags, date)
 
         text = 'Testbed: %s
' % testbeds[0]
+        raw_test_tags = list()
         test_tag_table = ''
         for tag in list(set(test_tag.values())):
-            print(tag)
+            for value in tag:
+                raw_test_tags.append(value)
+        for value in list(set(raw_test_tags)):
             test_tag_table += (
-                    '
| Test Tag | %s | 
' % tag)
+                    '| Test Tag | %s | 
' % value)
         dut_table_column_names = {'test-rig': 'Testbed',
                                   'dut-hw-version': 'DUT HW',
                                   'dut-sw-version': 'DUT SW',
@@ -540,9 +550,11 @@ class GhostRequest:
         if grafana_token is not None:
             grafana = GrafanaRequest(grafana_token,
                                      grafana_host,
-                                     grafanajson_port=grafana_port
+                                     grafanajson_port=grafana_port,
+                                     debug_=self.debug
                                      )
-            print(test_tag)
+            if self.debug:
+                print('Test Tag: %s' % test_tag)
             grafana.create_custom_dashboard(target_csvs=target_files,
                                             title=title,
                                             datasource=grafana_datasource,
diff --git a/py-dashboard/GrafanaRequest.py b/py-dashboard/GrafanaRequest.py
index e132b7c1..5b577ff9 100644
--- a/py-dashboard/GrafanaRequest.py
+++ b/py-dashboard/GrafanaRequest.py
@@ -209,7 +209,7 @@ class GrafanaRequest:
                                 from_date='now-1y',
                                 to_date='now',
                                 graph_height=8,
-                                graph__width=12,
+                                graph_width=12,
                                 pass_fail=None,
                                 test_tag=None):
         options = string.ascii_lowercase + string.ascii_uppercase + string.digits
@@ -248,126 +248,37 @@ class GrafanaRequest:
         if pass_fail is not None:
             graph_groups[pass_fail] = ['PASS', 'FAIL']
 
+        print('Test Tag in Grafana: %s' % test_tag)
+
         for scriptname in graph_groups.keys():
             print(scriptname)
-            for graph_group in graph_groups[scriptname]:
-                panel = dict()
-
-                gridpos = dict()
-                gridpos['h'] = graph_height
-                gridpos['w'] = graph__width
-                gridpos['x'] = 0
-                gridpos['y'] = 0
-
-                legend = dict()
-                legend['avg'] = False
-                legend['current'] = False
-                legend['max'] = False
-                legend['min'] = False
-                legend['show'] = True
-                legend['total'] = False
-                legend['values'] = False
-
-                options = dict()
-                options['alertThreshold'] = True
-
-                groupBy = list()
-                groupBy.append(self.groupby('$__interval', 'time'))
-                groupBy.append(self.groupby('null', 'fill'))
-
-                targets = list()
-                counter = 0
-                try:
-                    new_target = self.maketargets(bucket,
-                                                  scriptname,
-                                                  groupBy,
-                                                  counter,
-                                                  graph_group,
-                                                  testbed,
-                                                  test_tag=test_tag[scriptname])
-                except:
-                    new_target = self.maketargets(bucket, scriptname, groupBy, counter, graph_group, testbed)
-                targets.append(new_target)
-
-                fieldConfig = dict()
-                fieldConfig['defaults'] = dict()
-                fieldConfig['overrides'] = list()
-
-                transformation = dict()
-                transformation['id'] = "renameByRegex"
-                transformation_options = dict()
-                transformation_options['regex'] = "(.*) value.*"
-                transformation_options['renamePattern'] = "$1"
-                transformation['options'] = transformation_options
-
-                xaxis = dict()
-                xaxis['buckets'] = None
-                xaxis['mode'] = "time"
-                xaxis['name'] = None
-                xaxis['show'] = True
-                xaxis['values'] = list()
-
-                yaxis = dict()
-                yaxis['format'] = 'short'
-                try:
-                    yaxis['label'] = self.units[scriptname][graph_group]
-                except:
-                    pass
-                yaxis['logBase'] = 1
-                yaxis['max'] = None
-                yaxis['min'] = None
-                yaxis['show'] = True
-
-                yaxis1 = dict()
-                yaxis1['align'] = False
-                yaxis1['alignLevel'] = None
-
-                panel['aliasColors'] = dict()
-                panel['bars'] = False
-                panel['dashes'] = False
-                panel['dashLength'] = 10
-                panel['datasource'] = datasource
-                panel['fieldConfig'] = fieldConfig
-                panel['fill'] = 0
-                panel['fillGradient'] = 0
-                panel['gridPos'] = gridpos
-                panel['hiddenSeries'] = False
-                panel['id'] = index
-                panel['legend'] = legend
-                panel['lines'] = True
-                panel['linewidth'] = 1
-                panel['nullPointMode'] = 'null'
-                panel['options'] = options
-                panel['percentage'] = False
-                panel['pluginVersion'] = '7.5.4'
-                panel['pointradius'] = 2
-                panel['points'] = True
-                panel['renderer'] = 'flot'
-                panel['seriesOverrides'] = list()
-                panel['spaceLength'] = 10
-                panel['stack'] = False
-                panel['steppedLine'] = False
-                panel['targets'] = targets
-                panel['thresholds'] = list()
-                panel['timeFrom'] = None
-                panel['timeRegions'] = list()
-                panel['timeShift'] = None
-                if graph_group is not None:
-                    panel['title'] = scriptname + ' ' + graph_group
-                else:
-                    panel['title'] = scriptname
-                print(panel['title'])
-                panel['transformations'] = list()
-                panel['transformations'].append(transformation)
-                panel['type'] = "graph"
-                panel['xaxis'] = xaxis
-                panel['yaxes'] = list()
-                panel['yaxes'].append(yaxis)
-                panel['yaxes'].append(yaxis)
-                panel['yaxis'] = yaxis1
-
+            if scriptname in test_tag.keys():
+                for tag in test_tag[scriptname]:
+                    print('Script: %s, Tag: %s' % (scriptname, tag))
+                    panel = self.create_panel(graph_groups,
+                                              graph_height,
+                                              graph_width,
+                                              scriptname,
+                                              bucket,
+                                              testbed,
+                                              tag,
+                                              datasource,
+                                              index)
+                    panels.append(panel)
+                    index = index + 1
+            else:
+                panel = self.create_panel(graph_groups,
+                                          graph_height,
+                                          graph_width,
+                                          scriptname,
+                                          bucket,
+                                          testbed,
+                                          None,
+                                          datasource,
+                                          index)
                 panels.append(panel)
                 index = index + 1
+
         input1['annotations'] = annot
         input1['editable'] = True
         input1['gnetId'] = None
@@ -387,10 +298,138 @@ class GrafanaRequest:
         input1['version'] = 11
         return self.create_dashboard_from_dict(dictionary=json.dumps(input1))
 
-    #    def create_custom_dashboard(self,
-    #                               datastore=None):
-    #      data = json.dumps(datastore, indent=4)
-    #     return requests.post(self.grafanajson_url, headers=self.headers, data=data, verify=False)
+    def create_panel(self,
+                     graph_groups,
+                     graph_height,
+                     graph_width,
+                     scriptname,
+                     bucket,
+                     testbed,
+                     test_tag,
+                     datasource,
+                     index):
+        print('Test Tag: %s' % test_tag)
+        for graph_group in graph_groups[scriptname]:
+            panel = dict()
+
+            gridpos = dict()
+            gridpos['h'] = graph_height
+            gridpos['w'] = graph_width
+            gridpos['x'] = 0
+            gridpos['y'] = 0
+
+            legend = dict()
+            legend['avg'] = False
+            legend['current'] = False
+            legend['max'] = False
+            legend['min'] = False
+            legend['show'] = True
+            legend['total'] = False
+            legend['values'] = False
+
+            options = dict()
+            options['alertThreshold'] = True
+
+            groupBy = list()
+            groupBy.append(self.groupby('$__interval', 'time'))
+            groupBy.append(self.groupby('null', 'fill'))
+
+            targets = list()
+            counter = 0
+            try:
+                new_target = self.maketargets(bucket,
+                                              scriptname,
+                                              groupBy,
+                                              counter,
+                                              graph_group,
+                                              testbed,
+                                              test_tag=test_tag)
+            except:
+                new_target = self.maketargets(bucket, scriptname, groupBy, counter, graph_group, testbed)
+            targets.append(new_target)
+
+            fieldConfig = dict()
+            fieldConfig['defaults'] = dict()
+            fieldConfig['overrides'] = list()
+
+            transformation = dict()
+            transformation['id'] = "renameByRegex"
+            transformation_options = dict()
+            transformation_options['regex'] = "(.*) value.*"
+            transformation_options['renamePattern'] = "$1"
+            transformation['options'] = transformation_options
+
+            xaxis = dict()
+            xaxis['buckets'] = None
+            xaxis['mode'] = "time"
+            xaxis['name'] = None
+            xaxis['show'] = True
+            xaxis['values'] = list()
+
+            yaxis = dict()
+            yaxis['format'] = 'short'
+            try:
+                yaxis['label'] = self.units[scriptname][graph_group]
+            except:
+                pass
+            yaxis['logBase'] = 1
+            yaxis['max'] = None
+            yaxis['min'] = None
+            yaxis['show'] = True
+
+            yaxis1 = dict()
+            yaxis1['align'] = False
+            yaxis1['alignLevel'] = None
+
+            panel['aliasColors'] = dict()
+            panel['bars'] = False
+            panel['dashes'] = False
+            panel['dashLength'] = 10
+            panel['datasource'] = datasource
+            panel['fieldConfig'] = fieldConfig
+            panel['fill'] = 0
+            panel['fillGradient'] = 0
+            panel['gridPos'] = gridpos
+            panel['hiddenSeries'] = False
+            panel['id'] = index
+            panel['legend'] = legend
+            panel['lines'] = True
+            panel['linewidth'] = 1
+            panel['nullPointMode'] = 'null'
+            panel['options'] = options
+            panel['percentage'] = False
+            panel['pluginVersion'] = '7.5.4'
+            panel['pointradius'] = 2
+            panel['points'] = True
+            panel['renderer'] = 'flot'
+            panel['seriesOverrides'] = list()
+            panel['spaceLength'] = 10
+            panel['stack'] = False
+            panel['steppedLine'] = False
+            panel['targets'] = targets
+            panel['thresholds'] = list()
+            panel['timeFrom'] = None
+            panel['timeRegions'] = list()
+            panel['timeShift'] = None
+
+            if graph_group is not None:
+                scriptname = '%s: %s' % (scriptname, graph_group)
+            if test_tag is not None:
+                scriptname = '%s: %s' % (scriptname, test_tag)
+            scriptname = '%s: %s' % (scriptname, testbed)
+            panel['title'] = scriptname
+
+            if self.debug:
+                print(panel['title'])
+            panel['transformations'] = list()
+            panel['transformations'].append(transformation)
+            panel['type'] = "graph"
+            panel['xaxis'] = xaxis
+            panel['yaxes'] = list()
+            panel['yaxes'].append(yaxis)
+            panel['yaxes'].append(yaxis)
+            panel['yaxis'] = yaxis1
+            return panel
 
     def create_snapshot(self, title):
         print('create snapshot')
@@ -427,4 +466,4 @@ class GrafanaRequest:
         d = dict()
         d[maxunit] = maxtest
         print(maxunit, maxtest)
-        return d
+        return d
\ No newline at end of file