diff --git a/src/files/tandemparametersfile.cpp b/src/files/tandemparametersfile.cpp
index e8dc8da7b2bc816392af1e6fac490e2ee725955b..3610dade365f08e9ed9dc3fb31b2d13012f2e8ca 100644
--- a/src/files/tandemparametersfile.cpp
+++ b/src/files/tandemparametersfile.cpp
@@ -56,6 +56,9 @@ const QString TandemParametersFile::getFilename() const {
     return _param_source.fileName();
 }
 
+const QDir TandemParametersFile::getAbsoluteDir() const {
+    return _param_source.absoluteDir();
+}
 const QString TandemParametersFile::getAbsoluteFilePath() const {
     return _param_source.absoluteFilePath();
 }
diff --git a/src/files/tandemparametersfile.h b/src/files/tandemparametersfile.h
index a1adeb1461c0c95f9e334ea8684ea175228251f8..6557cc2f97b783f608822a80782ca1fc594d373f 100644
--- a/src/files/tandemparametersfile.h
+++ b/src/files/tandemparametersfile.h
@@ -45,6 +45,7 @@ public:
 
     const QString getMethodName() const;
     const QString getFilename() const;
+    const QDir getAbsoluteDir() const;
     const QString getAbsoluteFilePath() const;
     bool exists() const;
     
diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
index e179de5127a9ec146f5ef79a40ddf0e952c6022b..f3219f9cea4f39e6df9c6f5159dac40bb24a0a5a 100644
--- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
+++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
@@ -64,12 +64,16 @@ EditTandemPresetDialog::~EditTandemPresetDialog()
     }
 }
 
