diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp
index 2a2fc312338512a1b87e1d941dcee3c5281e5eaa..f52b4535557ea368049e64e8d5bd7e809b6ace75 100644
--- a/src/gui/project_view/projectwindow.cpp
+++ b/src/gui/project_view/projectwindow.cpp
@@ -568,6 +568,7 @@ void ProjectWindow::setProjectSp(ProjectSp project_sp) {
 
     _project_sp = project_sp;
     ui->decoy_regexp_radiobutton->setChecked(true);
+    ui->decoy_regexp_groupbox->setVisible(true);
     ui->decoy_database_groupbox->setVisible(false);
     if (_project_sp.get()->getProteinStore().getDecoyFastaFileList().size() > 0) {
         ui->decoy_database_files_radiobutton->setChecked(true);
diff --git a/src/gui/widgets/contaminant_widget/contaminantwidget.cpp b/src/gui/widgets/contaminant_widget/contaminantwidget.cpp
index e316b142b3763fef42eca15a5ff7e7b44bf756f7..7c4f95820d4fe9cd498c4ac034e494112ba54aea 100644
--- a/src/gui/widgets/contaminant_widget/contaminantwidget.cpp
+++ b/src/gui/widgets/contaminant_widget/contaminantwidget.cpp
@@ -83,6 +83,7 @@ void ContaminantWidget::setFastaFileList(std::vector<FastaFileSp> fasta_file_lis
 
 void ContaminantWidget::getProjectContaminants(const Project * p_project) {
     ui->contaminant_regexp_radiobutton->setChecked(true);
+    ui->contaminant_protein_regexp_line_edit->setVisible(true);
     ui->contaminant_database_listview->setVisible(false);
     if (p_project->getProteinStore().getContaminantFastaFileList().size() > 0) {
         ui->contaminant_file_radiobutton->setChecked(true);
diff --git a/src/utils/proteinstore.cpp b/src/utils/proteinstore.cpp
index a08f89ed4bb019a000b7f4bbf15ef619382ed978..e7312b0b630d21b96c377a0984f44327bbb58fb3 100644
--- a/src/utils/proteinstore.cpp
+++ b/src/utils/proteinstore.cpp
@@ -128,24 +128,27 @@ ProteinXtpSp & ProteinStore::getInstance(ProteinXtpSp & peptide_in) {
     if (ret.second) {
         //the protein is new in the store, update content
         setProteinInformations(ret.first->second);
+
+        if (ret.first->second.get()->getDbxrefList().size() == 0) {
+            ret.first->second.get()->parseAccession2dbxref();
+        }
     }
     return (ret.first->second);
 
 }
 
-void ProteinStore::setProteinInformations(ProteinXtpSp & peptide_in) {
+void ProteinStore::setProteinInformations(ProteinXtpSp & protein_in) {
     //qDebug() << "ProteinStore::setProteinInformations begin" << peptide_in.get()->getSequence();
-    peptide_in.get()->setIsContaminant(false);
-    peptide_in.get()->setIsDecoy(false);
-    QString accession = peptide_in.get()->getAccession();
-    peptide_in.get()->parseAccession2dbxref();
+    protein_in.get()->setIsContaminant(false);
+    protein_in.get()->setIsDecoy(false);
+    QString accession = protein_in.get()->getAccession();
 
     if ((!_regexp_contaminant.isEmpty()) && (_regexp_contaminant.indexIn(accession, 0)>-1)) {
         //qDebug() << "ProteinStore::setProteinInformations is contaminant " << accession;
-        peptide_in.get()->setIsContaminant(true);
+        protein_in.get()->setIsContaminant(true);
     }
     if ((!_regexp_decoy.isEmpty()) && (_regexp_decoy.indexIn(accession, 0)>-1) ) {
-        peptide_in.get()->setIsDecoy(true);
+        protein_in.get()->setIsDecoy(true);
     }
     //qDebug() << "ProteinStore::setProteinInformations end";
 }