add SwingWorker to handle threads