diff --git a/src/gui/peptide_detail_view/peptidewindow.cpp b/src/gui/peptide_detail_view/peptidewindow.cpp
index 0329c2b5ad9a998b78113d11f091db7ae1c2d13e..3ad3896667156a6aa4a6b0e1bb5fd0400472a18c 100644
--- a/src/gui/peptide_detail_view/peptidewindow.cpp
+++ b/src/gui/peptide_detail_view/peptidewindow.cpp
@@ -165,6 +165,9 @@ PeptideWindow::PeptideWindow(ProjectWindow *parent)
 
 PeptideWindow::~PeptideWindow()
 {
+
+  _spectrum_loader_thread.quit();
+  _spectrum_loader_thread.wait();
   delete ui;
 }
 
diff --git a/src/gui/workerthread.h b/src/gui/workerthread.h
index 60168b5660f1d59b3a1f976cc33f98ddce7bc7c8..309a35dc0705d25550c1592ef1cd797f6c4fc73e 100644
--- a/src/gui/workerthread.h
+++ b/src/gui/workerthread.h
@@ -48,7 +48,7 @@ class WorkerThread : public QObject
   public:
   WorkerThread(MainWindow *parent);
   WorkerThread(ProjectWindow *parent);
-  ~WorkerThread();
+  virtual ~WorkerThread();
 
 
   protected:
diff --git a/src/gui/xic_view/xic_box/xicbox.cpp b/src/gui/xic_view/xic_box/xicbox.cpp
index 3fba0015823d580f69f774d0e4ae6a33058f0c6c..c29b982356757cf705f0b4bd92c8e925eb74f541 100644
--- a/src/gui/xic_view/xic_box/xicbox.cpp
+++ b/src/gui/xic_view/xic_box/xicbox.cpp
@@ -114,7 +114,7 @@ XicBox::XicBox(XicWindow *parent) : QWidget(parent), ui(new Ui::XicBox)
   _p_xic_window = parent;
   ui->setupUi(this);
 
-  XicWorkerThread *p_worker = new XicWorkerThread();
+  XicWorkerThread *p_worker = new XicWorkerThread(this);
   p_worker->moveToThread(&_xic_thread);
   _xic_thread.start();
 
@@ -139,19 +139,29 @@ XicBox::XicBox(XicWindow *parent) : QWidget(parent), ui(new Ui::XicBox)
   connect(p_worker, &XicWorkerThread::operationFailed, this, &XicBox::error);
 
 
