diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 963b3c0762f1d429f9004921af7a83e5b6cd5532..be9ef9b05802f364d47e6f4b1310b493a56a8292 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -200,6 +200,7 @@ SET(XTPCPP_SRCS
   ./gui/widgets/automatic_filter_widget/automaticfilterwidget.cpp
   ./gui/widgets/contaminant_widget/contaminantwidget.cpp
   ./gui/widgets/decoy_widget/decoywidget.cpp
+  ./gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp
   ./gui/widgets/massitemdelegate.cpp
   ./gui/xic_view/xic_box/xicbox.cpp
   ./gui/xic_view/xic_widgets/zivydialog.cpp
diff --git a/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui b/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui
index e2cd178ab2951b2e2da9e5b5c32775e6743f8e4f..b128ffc4cd3c9d2515f643c02ee459b8acc6f129 100644
--- a/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui
+++ b/src/gui/export/export_masschroq_dialog/export_masschroq_dialog.ui
@@ -309,18 +309,7 @@
              </widget>
             </item>
             <item>
-             <widget class="QComboBox" name="sumMaxComboBox">
-              <item>
-               <property name="text">
-                <string>max</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>sum</string>
-               </property>
-              </item>
-             </widget>
+             <widget class="XicExtractionMethodWidget" name="xic_extraction_method_widget" native="true"/>
             </item>
            </layout>
           </item>
@@ -402,6 +391,12 @@
    <header>pappsomspp/widget/precisionwidget/precisionwidget.h</header>
    <container>1</container>
   </customwidget>
+  <customwidget>
+   <class>XicExtractionMethodWidget</class>
+   <extends>QWidget</extends>
+   <header>gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections>
diff --git a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
index d45c1b9b80623b096aec0969b4b219dd694b806b..173012735187f985464a248b718edbd9546ace32 100644
--- a/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
+++ b/src/gui/export/export_masschroq_dialog/exportmasschroqdialog.cpp
@@ -104,8 +104,6 @@ ExportMasschroqDialog::setMasschroqFileParameters(
   ui->ms1SmoothingSpinBox->setValue(params.ms1_smoothing_half_window);
 
   ui->xicRangeWidget->setPrecision(params.xic_extraction_range);
-
-  ui->sumMaxComboBox->setCurrentText(params.xic_extraction_method);
 }
 
 
@@ -139,7 +137,7 @@ ExportMasschroqDialog::getMasschroqFileParameters() const
 
   params.xic_extraction_range = ui->xicRangeWidget->getPrecision();
 
-  params.xic_extraction_method = ui->sumMaxComboBox->currentText();
+  params.xic_extraction_method = ui->xic_extraction_method_widget->getXicExtractionMethod();
 
   return params;
 }
diff --git a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp
index e8e28f2f061ff031d49c6e469e9b2573cfd84532..44d8380c8c50f511cc446e3f207542e8e47a4dfc 100644
--- a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp
+++ b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.cpp
@@ -67,7 +67,7 @@ MasschroqFileParameters::save() const
                     xic_extraction_range->toString());
 
   settings.setValue("export_masschroqml/xic_extraction_method",
-                    xic_extraction_method);
+                    QString("%1").arg((std::uint8_t)xic_extraction_method));
 }
 void
 MasschroqFileParameters::load()
@@ -124,7 +124,9 @@ MasschroqFileParameters::load()
     settings.value("export_masschroqml/xic_extraction_range", "10 ppm")
       .toString());
 
+  /*
   xic_extraction_method =
     settings.value("export_masschroqml/xic_extraction_method", "max")
       .toString();
+      */
 }
diff --git a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h
index a4dda270b07ef9f8b5842a889fbc64e86a3cc2d6..4badb5b79650e60c2fdbecb594a0c8139d37fae8 100644
--- a/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h
+++ b/src/gui/export/export_masschroq_dialog/masschroqfileparameters.h
@@ -58,5 +58,5 @@ struct MasschroqFileParameters
 
   pappso::PrecisionPtr xic_extraction_range;
 
-  QString xic_extraction_method; // sum or max
+  pappso::XicExtractMethod xic_extraction_method; // sum or max
 };
diff --git a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp
index d5d38d803680ca454f3269e68646aa8849f1b4f0..dde03a391c127b4fa190a5d7358fb228dba56284 100644
--- a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp
+++ b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.cpp
@@ -31,6 +31,7 @@
 #include "xicextractionmethodwidget.h"
 #include <QDebug>
 #include <QHBoxLayout>
