diff --git a/src/gui/xic_view/xic_box/xicbox.cpp b/src/gui/xic_view/xic_box/xicbox.cpp
index 8180f0dd80cf424b47fa43dc1bd064527bc7596e..e22f5cf7d6e97b1e41d5ba6effb93e3978529db7 100644
--- a/src/gui/xic_view/xic_box/xicbox.cpp
+++ b/src/gui/xic_view/xic_box/xicbox.cpp
@@ -230,7 +230,7 @@ void XicBox::setPeptideEvidenceInMsRun(const PeptideEvidence * p_peptide_evidenc
 
 }
 
-void XicBox::setXic(std::vector< pappso::MsRunXicSp> xic_sp_list) {
+void XicBox::setXic(std::vector< pappso::XicSp> xic_sp_list) {
     qDebug() << "XicBox::setXic begin " << xic_sp_list.size();
     ui->xic_widget->clear();
     for (int i=0; i < xic_sp_list.size(); i++) {
diff --git a/src/gui/xic_view/xic_box/xicbox.h b/src/gui/xic_view/xic_box/xicbox.h
index f16ed3333459dd7092c8fc9fbd37cf9495c6fe37..62c44755f8fea9bc8d1fedc268ebb40175383d86 100644
--- a/src/gui/xic_view/xic_box/xicbox.h
+++ b/src/gui/xic_view/xic_box/xicbox.h
@@ -35,7 +35,6 @@
 #include "../../../utils/types.h"
 #include "../../../core/peptideevidence.h"
 #include "../xicwindow.h"
-#include <pappsomspp/xicextractor/msrunxic.h>
 #include <pappsomspp/peptide/peptidenaturalisotopelist.h>
 #include <qcustomplot.h>
 
@@ -71,7 +70,7 @@ signals :
 private slots:
     void remove();
     void reExtractXic();
-    void setXic(std::vector< pappso::MsRunXicSp> xic_sp_list);
+    void setXic(std::vector< pappso::XicSp> xic_sp_list);
     void setIsotopeMassList(std::vector<pappso::PeptideNaturalIsotopeAverageSp> isotope_mass_list);
     void error(QString error_message);
     void extractXicInOtherMsRun();
diff --git a/src/gui/xic_view/xicworkerthread.cpp b/src/gui/xic_view/xicworkerthread.cpp
index db6b3593ed33f3890b9cd1d84a8f585b5cad5835..63858aa38b3456f41ef1cdc660ca6b17ac2f2658 100644
--- a/src/gui/xic_view/xicworkerthread.cpp
+++ b/src/gui/xic_view/xicworkerthread.cpp
@@ -39,7 +39,7 @@ void XicWorkerThread::doXicLoad(MsRunSp p_msrun, std::vector<pappso::mz> mz_list
         for (pappso::mz mass:mz_list) {
             mass_list.push_back(pappso::MassRange(mass, precision));
         }
-        std::vector<pappso::MsRunXicSp> xic_sp_list = SpectrumStore::getXicSpFromMsRunSp(p_msrun.get(), mass_list, method);
+        std::vector<pappso::XicSp> xic_sp_list = SpectrumStore::getXicSpFromMsRunSp(p_msrun.get(), mass_list, method);
 
         emit xicLoaded(xic_sp_list);
 
diff --git a/src/gui/xic_view/xicworkerthread.h b/src/gui/xic_view/xicworkerthread.h
index cdc6e7fa67250f45ef007bc9145e5a7c898143a0..a59b86c58d45fd84a7e7af4ea136f1ea7dc61db1 100644
--- a/src/gui/xic_view/xicworkerthread.h
+++ b/src/gui/xic_view/xicworkerthread.h
@@ -29,10 +29,10 @@
 #ifndef XICWORKERTHREAD_H
 #define XICWORKERTHREAD_H
 
-#include <pappsomspp/xicextractor/msrunxic.h>
 #include <pappsomspp/peptide/peptidenaturalisotopelist.h>
 #include<QObject>
 #include "../../core/msrun.h"
+#include <pappsomspp/xic/xic.h>
 
 class XicWorkerThread : public QObject
 {
@@ -44,7 +44,7 @@ public slots:
     void doComputeIsotopeMassList(pappso::PeptideSp peptide_sp, unsigned int charge, pappso::PrecisionP precision, double minimum_isotope_pattern_ratio);
 
 signals:
-    void xicLoaded(std::vector<pappso::MsRunXicSp> xic_sp_list);
+    void xicLoaded(std::vector<pappso::XicSp> xic_sp_list);
     void isotopeMassListComputed(std::vector<pappso::PeptideNaturalIsotopeAverageSp> isotope_mass_list);
     void operationFailed(QString error);
 
diff --git a/src/main.cpp b/src/main.cpp
index 52d22fccefc4e6ceb857a5d604fd08447beea983..cf3dac47b669a293b98f8491ddbd8e07577a8921 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -39,7 +39,7 @@ int main(int argc, char *argv[])
     qRegisterMetaType<TandemRunBatch>("TandemRunBatch");
     qRegisterMetaType<std::vector<pappso::mz>>("std::vector<pappso::mz>");
     qRegisterMetaType<pappso::PrecisionP>("pappso::PrecisionP");
-    qRegisterMetaType<std::vector<pappso::MsRunXicSp>>("std::vector<pappso::MsRunXicSp>");
+    qRegisterMetaType<std::vector<pappso::XicSp>>("std::vector<pappso::XicSp>");
     qRegisterMetaType<pappso::PeptideSp>("pappso::PeptideSp");
     qRegisterMetaType<pappso::XicExtractMethod>("pappso::XicExtractMethod");
     qRegisterMetaType<pappso::SpectrumSp>("pappso::SpectrumSp");
diff --git a/src/output/ods/comparbasesheet.cpp b/src/output/ods/comparbasesheet.cpp
index 17b3dbc0f3cd444873096b0bd604659802078547..c866fbfbd8a8a52ae42e160e2157ed08c7f4ff2c 100644
--- a/src/output/ods/comparbasesheet.cpp
+++ b/src/output/ods/comparbasesheet.cpp
@@ -160,7 +160,7 @@ void ComparBaseSheet::writeIdentificationGroup(IdentificationGroup * p_ident) {
     }
     qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ ;
     
-    /*
+    
     if (!_first_cell_coordinate.isEmpty()) {
         QString last_cell_coordinate = _p_writer->getOdsCellCoordinate();
         qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " << _first_cell_coordinate<< " " << last_cell_coordinate;
@@ -168,7 +168,7 @@ void ComparBaseSheet::writeIdentificationGroup(IdentificationGroup * p_ident) {
         _p_writer->addColorScale(color_scale);
         _first_cell_coordinate = "";
     }
-    */
+    
     _p_writer->writeLine();
     _p_writer->writeLine();
     qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " end";
diff --git a/src/utils/readspectrum.cpp b/src/utils/readspectrum.cpp
index a6b6b14e57e7311553cad30b2c5c957d7d89a81d..935d916003701d595b20cbfe3272dc02def1f01b 100644
--- a/src/utils/readspectrum.cpp
+++ b/src/utils/readspectrum.cpp
@@ -331,10 +331,10 @@ pappso::SpectrumSp SpectrumStore::getSpectrumSpFromMsRunSp(MsRun * msrun, unsign
 
 }
 
-std::vector<pappso::MsRunXicSp> SpectrumStore::getXicSpFromMsRunSp(MsRun * p_msrun, const std::vector<pappso::MassRange> & mass_range_list, pappso::XicExtractMethod method) {
+std::vector<pappso::XicSp> SpectrumStore::getXicSpFromMsRunSp(MsRun * p_msrun, const std::vector<pappso::MassRange> & mass_range_list, pappso::XicExtractMethod method) {
     qDebug() << "SpectrumStore::getXicSpFromMsRunSp begin" ;
     pappso::MsRunXicExtractorFactory::getInstance().setTmpDir("/tmp");
-    std::vector<pappso::MsRunXicSp> xic_sp_list;
+    std::vector<pappso::XicSp> xic_sp_list;
     if (p_msrun == nullptr) {
         qDebug() << "SpectrumStore::getXicSpFromMsRunSp ERROR p_msrun == nullptr " ;
         throw pappso::ExceptionNotFound(QObject::tr("SpectrumStore::getXicSpFromMsRunSp ERROR p_msrun == nullptr"));
@@ -346,14 +346,14 @@ std::vector<pappso::MsRunXicSp> SpectrumStore::getXicSpFromMsRunSp(MsRun * p_msr
     if (p_msdatafile != nullptr) {
         auto it = _map_msrun_msrunxicextractor.find(p_msrun);
         if (it == _map_msrun_msrunxicextractor.end()) {
-            pappso::MsRunXicExtractorSp extractor = pappso::MsRunXicExtractorFactory::getInstance().buildMsRunXicExtractorDiskSp(*p_msrun);
+            pappso::MsRunXicExtractorSp extractor = pappso::MsRunXicExtractorFactory::getInstance().buildMsRunXicExtractorPwizSp(*p_msrun);
             
             _map_msrun_msrunxicextractor.insert(std::pair<MsRun *, pappso::MsRunXicExtractorSp>(p_msrun, extractor));
             extractor->setXicExtractMethod(method);
-            return extractor.get()->getMsRunXicSpList(mass_range_list);
+            return extractor.get()->getXicSpList(mass_range_list);
         }
         it->second.get()->setXicExtractMethod(method);
-        return it->second.get()->getMsRunXicSpList(mass_range_list);
+        return it->second.get()->getXicSpList(mass_range_list);
     }
     return (xic_sp_list);
 }
diff --git a/src/utils/readspectrum.h b/src/utils/readspectrum.h
index 9d8a609dd6642d9b737f2157adca77c26aa25087..1f5c916eae2c7aac971ea6b21656ac01d2a11369 100644
--- a/src/utils/readspectrum.h
+++ b/src/utils/readspectrum.h
@@ -43,7 +43,7 @@ class MSDataFile;
 class SpectrumStore {
 public:
     static pappso::SpectrumSp getSpectrumSpFromMsRunSp(MsRun * p_msrun, unsigned int scan_num);
-    static std::vector<pappso::MsRunXicSp> getXicSpFromMsRunSp(MsRun * p_msrun, const std::vector<pappso::MassRange> & mass_range_list, pappso::XicExtractMethod method);
+    static std::vector<pappso::XicSp> getXicSpFromMsRunSp(MsRun * p_msrun, const std::vector<pappso::MassRange> & mass_range_list, pappso::XicExtractMethod method);
     /** @brief try to find MS run statistics
      */
     static void checkMsRunStatistics(MsRun *);
diff --git a/win64/work.cmake b/win64/work.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..4a3c69c9b2338a5eaaf1049c4cb2bdce64aa3415
--- /dev/null
+++ b/win64/work.cmake
@@ -0,0 +1,14 @@
+
+# cd buildwin64
+# cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../win64/work.cmake ..
+
+set(ODSSTREAM_QT5_FOUND 1)
+set(ODSSTREAM_INCLUDE_DIR "/home/langella/developpement/git/libodsstream/src")
+set(ODSSTREAM_QT5_LIBRARY "/home/langella/developpement/git/libodsstream/cbuild/src/libodsstream-qt5.so")
+
+set(PAPPSOMSPP_QT5_FOUND 1)
+set(PAPPSOMSPP_WIDGET_QT5_FOUND 1)
+set(PAPPSOMSPP_INCLUDE_DIR "/home/langella/developpement/git/pappsomspp/src")
+set(PAPPSOMSPP_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/cbuild/src/libpappsomspp-qt5.so")
+set(PAPPSOMSPP_WIDGET_QT5_LIBRARY "/home/langella/developpement/git/pappsomspp/cbuild/src/pappsomspp/widget/libpappsomspp-widget-qt5.so")
+