diff --git a/src/core/identificationgroup.cpp b/src/core/identificationgroup.cpp
index da181d52950f3c932299f6ae8aff210cf26bc9e7..b7de9ac35f2eced56873d6eb7713b6eb0d66fa61 100644
--- a/src/core/identificationgroup.cpp
+++ b/src/core/identificationgroup.cpp
@@ -208,6 +208,9 @@ void IdentificationGroup::startGrouping (const GroupingType & grouping_type) {
         p_protein_match->setGroupInstance(_group_store);
     }
 
+    if (_p_grp_ptm_experiment != nullptr) {
+        startPtmGrouping();
+    }
     qDebug() << "IdentificationGroup::startGrouping end ";
 }
 
@@ -215,6 +218,7 @@ void IdentificationGroup::startPtmGrouping () {
     qDebug() << "IdentificationGroup::startPtmGrouping begin ";
     if (_p_grp_ptm_experiment != nullptr) {
         delete _p_grp_ptm_experiment;
+        _p_grp_ptm_experiment = nullptr;
     }
     _p_grp_ptm_experiment = new PtmGroupingExperiment();
     _p_grp_ptm_experiment->setValidationState(ValidationState::grouped);
diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
index af7b406f34ca97929927e9d9db6784fdf2007fbb..932bc80129247d5f209a3e7740068625b8d73cf8 100644
--- a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
@@ -64,7 +64,7 @@ PtmIslandListWindow::PtmIslandListWindow(ProjectWindow *parent):
     */
 #else
 // Qt4 code
-connect (this, SIGNAL(ptmIslandDataChanged()), _ptm_table_model_p, SLOT(onPtmIslandDataChanged()));
+    connect (this, SIGNAL(ptmIslandDataChanged()), _ptm_table_model_p, SLOT(onPtmIslandDataChanged()));
 
     connect (_project_window, SIGNAL(identificationPtmGroupGrouped(IdentificationGroup *)), this,SLOT(doIdentificationPtmGroupGrouped(IdentificationGroup *)));
 
@@ -73,19 +73,20 @@ connect (this, SIGNAL(ptmIslandDataChanged()), _ptm_table_model_p, SLOT(onPtmIsl
 
 PtmIslandListWindow::~PtmIslandListWindow()
 {
-
+    delete _ptm_table_model_p;
+    delete _ptm_proxy_model_p;
 }
 
 void PtmIslandListWindow::setIdentificationGroup(IdentificationGroup * p_identification_group) {
-  
-    qDebug() << "PtmIslandListWindow::setIdentificationGroup begin " ; 
+
+    qDebug() << "PtmIslandListWindow::setIdentificationGroup begin " ;
     if (p_identification_group != nullptr) {
         qDebug() << "PtmIslandListWindow::setIdentificationGroup not null";
         _p_identification_group = p_identification_group;
         _ptm_table_model_p->setIdentificationGroup(p_identification_group);
         //_p_proxy_model->setSourceModel(_protein_table_model_p);
-        
-        
+
+
     }
     else {
         qDebug() << "PtmIslandListWindow::setIdentificationGroup  null";
@@ -100,7 +101,10 @@ void PtmIslandListWindow::doIdentificationPtmGroupGrouped(IdentificationGroup *
     if (_p_identification_group == p_identification_group) {
         //_protein_table_model_p->setIdentificationGroup(p_identification_group);
         //_p_proxy_model->setSourceModel(_protein_table_model_p);
+        _ptm_table_model_p->setIdentificationGroup(p_identification_group);
         emit ptmIslandDataChanged();
+        
+        ui->ptm_island_tableview->resizeRowToContents(_ptm_table_model_p->rowCount());
     }
 
     qDebug() << "PtmIslandListWindow::doIdentificationPtmGroupGrouped end";
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
index c34250a012ee2917e28580773c1ce4ca2a762326..7f7a3c034e496095c0b9b07e1b5b426e8ce5ea24 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
@@ -28,6 +28,10 @@
 ******************************************************************************/
 
 #include "ptmislandproxymodel.h"
+#include "ptmislandtablemodel.h"
+#include "../../grouping/ptm/ptmgroupingexperiment.h"
+#include "../../grouping/ptm/ptmisland.h"
+#include <pappsomspp/pappsoexception.h>
 
 PtmIslandProxyModel::PtmIslandProxyModel(PtmIslandListWindow * p_ptm_island_list_window, PtmIslandTableModel* ptm_table_model_p)
 {
@@ -39,3 +43,32 @@ PtmIslandProxyModel::~PtmIslandProxyModel()
 {
 
 }
+
+bool PtmIslandProxyModel::filterAcceptsRow(int source_row,
+        const QModelIndex &source_parent) const {
+    try {
+        //qDebug() << "ProteinTableProxyModel::filterAcceptsRow begin " << source_row;
+        PtmIslandSp sp_ptm_island = _p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(source_row);
+        //qDebug() << "ProteinTableProxyModel::filterAcceptsRow protein_match " << source_row;
+
+        if (sp_ptm_island != nullptr) {
+            return true;
+        }
+        return false;
+    }
+
+    catch (pappso::PappsoException exception_pappso) {
+        //QMessageBox::warning(this,
+        //                     tr("Error in ProteinTableModel::acceptRow :"), exception_pappso.qwhat());
+        qDebug() << "Error in PtmIslandProxyModel::acceptRow :" << exception_pappso.qwhat();
+    }
+    catch (std::exception exception_std) {
+        //QMessageBox::warning(this,
+        //                    tr("Error in ProteinTableModel::acceptRow :"), exception_std.what());
+        qDebug() << "Error in PtmIslandProxyModel::acceptRow :" << exception_std.what();
+    }
+
+    return true;
+
+    //return true;
+}
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.h b/src/gui/ptm_island_list_view/ptmislandproxymodel.h
index bac67e6cc2f352e3e7cf5578ccea9d454461c305..f35e988ff22041b4438e701d0973281f19bdfc0a 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.h
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.h
@@ -43,9 +43,11 @@ class PtmIslandProxyModel: public QSortFilterProxyModel
 public:
     PtmIslandProxyModel(PtmIslandListWindow * p_ptm_island_list_window, PtmIslandTableModel* ptm_table_model_p);
     ~PtmIslandProxyModel();
+    bool filterAcceptsRow(int source_row,
+                          const QModelIndex &source_parent) const override;
 private:
-  PtmIslandListWindow * _p_ptm_island_list_window;
-  PtmIslandTableModel * _p_ptm_island_table_model;
+    PtmIslandListWindow * _p_ptm_island_list_window;
+    PtmIslandTableModel * _p_ptm_island_table_model;
 };
 
 #endif // PTMISLANDPROXYMODEL_H
diff --git a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
index 37457a85d56d30825e3f881c3f65d7cb40da99f1..396fcff08788917b369cdb4d0d275758f78d43b2 100644
--- a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
@@ -136,7 +136,8 @@ const QString PtmIslandTableModel::getDescription(std::int8_t column) {
     return "";
 }
 void PtmIslandTableModel::setIdentificationGroup(IdentificationGroup * p_identification_group) {
-    qDebug() << "PtmIslandTableModel::setIdentificationGroup begin ";
+    qDebug() << "PtmIslandTableModel::setIdentificationGroup begin ";    
+    
     beginResetModel();
     _p_identification_group = p_identification_group;
 
@@ -144,6 +145,16 @@ void PtmIslandTableModel::setIdentificationGroup(IdentificationGroup * p_identif
     //refresh();
     qDebug() << "PtmIslandTableModel::setIdentificationGroup end ";
     endResetModel();
+    
+    //emit layoutAboutToBeChanged();
+    //emit layoutChanged();
+    /*
+    QModelIndex topLeft = index(0, 0);
+    QModelIndex bottomRight = index(rowCount() - 1, columnCount() - 1);
+
+    emit dataChanged(topLeft, bottomRight);
+    */
+    
 }
 const PtmGroupingExperiment * PtmIslandTableModel::getPtmGroupingExperiment() const {
     if (_p_identification_group == nullptr) {
@@ -152,9 +163,9 @@ const PtmGroupingExperiment * PtmIslandTableModel::getPtmGroupingExperiment() co
     return _p_identification_group->getPtmGroupingExperiment();
 }
 int PtmIslandTableModel::rowCount(const QModelIndex &parent ) const {
-    //qDebug() << "ProteinTableModel::rowCount begin ";
+    qDebug() << "PtmIslandTableModel::rowCount begin ";
     if (getPtmGroupingExperiment() != nullptr) {
-        //qDebug() << "ProteinTableModel::rowCount(const QModelIndex &parent ) " << _p_identification_group->getProteinMatchList().size();
+        qDebug() << "PtmIslandTableModel::rowCount(const QModelIndex &parent ) " << getPtmGroupingExperiment()->getPtmIslandList().size();
         return (int) getPtmGroupingExperiment()->getPtmIslandList().size();
     }
     return 0;
diff --git a/src/gui/ptm_island_list_view/ptmislandtablemodel.h b/src/gui/ptm_island_list_view/ptmislandtablemodel.h
index dfac66fec683e1f0bb65e57215941e571d8a1a85..d7e40067aea16cb510c22098a5ba93f861c48231 100644
--- a/src/gui/ptm_island_list_view/ptmislandtablemodel.h
+++ b/src/gui/ptm_island_list_view/ptmislandtablemodel.h
@@ -72,13 +72,13 @@ public:
     static const QString getTitle(PtmIslandListColumn column);
     static const QString getDescription(PtmIslandListColumn column);
 
+    const PtmGroupingExperiment * getPtmGroupingExperiment() const;
 
     using columnMap = std::int8_t[20];
 
 public slots:
     void onPtmIslandDataChanged();
 private :
-    const PtmGroupingExperiment * getPtmGroupingExperiment() const;
     static const QString getTitle(std::int8_t column);
     static const QString getDescription(std::int8_t column);
 private :