+#include <QSettings>
 
 XicExtractionMethodWidget::XicExtractionMethodWidget(QWidget *parent)
   : QWidget(parent)
@@ -47,6 +48,16 @@ XicExtractionMethodWidget::XicExtractionMethodWidget(QWidget *parent)
   mp_methodComboBox->addItem("max", QString("max"));
   mp_methodComboBox->addItem("sum", QString("sum"));
 
+  QSettings settings;
+
+  m_oldMethod =
+    (pappso::XicExtractMethod)settings
+      .value("xic/xic_extraction_method",
+             QString("%1").arg((std::uint8_t)pappso::XicExtractMethod::max))
+      .toUInt();
+
+  mp_methodComboBox->setCurrentIndex((std::uint8_t)m_oldMethod);
+
   connect(mp_methodComboBox,
           SIGNAL(currentIndexChanged(int)),
           this,
@@ -64,18 +75,21 @@ void
 XicExtractionMethodWidget::setCurrentIndex(int index)
 {
   qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
+  pappso::XicExtractMethod new_method = (pappso::XicExtractMethod)index;
 
-  if(m_oldIndex != index)
+  if(m_oldMethod != new_method)
     {
-      m_oldIndex = index;
-
-      if(mp_methodComboBox->itemData(index) == "sum")
-        {
-          emit xicExtractionMethodChanged(pappso::XicExtractMethod::sum);
-        }
-      else
-        {
-          emit xicExtractionMethodChanged(pappso::XicExtractMethod::max);
-        }
+      m_oldMethod = new_method;
+      QSettings settings;
+      settings.setValue("xic/xic_extraction_method",
+                        QString("%1").arg((std::uint8_t)new_method));
+      emit xicExtractionMethodChanged(new_method);
     }
 }
+
+
+pappso::XicExtractMethod
+XicExtractionMethodWidget::getXicExtractionMethod() const
+{
+  return m_oldMethod;
+}
diff --git a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h
index 3deb3496a55b5b5ccf0e2f7abdfe735b737a56e2..962543d9c2a4291d02e5ded2689c37a97640b9b7 100644
--- a/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h
+++ b/src/gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h
@@ -40,7 +40,7 @@ class XicExtractionMethodWidget : public QWidget
 
   private:
   QComboBox *mp_methodComboBox;
-  int m_oldIndex = 0;
+  pappso::XicExtractMethod m_oldMethod = pappso::XicExtractMethod::max;
 
   private:
   Q_SLOT void setCurrentIndex(int);
@@ -48,6 +48,8 @@ class XicExtractionMethodWidget : public QWidget
   public:
   XicExtractionMethodWidget(QWidget *parent = 0);
   ~XicExtractionMethodWidget();
+  pappso::XicExtractMethod getXicExtractionMethod() const;
+  
   signals:
   void xicExtractionMethodChanged(pappso::XicExtractMethod method) const;
 };
diff --git a/src/gui/xic_view/xic_box/xicbox.cpp b/src/gui/xic_view/xic_box/xicbox.cpp
index efd25ee93eb1659e0e898b0c66b6364e28693592..72086bc3f492b6cd7ed4a4d85503968ccbad9d7a 100644
--- a/src/gui/xic_view/xic_box/xicbox.cpp
+++ b/src/gui/xic_view/xic_box/xicbox.cpp
@@ -571,7 +571,7 @@ XicBox::reExtractXic()
         xic_isotope.peptide_natural_isotope_sp.get()->getMz());
     }
   emit loadXic(_msrun_sp, mass_list, _p_xic_window->getXicExtractPrecision(),
-               pappso::XicExtractMethod::max);
+               _p_xic_window->getXicExtractionMethod());
   qDebug() << "XicBox::reExtractXic end";
 }
 
diff --git a/src/gui/xic_view/xic_window.ui b/src/gui/xic_view/xic_window.ui
index b1ae1e260294942ba1fa90f624408b2fc643d2bf..f1ffb29e6adc084ff8539d5298411424889f0434 100644
--- a/src/gui/xic_view/xic_window.ui
+++ b/src/gui/xic_view/xic_window.ui
@@ -43,6 +43,9 @@
        <item>
         <widget class="pappso::PrecisionWidget" name="xic_precision" native="true"/>
        </item>
