diff --git a/src/core/identification_sources/identificationdatasource.cpp b/src/core/identification_sources/identificationdatasource.cpp
index 188c58c9a5426dae7373318f4c9a4f5cd9ef6ff0..49df2dfb711bcc69af392c6e8d4368dd0336e124 100644
--- a/src/core/identification_sources/identificationdatasource.cpp
+++ b/src/core/identification_sources/identificationdatasource.cpp
@@ -222,13 +222,15 @@ IdentificationDataSource::getMassSpectrumCstSPtr(unsigned int scan_number) const
 
   if(msrun_reader_sp == nullptr)
     {
-      if(_ms_run_sp.get()->findMsRunFile() == false)
+      msrun_reader_sp = _ms_run_sp.get()->findMsRunFile();
+      if(msrun_reader_sp == nullptr)
         {
           throw pappso::ExceptionNotFound(
             QObject::tr("mz data \"%1\" file not found")
               .arg(_ms_run_sp.get()->getFileName()));
         }
     }
+  qDebug();
   msrun_reader_sp = _ms_run_sp.get()->getMsRunReaderSPtr();
   if(msrun_reader_sp == nullptr)
     {
diff --git a/src/core/msrun.cpp b/src/core/msrun.cpp
index c7bb96aca846835bbdafdff35ff6deb0f1ef2d3c..6bb3f262aad6ca86345d6b2dcea4d1165d216e90 100644
--- a/src/core/msrun.cpp
+++ b/src/core/msrun.cpp
@@ -132,6 +132,10 @@ MsRun::getMsRunReaderSPtr()
             }
         }
     }
+  else
+    {
+      qDebug();
+    }
 
   return _msrun_reader_sp;
 }
@@ -167,23 +171,29 @@ MsRun::getMsRunStatistics(MsRunStatistics param) const
     }
 }
 
-bool
+pappso::MsRunReaderSPtr
 MsRun::findMsRunFile()
 {
   // first look at the file path :)
-  _msrun_reader_sp = getMsRunReaderSPtr();
-  if(_msrun_reader_sp != nullptr)
+  qDebug();
+  pappso::MsRunReaderSPtr msrun_reader_sp = getMsRunReaderSPtr();
+  if(msrun_reader_sp != nullptr)
     {
       QFileInfo real_file(this->getFileName());
       if(real_file.exists())
         {
-          return true;
+
+          qDebug();
+          freeMsRunReaderSp();
+          qDebug();
+          return msrun_reader_sp;
         }
       else
         {
-          _msrun_reader_sp = nullptr;
+          msrun_reader_sp = nullptr;
         }
     }
+  qDebug();
   QFileInfo file_original(this->getFileName());
   QString basename     = file_original.baseName();
   QString onlyfilename = file_original.fileName();
@@ -207,7 +217,7 @@ MsRun::findMsRunFile()
               this->setFileName(file.absoluteFilePath());
               try
                 {
-                  if(_msrun_reader_sp == nullptr)
+                  if(msrun_reader_sp == nullptr)
                     {
 
                       pappso::MsFileAccessor accessor(getFileName(), "");
@@ -217,14 +227,15 @@ MsRun::findMsRunFile()
                       qDebug()
                         << " runid=" << getRunId() << " xmlid=" << getXmlId();
 
-                      _msrun_reader_sp = accessor.getMsRunReaderSPtrByRunId(
+                      msrun_reader_sp = accessor.getMsRunReaderSPtrByRunId(
                         getRunId(), getXmlId());
-                      return true;
+
+                      freeMsRunReaderSp();
+                      return msrun_reader_sp;
                     }
                 }
               catch(pappso::PappsoException &error)
                 {
-                  _msrun_reader_sp = nullptr;
                 }
             }
           if((file.fileName().contains(onlyfilename)) ||
@@ -235,7 +246,7 @@ MsRun::findMsRunFile()
                 {
                   this->setFileName(file.absoluteFilePath());
 
-                  if(_msrun_reader_sp == nullptr)
+                  if(msrun_reader_sp == nullptr)
                     {
 
                       pappso::MsFileAccessor accessor(getFileName(), "");
@@ -245,21 +256,24 @@ MsRun::findMsRunFile()
                         pappso::FileReaderType::tims_ms2);
                       qDebug()
                         << " runid=" << getRunId() << " xmlid=" << getXmlId();
-                      _msrun_reader_sp = accessor.getMsRunReaderSPtrByRunId(
+                      msrun_reader_sp = accessor.getMsRunReaderSPtrByRunId(
                         getRunId(), getXmlId());
-                      return true;
+
+                      freeMsRunReaderSp();
+                      return msrun_reader_sp;
                     }
                 }
               catch(pappso::PappsoException &error)
                 {
-                  _msrun_reader_sp = nullptr;
+                  msrun_reader_sp = nullptr;
                 }
             }
         }
     }
   this->setFileName(file_original.absoluteFilePath());
   freeMsRunReaderSp();
