diff --git a/hp4194/cv_qt_inteface.py b/hp4194/cv_qt_inteface.py
index 81758a5018a9c231aa3515b7627a9399b6007092..7cdd6fe06e3d979835e3667ef56b792be7d8a69b 100644
--- a/hp4194/cv_qt_inteface.py
+++ b/hp4194/cv_qt_inteface.py
@@ -8,6 +8,7 @@ from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
 from matplotlib.figure import Figure
 import random
 from PyQt6.QtGui import QAction
+from PyQt6.QtCore import *
 import time
 
 class MplCanvas(FigureCanvasQTAgg):
@@ -16,24 +17,30 @@ class MplCanvas(FigureCanvasQTAgg):
         self.axes = fig.subplots(nrows=2,ncols=3)
         super().__init__(fig)
 
-class Worker(Qobject):
-    finished = pyqtSignal()
-    progress = pyqtSignal(int)
+class Worker(QRunnable):
+    def __init__(self, window):
+        super().__init__()
+        self.window = window
+
 
-    def run():
+    @pyqtSlot()
+    def run(self):
+        self.window.widget.setEnabled(False)
+        self.window.toolbar.setEnabled(False)
         for i in range(20):
-            self.xdata = list(range(20))
+            self.window.xdata = list(range(20))
             for i in range(2):
                 for j in range(3):
-                    self.sc.axes[i,j].cla()  # Clear the canvas.
-                    self.sc.axes[i,j].plot(self.xdata,random.sample(range(50),20))  
+                    self.window.sc.axes[i,j].cla()  # Clear the canvas.
+                    self.window.sc.axes[i,j].plot(self.window.xdata,random.sample(range(50),20))  
 
             # Trigger the canvas to update and redraw.
-            self.sc.draw_idle()
+            self.window.sc.draw_idle()
             time.sleep(1)
+        self.window.widget.setEnabled(True)
+        self.window.toolbar.setEnabled(True)
+        self.data = 1
 
-            print("finished")
-      
 
 
 class MainWinow(QMainWindow):
@@ -233,28 +240,14 @@ class MainWinow(QMainWindow):
         self.setCentralWidget(self.widget)
         self.showMaximized()
 
-    def toolbar_button_clicked(self):
-        self.widget.setEnabled(False)
-        self.toolbar.setEnabled(False)
-        
-        # Step 2: Create a QThread object
-        self.thread = QThread()
-        # Step 3: Create a worker object
-        self.worker = Worker()
-        # Step 4: Move worker to the thread
-        self.worker.moveToThread(self.thread)
-        # Step 5: Connect signals and slots
-        self.thread.started.connect(self.worker.run)
-        self.worker.finished.connect(self.thread.quit)
-        self.worker.finished.connect(self.worker.deleteLater)
-        self.thread.finished.connect(self.thread.deleteLater)
-        self.worker.progress.connect(self.reportProgress)
-        # Step 6: Start the thread
-        self.thread.start()
+        self.threadpool = QThreadPool()
+        print("Multithreading with maximum %d threads" % self.threadpool.maxThreadCount())
 
-        
-        self.widget.setEnabled(True)
-        self.toolbar.setEnabled(True)
+    def toolbar_button_clicked(self):    
+        self.worker = Worker(self)
+        self.threadpool.start(self.worker)
+
+    
         
 
 app= QApplication(sys.argv)