+       <item>
+        <widget class="XicExtractionMethodWidget" name="xic_extraction_method_widget" native="true"/>
+       </item>
        <item>
         <widget class="QRadioButton" name="rt_sec_radiobutton">
          <property name="text">
@@ -131,6 +134,15 @@
     <signal>precisionChanged(pappso::PrecisionPtr)</signal>
    </slots>
   </customwidget>
+  <customwidget>
+   <class>XicExtractionMethodWidget</class>
+   <extends>QWidget</extends>
+   <header>gui/widgets/xic_extraction_method_widget/xicextractionmethodwidget.h</header>
+   <container>1</container>
+   <slots>
+    <signal>xicExtractionMethodChanged(pappso::XicExtractMethod)</signal>
+   </slots>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections>
@@ -173,8 +185,8 @@
    <slot>doEditZivyParams()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>351</x>
-     <y>38</y>
+     <x>408</x>
+     <y>61</y>
     </hint>
     <hint type="destinationlabel">
      <x>918</x>
@@ -182,11 +194,28 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>xic_extraction_method_widget</sender>
+   <signal>xicExtractionMethodChanged(pappso::XicExtractMethod)</signal>
+   <receiver>XicWindow</receiver>
+   <slot>doXicExtractionMethodChanged(pappso::XicExtractMethod)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>100</x>
+     <y>44</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>210</x>
+     <y>-25</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  <slots>
   <slot>xicPrecisionChanged(pappso::PrecisionPtr)</slot>
   <slot>rtUnitChanged(QAbstractButton*)</slot>
   <slot>doEditZivyParams()</slot>
+  <slot>doXicExtractionMethodChanged(pappso::XicExtractMethod)</slot>
  </slots>
  <buttongroups>
   <buttongroup name="rt_unit_buttongroup"/>
diff --git a/src/gui/xic_view/xicwindow.cpp b/src/gui/xic_view/xicwindow.cpp
index 51cf71c93d8eac0263b6f46f10410aee5c677d24..165ae9fcc03b10de6d9b72a3fa4193c21896ec58 100644
--- a/src/gui/xic_view/xicwindow.cpp
+++ b/src/gui/xic_view/xicwindow.cpp
@@ -46,7 +46,6 @@ XicWindow::XicWindow(ProjectWindow *parent)
   ui->xic_precision->setPrecision(
     pappso::PrecisionFactory::fromString(precision_str));
 
-
   ZivyParams zivy_params;
   zivy_params.loadSettings();
 
@@ -57,7 +56,9 @@ XicWindow::XicWindow(ProjectWindow *parent)
   _p_zivy_dialog->setZivyParams(zivy_params);
 
 
-  connect(_p_zivy_dialog, &ZivyDialog::accepted, this,
+  connect(_p_zivy_dialog,
+          &ZivyDialog::accepted,
+          this,
           &XicWindow::doAcceptedZivyDialog);
 
 #if QT_VERSION >= 0x050000
@@ -128,6 +129,14 @@ XicWindow::getXicExtractPrecision() const
   return (ui->xic_precision->getPrecision());
 }
 
+
+pappso::XicExtractMethod
+XicWindow::getXicExtractionMethod() const
+{
+  return (ui->xic_extraction_method_widget->getXicExtractionMethod());
+}
+
+
 void
 XicWindow::xicPrecisionChanged(pappso::PrecisionPtr precision)
 {
@@ -169,3 +178,10 @@ XicWindow::doAcceptedZivyDialog()
   _p_zivy_dialog->getZivyParams().saveSettings();
   emit reExtractXicNeeded();
 }
+
+
+void
+XicWindow::doXicExtractionMethodChanged(pappso::XicExtractMethod xic_method)
+{
+  emit reExtractXicNeeded();
+}
diff --git a/src/gui/xic_view/xicwindow.h b/src/gui/xic_view/xicwindow.h
index 22d49a1c2ca3cedb4b2e1d27c651d5326cb5500f..362d3913148fa9025b1beba183132c0b034854a6 100644
--- a/src/gui/xic_view/xicwindow.h
+++ b/src/gui/xic_view/xicwindow.h
@@ -43,7 +43,7 @@ class ProjectWindow;
 
 namespace Ui
 {
-  class XicWindow;
+class XicWindow;
 }
 
 class XicBox;
