diff --git a/src/grouping/ptm/ptmgroupingexperiment.cpp b/src/grouping/ptm/ptmgroupingexperiment.cpp
index 827a8d578b9a2d614c4aecf0997644596828ff0f..2e25dcf0ff9f99453ef7de29579e522aba0be6fb 100644
--- a/src/grouping/ptm/ptmgroupingexperiment.cpp
+++ b/src/grouping/ptm/ptmgroupingexperiment.cpp
@@ -152,7 +152,7 @@ PtmGroupingExperiment::setValidationState(ValidationState validation_state)
   _peptide_validation_state = validation_state;
 }
 void
-PtmGroupingExperiment::addProteinMatch(const ProteinMatch *p_protein_match)
+PtmGroupingExperiment::addProteinMatch(ProteinMatch *p_protein_match)
 {
   if(p_protein_match->getValidationState() >= _peptide_validation_state)
     {
diff --git a/src/grouping/ptm/ptmgroupingexperiment.h b/src/grouping/ptm/ptmgroupingexperiment.h
index bf1cdfae4aca808c04812983c2044bee4ac86340..7ceaeb8344ebc0d3b51ce92a357c37de8c490c9e 100644
--- a/src/grouping/ptm/ptmgroupingexperiment.h
+++ b/src/grouping/ptm/ptmgroupingexperiment.h
@@ -50,7 +50,7 @@ class PtmGroupingExperiment
    * experiment
    */
   void setValidationState(ValidationState validation_state);
-  void addProteinMatch(const ProteinMatch *p_protein_match);
+  void addProteinMatch(ProteinMatch *p_protein_match);
   void startGrouping();
 
   /** @brief get the ptm island subgroup list
diff --git a/src/grouping/ptm/ptmisland.cpp b/src/grouping/ptm/ptmisland.cpp
index 25568a9084ef0910427b3ab8630d95d76ffd2068..6f7bfc41cd5ac99716d370f6d746a39ab180756f 100644
--- a/src/grouping/ptm/ptmisland.cpp
+++ b/src/grouping/ptm/ptmisland.cpp
@@ -36,7 +36,7 @@
 #include <pappsomspp/utils.h>
 #include <set>
 
-PtmIsland::PtmIsland(const ProteinMatch *p_protein_match, unsigned int position)
+PtmIsland::PtmIsland(ProteinMatch *p_protein_match, unsigned int position)
   : _protein_match_p(p_protein_match)
 {
   _position_list.push_back(position);
@@ -142,8 +142,8 @@ PtmIsland::setProteinNumber(unsigned int prot_number)
 {
   _prot_number = prot_number;
 }
-const ProteinMatch *
-PtmIsland::getProteinMatch() const
+ProteinMatch *
+PtmIsland::getProteinMatch()
 {
   return _protein_match_p;
 }
diff --git a/src/grouping/ptm/ptmisland.h b/src/grouping/ptm/ptmisland.h
index e02d24fa5ebd0e664a1e102959bd06ba32348885..02700617d95c1c2788774db509173908daf8ec7b 100644
--- a/src/grouping/ptm/ptmisland.h
+++ b/src/grouping/ptm/ptmisland.h
@@ -48,7 +48,7 @@ typedef std::shared_ptr<PtmIsland> PtmIslandSp;
 class PtmIsland
 {
   public:
-  PtmIsland(const ProteinMatch *p_protein_match, unsigned int position);
+  PtmIsland(ProteinMatch *p_protein_match, unsigned int position);
   PtmIsland(const PtmIsland &other);
   ~PtmIsland();
   void addPeptideMatch(const PeptideMatch &peptide_match);
@@ -60,7 +60,7 @@ class PtmIsland
 
   bool containsPeptideMatch(const PeptideMatch &element) const;
   std::vector<std::size_t> getSampleScanSet() const;
-  const ProteinMatch *getProteinMatch() const;
+  ProteinMatch *getProteinMatch();
   unsigned int getProteinStartPosition() const;
   void setPtmIslandSubgroup(PtmIslandSubgroup *p_ptm_island_subgroup);
   void setProteinNumber(unsigned int prot_number);
@@ -82,7 +82,7 @@ class PtmIsland
   const std::vector<PeptideMatch> &getPeptideMatchList() const;
 
   private:
-  const ProteinMatch *_protein_match_p;
+  ProteinMatch *_protein_match_p;
   std::vector<PeptideMatch> _peptide_match_list;
   // std::vector<std::size_t> _sample_scan_set;
   std::vector<unsigned int> _position_list;
diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
index 8d1b86fade5e5d13c3d2c1f475dafcbc2f020861..2514d5cf84e0455aad8461b954e6f0f25322003f 100644
--- a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
@@ -186,15 +186,19 @@ PtmIslandListWindow::getPtmIslandListColumnDisplay(
 void
 PtmIslandListWindow::setColumnMenuList()
 {
-  PtmIslandListQActionColumn *p_action;
-  for(int i = 0; i < _ptm_table_model_p->columnCount(); i++)
+  if(ui->menu_Columns->isEmpty())
     {
-      p_action = new PtmIslandListQActionColumn(
-        this, PtmIslandTableModel::getPtmIslandListColumn(i));
-      ui->menu_Columns->addAction(p_action);
+      PtmIslandListQActionColumn *p_action;
+      for(int i = 0; i < _ptm_table_model_p->columnCount(); i++)
+        {
+          p_action = new PtmIslandListQActionColumn(
+            this, PtmIslandTableModel::getPtmIslandListColumn(i));
+          ui->menu_Columns->addAction(p_action);
+        }
     }
 }
 
+
 void
 PtmIslandListWindow::doNotCheckedHide(bool hide)
 {
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
index 024cb563d0282b7ce8f798b1cb45d36c81cef3fc..bd90592f5404795d823322706b86aa248e5f86d0 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
@@ -207,9 +207,10 @@ PtmIslandProxyModel::onTableClicked(const QModelIndex &index)
   int col = source_index.column();
 
   ProteinMatch *p_protein_match =
-    _p_ptm_island_table_model->getIdentificationGroup()
-      ->getProteinMatchList()
-      .at(row);
+    _p_ptm_island_table_model->getPtmGroupingExperiment()
+      ->getPtmIslandList()
+      .at(row)
+      ->getProteinMatch();
 
   if(col == (std::int8_t)PtmIslandListColumn::checked)
     {