-  return false;
+  qDebug();
+  return msrun_reader_sp;
 }
 
 void
@@ -388,9 +402,12 @@ MsRun::getMsRunXicExtractorInterfaceSp()
     {
       return _xic_extractor_sp;
     }
-  if(this->findMsRunFile())
+  qDebug();
+  _msrun_reader_sp = this->findMsRunFile();
+  if(_msrun_reader_sp != nullptr)
     {
 
+      qDebug();
       pappso::MsRunXicExtractorFactory::getInstance().setTmpDir(
         QDir::tempPath());
 
@@ -410,7 +427,10 @@ MsRun::getMsRunXicExtractorInterfaceSp()
         }
       //_xic_extractor_sp = pappso::MsRunXicExtractorFactory::getInstance()
       //                      .buildMsRunXicExtractorDiskBufferSp(*this);
+
+      qDebug();
     }
+  freeMsRunReaderSp();
   return _xic_extractor_sp;
 }
 
diff --git a/src/core/msrun.h b/src/core/msrun.h
index 031c1e28c6dd56e48f03c0cffda2c7b8294bcc57..b42820b4832f0b0701ecf0971d3c163bdb9f2e63 100644
--- a/src/core/msrun.h
+++ b/src/core/msrun.h
@@ -73,7 +73,9 @@ class MsRun : public pappso::MsRunId
   virtual const std::map<MsRunStatistics, QVariant> &
   getMsRunStatisticsMap() const;
 
-  bool findMsRunFile();
+  /** \brief find the msRun file and return an msrunreader shared pointer on it
+   */
+  pappso::MsRunReaderSPtr findMsRunFile();
 
   pappso::MsRunReaderSPtr &getMsRunReaderSPtr();
 
@@ -113,3 +115,4 @@ class MsRun : public pappso::MsRunId
 
 
 Q_DECLARE_METATYPE(MsRunSp)
+
diff --git a/src/gui/workerthread.cpp b/src/gui/workerthread.cpp
index 18174637661af34a6838c6f6d60117e9b10dbc77..35c9638f0523d30feedd7f1cb2564daead9a6ac5 100644
--- a/src/gui/workerthread.cpp
+++ b/src/gui/workerthread.cpp
@@ -909,6 +909,7 @@ WorkerThread::doCheckMsrunFilePath(ProjectSp msp_project)
               // is_ok = false;
               break;
             }
+          msrun_sp->freeMsRunReaderSp();
           i++;
         }
     }
diff --git a/src/gui/xic_view/xicwindow.cpp b/src/gui/xic_view/xicwindow.cpp
index 6db88772235a0c1beb4f5638c5037af5d0c7a7e3..06373f04de793098823cf43517c9c017f371156e 100644
--- a/src/gui/xic_view/xicwindow.cpp
+++ b/src/gui/xic_view/xicwindow.cpp
@@ -140,10 +140,9 @@ XicWindow::getXicExtractionMethod() const
 void
 XicWindow::xicPrecisionChanged(pappso::PrecisionPtr precision [[maybe_unused]])
 {
-  qDebug() << "XicWindow::xicPrecisionChanged begin";
-  qDebug() << "XicWindow::xicPrecisionChanged emit";
+  qDebug();
   emit reExtractXicNeeded();
-  qDebug() << "XicWindow::xicPrecisionChanged end";
+  qDebug();
 }
 
 void