@@ -62,6 +62,7 @@ class XicWindow : public QMainWindow
                      MsRunSp msrun_sp);
 
   pappso::PrecisionPtr getXicExtractPrecision() const;
+  pappso::XicExtractMethod getXicExtractionMethod() const;
 
   bool isRetentionTimeSeconds() const;
 
@@ -73,6 +74,7 @@ class XicWindow : public QMainWindow
   protected slots:
   void doEditZivyParams();
   void doAcceptedZivyDialog();
+  void doXicExtractionMethodChanged(pappso::XicExtractMethod xic_method);
 
   signals:
   void reExtractXicNeeded();
diff --git a/src/output/masschroqml.cpp b/src/output/masschroqml.cpp
index 1b0a9e404e1abd58b35c42d2977e8c293d6a0f4c..bf89e8d2ddac0f75605e12d0c196a31d8efe02fc 100644
--- a/src/output/masschroqml.cpp
+++ b/src/output/masschroqml.cpp
@@ -231,8 +231,9 @@ MassChroQml::writeQuantificationTraces()
   _output_stream->writeStartElement("quantification_traces");
   //<peptide_traces peptide_ids="pep0 pep1" output_dir="pep_traces"
   //	format="tsv" />
-  _output_stream->writeComment("<peptide_traces peptide_ids=\"pep0 pep1\" "
-                               "output_dir=\"pep_traces\" format=\"tsv\" />");
+  _output_stream->writeComment(
+    "<peptide_traces peptide_ids=\"pep0 pep1\" "
+    "output_dir=\"pep_traces\" format=\"tsv\" />");
   /*
       <all_xics_traces output_dir="all_xics_traces" format="tsv" />
       <mz_traces mz_values="634.635 449.754 552.234" output_dir="mz_traces"
@@ -277,8 +278,9 @@ MassChroQml::writeQuantify()
     }
   _output_stream->writeEndElement();
 
-  _output_stream->writeComment("<mz_list>732.317 449.754 552.234 464.251 "
-                               "381.577 569.771 575.256</mz_list>");
+  _output_stream->writeComment(
+    "<mz_list>732.317 449.754 552.234 464.251 "
+    "381.577 569.771 575.256</mz_list>");
   _output_stream->writeComment(
     "<mzrt_list>\n				<mzrt mz=\"732.317\" rt=\"230.712\" />\n			<mzrt "
     "mz=\"575.256\" rt=\"254.788\" />\n			</mzrt_list>");
@@ -297,7 +299,14 @@ MassChroQml::writeQuantificationMethods()
   _output_stream->writeAttribute("id", "quant1");
   //<xic_extraction xic_type="sum">
   _output_stream->writeStartElement("xic_extraction");
-  _output_stream->writeAttribute("xic_type", m_params.xic_extraction_method);
+  if(m_params.xic_extraction_method == pappso::XicExtractMethod::max)
+    {
+      _output_stream->writeAttribute("xic_type", "max");
+    }
+  else
+    {
+      _output_stream->writeAttribute("xic_type", "sum");
+    }
   _output_stream->writeComment("max : XIC on BasePeak; sum : XIC on TIC");
   //<ppm_range min="10" max="10"/><!--For XIC extraction on Da use: mz_range-->
 
@@ -503,7 +512,8 @@ MassChroQml::writePeptideListInGroup(const GroupingGroup *p_group)
     }
 
   // sort list
-  std::sort(mcq_peptide_list.begin(), mcq_peptide_list.end(),
+  std::sort(mcq_peptide_list.begin(),
+            mcq_peptide_list.end(),
             [](const McqPeptide &first, const McqPeptide &second) {
               return (first.id < second.id);
             });
@@ -589,7 +599,8 @@ MassChroQml::writePeptideListInGroup(const GroupingGroup *p_group)
         }
 
       //<observed_in data="samp0" scan="655" z="2" />
-      std::sort(mcq_peptide.observed_in.begin(), mcq_peptide.observed_in.end(),
+      std::sort(mcq_peptide.observed_in.begin(),
+                mcq_peptide.observed_in.end(),
                 [](const McqObserved &first, const McqObserved &second) {
                   return std::tie(first.charge, first.scan, first.msrun) <
                          std::tie(second.charge, second.scan, second.msrun);