diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py
index 7b6b8cd7ded0ea732193ed687dd4238e3816cdb1..7f1dfa957ed551d6ef5f24f06823c826d9e19c39 100644
--- a/Ccs/ccs_function_lib.py
+++ b/Ccs/ccs_function_lib.py
@@ -6506,190 +6506,6 @@ class LoadInfo(Gtk.Window):
             print(err)
 
 
-class TestReport:
-    """
-    Provides functions for interactive test reporting
-    """
-    def __init__(self, filename, version, idb_version, gui=False, delimiter='|'):
-        super(TestReport, self).__init__()
-        self.specfile = filename
-        self.delimiter = delimiter
-        self.gui = gui
-        self.report = dict()
-
-        self.version = int(version)
-        self.idb_version = str(idb_version)
-
-        self.step_rowid = dict()
-        self._read_test_spec(filename)
-
-        self.testname = self.report[1][0]
-
-    def _read_test_spec(self, filename):
-        with open(filename, 'r') as fd:
-            csv = fd.readlines()
-
-        for i, line in enumerate(csv):
-            items = line.strip().split(self.delimiter)
-            self.report[i] = items
-            if items[0].startswith('Step '):
-                self.step_rowid[items[0]] = i
-
-    def execute_step(self, step, ask=True):
-        """
-
-        :param step:
-        :param ask:
-        :return:
-        """
-        if not ask:
-            return
-
-        try:
-            exe_msg = '{}:\n{}'.format(step.upper(), self.report[self.step_rowid[str(step)]][1])
-            if self.gui:
-                dialog = TestExecGUI(self.report[1][0], exe_msg)
-                response = dialog.run()
-
-                if response == Gtk.ResponseType.YES:
-                    dialog.destroy()
-                    execute = True
-                else:
-                    dialog.destroy()
-                    execute = False
-
-            else:
-                execute = input(exe_msg + ':\n(y/n)? > ')
-                while execute.lower() not in ('y', 'yes', 'n', 'no'):
-                    execute = input(exe_msg + ':\n(y/n)? > ')
-
-                if execute in ('y', 'yes'):
-                    execute = True
-                else:
-                    execute = False
-
-            if execute:
-                return
-            else:
-                pass  # TODO: abort step execution
-
-        except KeyError:
-            logger.error('"{}": no such step defined!'.format(str(step)))
-            return
-
-    def verify_step(self, step):
-        """
-
-        :param step:
-        :return:
-        """
-        try:
-            ver_msg = '{}:\n{}'.format(step.upper(), self.report[self.step_rowid[str(step)]][2])
-            if self.gui:
-                dialog = TestReportGUI(self.report[1][0], ver_msg)
-                response = dialog.run()
-
-                if response == Gtk.ResponseType.YES:
-                    result = 'OK'
-                    comment = dialog.comment.get_text()
-                    dialog.destroy()
-                elif response == Gtk.ResponseType.NO:
-                    result = 'NOT_OK'
-                    comment = dialog.comment.get_text()
-                    dialog.destroy()
-                else:
-                    dialog.destroy()
-                    return
-
-                if comment:
-                    result += ' ({})'.format(comment)
-
-            else:
-                result = input(ver_msg + ':\n>')
-
-        except KeyError:
-            logger.error('"{}": no such step defined!'.format(str(step)))
-            return
-
-        self.report[self.step_rowid[str(step)]][3] = result
-
-    def export(self, reportdir=None, reportfile=None):
-        """
-
-        :param reportdir:
-        :param reportfile:
-        """
-        if reportfile is None:
-            if reportdir is None:
-                reportfile = self.specfile.replace('.csv_PIPE', '-TR-{:03d}.csv_PIPE'.format(self.version)).replace('/testspec/', '/testrep/')
-            else:
-                reportdir += '/' if not reportdir.endswith('/') else ''
-                reportfile = reportdir + self.specfile.split('/')[-1].replace('.csv_PIPE', '-TR-{:03d}.csv_PIPE'.format(self.version))
-
-        self.report[1][3] += ' TR-{:03d}, MIB v{}'.format(self.version, self.idb_version)
-        self.report[2][3] = time.strftime('%Y-%m-%d')
-
-        buf = '\n'.join([self.delimiter.join(self.report[line]) for line in range(len(self.report))])
-
-        Path(os.path.dirname(reportfile)).mkdir(parents=True, exist_ok=True)  # create directory if it does not exist
-
-        with open(reportfile, 'w') as fd:
-            fd.write(buf + '\n')
-        logger.info('Report written to {}.'.format(reportfile))
-        print('Report written to {}.'.format(reportfile))
-
-
-class TestReportGUI(Gtk.MessageDialog):
-    """
-    GUI for the TestReport class
-    """
-    def __init__(self, testlabel, message):
-        super(TestReportGUI, self).__init__(title=testlabel,
-                                            buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
-                                                     Gtk.STOCK_NO, Gtk.ResponseType.NO,
-                                                     Gtk.STOCK_YES, Gtk.ResponseType.YES,))
-
-        head, body = self.get_message_area().get_children()
-        head.set_text(message)
-
-        cancel, fail, verify = self.get_action_area().get_children()
-
-        cancel.get_child().get_child().get_children()[1].set_label('Skip')
-        fail.get_child().get_child().get_children()[1].set_label('FAILED')
-        verify.get_child().get_child().get_children()[1].set_label('VERIFIED')
-
-        self.comment = Gtk.Entry()
-        self.comment.set_placeholder_text('Optional comment')
-        self.get_message_area().add(self.comment)
-
-        verify.grab_focus()
-
-        self.show_all()
-
-
-class TestExecGUI(Gtk.MessageDialog):
-    """
-    Dialog window to confirm test step execution
-    """
-    def __init__(self, testlabel, message):
-        super(TestExecGUI, self).__init__(title=testlabel,
-                                          buttons=(# Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
-                                                   Gtk.STOCK_YES, Gtk.ResponseType.YES,))
-
-        head, body = self.get_message_area().get_children()
-        head.set_text(message)
-
-        # abort, exe = self.get_action_area().get_children()
-        exe, = self.get_action_area().get_children()
-
-        # abort.get_child().get_child().get_children()[1].set_label('ABORT')
-        exe.get_child().get_child().get_children()[1].set_label('EXECUTE')
-
-        exe.grab_focus()
-
-        self.show_all()
-
-
 class TmParameterDecoderDialog(Gtk.Dialog):
     """
     Interface to define custom paramters