-  connect(this, &XicBox::computeIsotopeMassList, p_worker,
+  connect(this,
+          &XicBox::computeIsotopeMassList,
+          p_worker,
           &XicWorkerThread::doComputeIsotopeMassList);
-  connect(p_worker, &XicWorkerThread::isotopeMassListComputed, this,
+  connect(p_worker,
+          &XicWorkerThread::isotopeMassListComputed,
+          this,
           &XicBox::setIsotopeMassList);
 
-  connect(_p_xic_window, &XicWindow::reExtractXicNeeded, this,
-          &XicBox::reExtractXic);
-  connect(ui->xic_widget, &pappso::XicWidget::xicPeakListChanged, this,
+  connect(
+    _p_xic_window, &XicWindow::reExtractXicNeeded, this, &XicBox::reExtractXic);
+  connect(ui->xic_widget,
+          &pappso::XicWidget::xicPeakListChanged,
+          this,
           &XicBox::setXicPeakList);
-  connect(ui->xic_widget, &pappso::XicWidget::clicked, this,
+  connect(ui->xic_widget,
+          &pappso::XicWidget::clicked,
+          this,
           &XicBox::onXicWidgetClick);
 
-  connect(_p_xic_window, &XicWindow::rtUnitChangeNeeded, this,
+  connect(_p_xic_window,
+          &XicWindow::rtUnitChangeNeeded,
+          this,
           &XicBox::onRtUnitChanged);
 #else
 // Qt4 code
@@ -259,13 +269,15 @@ XicBox::setPeptideEvidence(const PeptideEvidence *p_peptide_evidence)
   _p_xic_window->getProjectWindow()
     ->getProjectP()
     ->getSameXicPeptideEvidenceList(
-      _peptide_evidence_list, _msrun_sp.get(),
+      _peptide_evidence_list,
+      _msrun_sp.get(),
       _p_peptide_evidence->getPeptideXtpSp().get(),
       _p_peptide_evidence->getCharge());
 
   emit computeIsotopeMassList(_p_peptide_evidence->getPeptideXtpSp(),
                               _p_peptide_evidence->getCharge(),
-                              _p_xic_window->getXicExtractPrecision(), 0.8);
+                              _p_xic_window->getXicExtractPrecision(),
+                              0.8);
 }
 
 void
@@ -290,7 +302,8 @@ XicBox::setPeptideEvidenceInMsRun(const PeptideEvidence *p_peptide_evidence,
   _p_xic_window->getProjectWindow()
     ->getProjectP()
     ->getSameXicPeptideEvidenceList(
-      _peptide_evidence_list, _msrun_sp.get(),
+      _peptide_evidence_list,
+      _msrun_sp.get(),
       _p_peptide_evidence->getPeptideXtpSp().get(),
       _p_peptide_evidence->getCharge());
   //_p_xic_window->getProjectWindow()->getProjectP()->getSameXicPeptideEvidenceList(p_peptide_evidence,
@@ -298,7 +311,8 @@ XicBox::setPeptideEvidenceInMsRun(const PeptideEvidence *p_peptide_evidence,
 
   emit computeIsotopeMassList(_p_peptide_evidence->getPeptideXtpSp(),
                               _p_peptide_evidence->getCharge(),
-                              _p_xic_window->getXicExtractPrecision(), 0.8);
+                              _p_xic_window->getXicExtractPrecision(),
+                              0.8);
 }
 
 void
@@ -491,7 +505,9 @@ XicBox::setIsotopeMassList(
         {nullptr, natural_isotope_average, nullptr, nullptr});
     }
 
-  emit loadXic(_msrun_sp, mass_list, _p_xic_window->getXicExtractPrecision(),
+  emit loadXic(_msrun_sp,
+               mass_list,
+               _p_xic_window->getXicExtractPrecision(),
                pappso::XicExtractMethod::max);
 
   // histogram
@@ -565,7 +581,9 @@ XicBox::reExtractXic()
       mass_list.push_back(
         xic_isotope.peptide_natural_isotope_sp.get()->getMz());
     }
-  emit loadXic(_msrun_sp, mass_list, _p_xic_window->getXicExtractPrecision(),
+  emit loadXic(_msrun_sp,
+               mass_list,
+               _p_xic_window->getXicExtractPrecision(),
                pappso::XicExtractMethod::max);
   qDebug() << "XicBox::reExtractXic end";
 }
diff --git a/src/gui/xic_view/xicworkerthread.cpp b/src/gui/xic_view/xicworkerthread.cpp
index 98bc2111665d7d6dde1c7e4dbdfe8e086fa4a7ae..9039b5eba78854cc9dff7c1d176911786dfe31f1 100644
--- a/src/gui/xic_view/xicworkerthread.cpp
+++ b/src/gui/xic_view/xicworkerthread.cpp
@@ -34,8 +34,15 @@
 #include <pappsomspp/exception/exceptionnotfound.h>
 #include <QDebug>
 
+XicWorkerThread::XicWorkerThread(XicBox *parent)
+{
+}
+XicWorkerThread::~XicWorkerThread()
+{
+}
 void
-XicWorkerThread::doXicLoad(MsRunSp p_msrun, std::vector<pappso::mz> mz_list,
+XicWorkerThread::doXicLoad(MsRunSp p_msrun,
+                           std::vector<pappso::mz> mz_list,
                            pappso::PrecisionP precision,
                            pappso::XicExtractMethod method)
 {
@@ -91,7 +98,8 @@ XicWorkerThread::doComputeIsotopeMassList(pappso::PeptideSp peptide_sp,
       isotope_mass_list = isotope_list.getByIntensityRatio(
         charge, precision, minimum_isotope_pattern_ratio);
 
-      std::sort(isotope_mass_list.begin(), isotope_mass_list.end(),
+      std::sort(isotope_mass_list.begin(),
+                isotope_mass_list.end(),
                 [](const pappso::PeptideNaturalIsotopeAverageSp &m,
                    const pappso::PeptideNaturalIsotopeAverageSp &n) -> bool {
                   unsigned int mn(m.get()->getIsotopeNumber()),
diff --git a/src/gui/xic_view/xicworkerthread.h b/src/gui/xic_view/xicworkerthread.h
index ec0428b4f40a98603a4a05c784e13863aac5ac2b..66081f2a3d21771bb9b35eafdbf4286baa4057d5 100644
--- a/src/gui/xic_view/xicworkerthread.h
+++ b/src/gui/xic_view/xicworkerthread.h
@@ -35,11 +35,13 @@
 #include "../../core/msrun.h"
 #include <pappsomspp/xic/xic.h>
 #include <pappsomspp/xicextractor/msrunxicextractor.h>
-
+#include "xic_box/xicbox.h"
 class XicWorkerThread : public QObject
 {
   Q_OBJECT
   public:
+  XicWorkerThread(XicBox *parent);
+  virtual ~XicWorkerThread();
   public slots:
   void doXicLoad(MsRunSp p_msrun, std::vector<pappso::mz> mz_list,
                  pappso::PrecisionP precision, pappso::XicExtractMethod method);
diff --git a/src/input/mascot/mascotdatparser.h b/src/input/mascot/mascotdatparser.h
index e9cc45faefdc21c4d27d141496544dd0f6bbb55e..d34368738e1a5130f6a14205393e8c6a760f7742 100644
--- a/src/input/mascot/mascotdatparser.h
+++ b/src/input/mascot/mascotdatparser.h
@@ -113,7 +113,7 @@ class MascotDatParser
   unsigned int _number_of_residues = 0;
   QString _error_str;
   bool _is_decoy_section             = false;
-  bool _take_only_first_peptide_rank = true;
+  bool _take_only_first_peptide_rank = false;
 
   PeptideLine _current_peptide;
   QueryLine _current_query;