-void EditTandemPresetDialog::setTandemParametersFiles(const TandemParametersFile & tandem_preset_file) {
+void EditTandemPresetDialog::setTandemParametersFile(const TandemParametersFile & tandem_preset_file) {
 
     if (tandem_preset_file.exists()) {
         _p_tandem_preset_file = new TandemParametersFile( tandem_preset_file);
+        _preset_directory = _p_tandem_preset_file->getAbsoluteDir().absolutePath();
     } else {
         _p_tandem_preset_file = new TandemParametersFile(":/tandem/ressources/model/QExactive_analysis_FDR_nosemi.xml");
+
+        QSettings settings;
+        _preset_directory = settings.value("path/tandemrun_preset_directory", "").toString();
     }
     _tandem_params = _p_tandem_preset_file->getTandemParameters();
 
@@ -87,21 +91,17 @@ void EditTandemPresetDialog::doCopy() {
     else {
         delete _p_tandem_preset_file;
     }
-    QSettings settings;
-    QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString();
-    _p_tandem_preset_file = new TandemParametersFile(QString("%1/untitled.xml").arg(default_preset_location));
+    _p_tandem_preset_file = new TandemParametersFile(QString("%1/untitled.xml").arg(_preset_directory));
 }
 
 
 void EditTandemPresetDialog::doSelectDir() {
     try {
-        QSettings settings;
-        QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString();
 
-        QString directory = QFileDialog::getExistingDirectory(this,tr("Choose preset directory"),default_preset_location );
+        QString directory = QFileDialog::getExistingDirectory(this,tr("Choose preset directory"),_preset_directory );
 
         if (!directory.isEmpty() && ! directory.isNull()) {
-            settings.setValue("path/tandemrun_preset_directory", directory);
+            _preset_directory = directory;
             fillPresetComboBox();
         }
 
@@ -115,7 +115,6 @@ void EditTandemPresetDialog::doSelectDir() {
 void EditTandemPresetDialog::doSave() {
     readUi();
     if (_p_tandem_preset_file == nullptr) {
-
         throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
     }
     _p_tandem_preset_file->setTandemParameters(_tandem_params);
@@ -132,9 +131,6 @@ void EditTandemPresetDialog::doLoad() {
         else {
             delete _p_tandem_preset_file;
         }
-        QSettings settings;
-        QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString();
-
 
         _p_tandem_preset_file = new TandemParametersFile(
             ui->preset_combo_box->itemData(index).value<QString>());
@@ -142,14 +138,20 @@ void EditTandemPresetDialog::doLoad() {
         populate();
     }
 }
-
+const TandemParametersFile & EditTandemPresetDialog::getTandemParametersFile() const {
+    if (_p_tandem_preset_file == nullptr) {
+        throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
+    }
+    if (!_p_tandem_preset_file->exists()) {
+        throw pappso::PappsoException(QObject::tr("preset file %1 does not exists").arg(_p_tandem_preset_file->getAbsoluteFilePath()));
+    }
+    return *_p_tandem_preset_file;
+}
 void EditTandemPresetDialog::fillPresetComboBox() {
     ui->preset_combo_box->clear();
-    QSettings settings;
-    QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString();
     QString default_preset_name = _tandem_params.getMethodName();
 
-    QDir preset_dir(default_preset_location);
+    QDir preset_dir(_preset_directory);
     QStringList filters;
     filters << "*.xml";
     preset_dir.setNameFilters(filters);
@@ -207,7 +209,7 @@ void EditTandemPresetDialog::doHelp() {
     {
         html_doc.setFileName(":/tandem/resources/html_doc/sfmme.html");
     }
-    
+
 
     if (html_doc.open(QFile::ReadOnly | QFile::Text)) {
         QTextStream in(&html_doc);
@@ -283,3 +285,28 @@ void EditTandemPresetDialog::populate() {
 
     qDebug() << "EditTandemPresetDialog::populate end";
 }
+
+void EditTandemPresetDialog::done(int r)
+{
+    if(QDialog::Accepted == r)  // ok was pressed
+    {
+        readUi();
+        TandemParameters ref_params = _p_tandem_preset_file->getTandemParameters();
+        if(ref_params.equals(_tandem_params))   // validate the data somehow
+        {
+            QDialog::done(r);
+            return;
+        }
+        else
+        {
+            QMessageBox::warning(this,
+                                 tr("Save parameters"), tr("Parameters modified but not saved.\nPlease save it before pressing ok or cancel edition"));
+            return;
+        }
+    }
+    else    // cancel, close or exc was pressed
+    {
+        QDialog::done(r);
+        return;
+    }
+}
diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h
index 65942e27f7a953a9c7cdc312a0bb673fb76b7bab..509b3d58991f5e126df14fa3b977b0ff1f797335 100644
--- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h
+++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h
@@ -45,7 +45,12 @@ public:
     explicit EditTandemPresetDialog(QWidget * parent);
     ~EditTandemPresetDialog();
     
-    void setTandemParametersFiles(const TandemParametersFile & tandem_preset_file);
+    void setTandemParametersFile(const TandemParametersFile & tandem_preset_file);
+    
+    const TandemParametersFile & getTandemParametersFile() const;
+    
+protected:
+    void done(int r) override;
 
 public slots:
     void doHelp ();
@@ -63,6 +68,7 @@ private:
     Ui::EditTandemPresetView *ui;
     TandemParametersFile * _p_tandem_preset_file = nullptr;
     TandemParameters _tandem_params;
+    QString _preset_directory;
 };
 
 #endif // EDITTANDEMPRESETDIALOG_H
diff --git a/src/gui/tandem_run_dialog/tandemrundialog.cpp b/src/gui/tandem_run_dialog/tandemrundialog.cpp
index e07639eca2bbd386b1a8eb536bfb97f79fb7ac82..0933313dbeb4adf722459ef895034b743278d7e4 100644
--- a/src/gui/tandem_run_dialog/tandemrundialog.cpp
+++ b/src/gui/tandem_run_dialog/tandemrundialog.cpp
@@ -87,11 +87,14 @@ void TandemRunDialog::setPresetName(QString preset_name) {
     qDebug() << "TandemRunDialog::setPresetName end";
 }
 void TandemRunDialog::fillPresetComboBox() {
+    qDebug() << "TandemRunDialog::fillPresetComboBox begin";
     ui->preset_combobox->clear();
     QSettings settings;
     QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString();
     QString default_preset_name = settings.value("tandem/preset_name", "").toString();
 
+    qDebug() << "TandemRunDialog::fillPresetComboBox default_preset_location=" << default_preset_location;
+    qDebug() << "TandemRunDialog::fillPresetComboBox default_preset_name=" << default_preset_name;
     QDir preset_dir(default_preset_location);
     QStringList filters;
     filters << "*.xml";
@@ -148,24 +151,30 @@ void TandemRunDialog::editPresets() {
     if (_p_preset_dialog == nullptr) {
         _p_preset_dialog = new EditTandemPresetDialog(this);
     }
-    _p_preset_dialog->setTandemParametersFiles(TandemParametersFile(ui->preset_combobox->itemData(ui->preset_combobox->currentIndex()).value<QString>()));
+    _p_preset_dialog->setTandemParametersFile(TandemParametersFile(ui->preset_combobox->itemData(ui->preset_combobox->currentIndex()).value<QString>()));
     _p_preset_dialog->show();
     
     
 #if QT_VERSION >= 0x050000
     // Qt5 code
-    connect(_p_preset_dialog, &EditTandemPresetDialog::accept, this, &TandemRunDialog::acceptPresetEdit);
-    connect(_p_preset_dialog, &EditTandemPresetDialog::reject, this, &TandemRunDialog::rejectPresetEdit);
+    connect(_p_preset_dialog, &EditTandemPresetDialog::accepted, this, &TandemRunDialog::acceptPresetEdit);
+    connect(_p_preset_dialog, &EditTandemPresetDialog::rejected, this, &TandemRunDialog::rejectPresetEdit);
 #else
 // Qt4 code
 
 #endif
 }
 void TandemRunDialog::rejectPresetEdit() {
-    
+    fillPresetComboBox();
 }
 void TandemRunDialog::acceptPresetEdit() {
+    TandemParametersFile param_file = _p_preset_dialog->getTandemParametersFile();
+    QSettings settings;
+    settings.setValue("path/tandemrun_preset_directory", param_file.getAbsoluteDir().absolutePath());
+    settings.setValue("tandem/preset_name", param_file.getMethodName());
     
+    fillPresetComboBox();
+
 }
 
 void TandemRunDialog::selectOutputDirectory() {