diff --git a/src/gui/waiting_message_dialog/waitingmessagedialog.cpp b/src/gui/waiting_message_dialog/waitingmessagedialog.cpp
index 146785f5ff288614fdf573d6b965042198224d1c..87c1a57e783876d855d224f380477e7c2466b16a 100644
--- a/src/gui/waiting_message_dialog/waitingmessagedialog.cpp
+++ b/src/gui/waiting_message_dialog/waitingmessagedialog.cpp
@@ -57,6 +57,8 @@ WaitingMessageDialog::~WaitingMessageDialog()
 }
 
 void WaitingMessageDialog::message(const QString & message) {
+    
+    ui->progress_bar->setVisible(false);
     ui->message_label->setText(message);
 }
 
diff --git a/src/gui/workerthread.cpp b/src/gui/workerthread.cpp
index 8e179cd42315edd8c84e93b3dfdc748372db2672..66366919650e59533641882dd174aa5bd7a4274d 100644
--- a/src/gui/workerthread.cpp
+++ b/src/gui/workerthread.cpp
@@ -87,11 +87,19 @@ WorkerThread::WorkerThread(MainWindow * p_main_window)
 WorkerThread::WorkerThread(ProjectWindow * p_project_window)
 {
     qDebug() << "WorkerThread::WorkerThread begin ProjectWindow";
+       
+    _p_work_monitor = new WorkMonitor();
+
 #if QT_VERSION >= 0x050000
     // Qt5 code
 #else
 // Qt4 code
     qDebug() << "WorkerThread::WorkerThread Qt4 code";
+    
+        //worker message 
+    connect(_p_work_monitor, SIGNAL(workerMessage(QString)), p_project_window,SLOT(doDisplayLoadingMessage(QString)));
+    connect(_p_work_monitor, SIGNAL(workerMessage(QString, int)), p_project_window,SLOT(doDisplayLoadingMessage(QString, int)));
+
     connect(this, SIGNAL(loadingMessage(QString)), p_project_window,SLOT(doDisplayLoadingMessage(QString)));
     //grouping
     connect(p_project_window, SIGNAL(operateGrouping(ProjectSp)), this,SLOT(doGrouping(ProjectSp)));
@@ -259,9 +267,12 @@ void WorkerThread::doLoadingResults(bool is_individual, AutomaticFilterParameter
         ProjectSp project_sp = Project().makeProjectSp();
         project_sp.get()->setCombineMode(!is_individual);
 
+        _p_work_monitor->setProgressMaximumValue(file_list.size());
+        int i=0;
         for (QString filename : file_list) {
-            emit loadingMessage(tr("loading result file %1").arg(filename));
+            _p_work_monitor->message(tr("loading result file %1 (%2 on %3)").arg(filename).arg(i).arg(file_list.size()), i);
             project_sp.get()->readResultFile(filename);
+            i++;
         }
 
         emit loadingMessage(tr("filtering proteins"));
diff --git a/src/utils/workmonitor.cpp b/src/utils/workmonitor.cpp
index 2c3b80da5f323806db40f695ed42f75adcd67d42..366de85a805478c7cbe45cdd999d127a5c8849e4 100644
--- a/src/utils/workmonitor.cpp
+++ b/src/utils/workmonitor.cpp
@@ -31,6 +31,10 @@
 #include "workmonitor.h"
 #include <QDebug>
 
+WorkMonitor::WorkMonitor() {
+    _max_value = 100;
+    _timer_duration = 200;
+}
 void WorkMonitor::message(const QString & message) {
     if (_time.elapsed() > _timer_duration) {
         _time.currentTime();
@@ -38,9 +42,10 @@ void WorkMonitor::message(const QString & message) {
     }
 }
 void WorkMonitor::message(const QString & message, int value) {
-    qDebug() << "WorkMonitor::message " << value << " " << _max_value << " " << (value/_max_value)*100;
-    int percent = ((float)value/(float)_max_value)*(float)100;
+    //qDebug() << "WorkMonitor::message " << value << " " << _max_value << " " << (value/_max_value)*100;
     if (_time.elapsed() > _timer_duration) {
+        int percent = ((float)value/(float)_max_value)*(float)100;
+
         _time.restart();
         emit workerMessage(message,percent);
     }
diff --git a/src/utils/workmonitor.h b/src/utils/workmonitor.h
index 9442cebb9814dab48a927760067c5b997b65fb15..7455825e06f3fb9438ff4b3982a8016e23d8ab2c 100644
--- a/src/utils/workmonitor.h
+++ b/src/utils/workmonitor.h
@@ -46,6 +46,7 @@ class WorkMonitor: public QObject, public WorkMonitorInterface
 {
     Q_OBJECT
 public:
+    WorkMonitor();
     void message(const QString & message) override;
     void message(const QString & message, int value) override;
     void setProgressMaximumValue(int max_value) override;
@@ -56,8 +57,8 @@ public:
 
 private :
     QTime _time;
-    int _max_value = 100;
-    int _timer_duration = 500;
+    int _max_value;
+    int _timer_duration;
 };
 
 #endif // WORKMONITOR_H