diff --git a/src/core/project.cpp b/src/core/project.cpp
index b5b3940dce5948e6aca2f55630cda0650dfe7d3a..ecbb6f911153d509e688542de6871fe89e75d73a 100644
--- a/src/core/project.cpp
+++ b/src/core/project.cpp
@@ -38,7 +38,9 @@ Project::~Project()
         it++;
     }
 }
-
+const GroupingType Project::getGroupingType() const {
+  return _grouping_type;
+}
 PeptideStore & Project::getPeptideStore() {
     return _peptide_store;
 }
diff --git a/src/core/project.h b/src/core/project.h
index 2e98fc3cf866b1da147b8edc4377f37789c4c9c1..677f54ad3fb8985a9e52ac1359effb6ff0533144 100644
--- a/src/core/project.h
+++ b/src/core/project.h
@@ -53,6 +53,8 @@ public:
      * */
     void updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters);
     void startGrouping();
+    
+    const GroupingType getGroupingType() const;
  
 
 private :
diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp
index f8245bed2b975f4a691fe8547bf22fcd3475f180..a4e6afeb68b9694dc78c81b06b6ccdce15b299eb 100644
--- a/src/gui/project_view/projectwindow.cpp
+++ b/src/gui/project_view/projectwindow.cpp
@@ -64,7 +64,9 @@ ProjectWindow::~ProjectWindow()
 
 }
 void ProjectWindow::setDefaultProteinListWindow(ProteinListWindow* p_protein_list_window) {
+    qDebug() << "ProjectWindow::setDefaultProteinListWindow begin";
     _p_current_protein_list_window = p_protein_list_window;
+    qDebug() << "ProjectWindow::setDefaultProteinListWindow end";
 }
 
 void ProjectWindow::connectNewProteinListWindow() {
@@ -82,6 +84,8 @@ void ProjectWindow::connectNewProteinListWindow() {
 #else
 // Qt4 code
     connect (_p_current_protein_list_window, SIGNAL(proteinMatchClicked(ProteinMatch *)), this,SLOT(doProteinMatchClicked(ProteinMatch *)));
+    connect (_p_current_protein_list_window, SIGNAL(identificationGroupEdited(IdentificationGroup *)), this,SLOT(doIdentificationGroupEdited(IdentificationGroup *)));
+    connect (this, SIGNAL(identificationGroupGrouped(IdentificationGroup *)), _p_current_protein_list_window,SLOT(doIdentificationGroupGrouped(IdentificationGroup *)));
 
 #endif
 
@@ -89,6 +93,16 @@ void ProjectWindow::connectNewProteinListWindow() {
 
 }
 
+void ProjectWindow::doIdentificationGroupEdited(IdentificationGroup * p_ident_group) {
+    qDebug() << "ProjectWindow::doIdentificationGroupEdited begin";
+    p_ident_group->startGrouping(_project_sp.get()->getGroupingType());
+    
+    
+    emit identificationGroupGrouped(p_ident_group);
+
+    qDebug() << "ProjectWindow::doIdentificationGroupEdited end";
+}
+
 void ProjectWindow::doProteinMatchClicked(ProteinMatch * protein_match) {
     PeptideListWindow * peptide_window = new PeptideListWindow(this);
     peptide_window->setProteinMatch(_project_sp.get(), protein_match);
diff --git a/src/gui/project_view/projectwindow.h b/src/gui/project_view/projectwindow.h
index 87eb657f8ce3364a113eeef9d08240ae57d858d9..bba8045b35e3e1c4bdc57d548fd36f7d1dd43a07 100644
--- a/src/gui/project_view/projectwindow.h
+++ b/src/gui/project_view/projectwindow.h
@@ -47,17 +47,19 @@ public:
 public slots:
     void doViewProteinList(IdentificationGroup* p_identification_group =nullptr);
     void doProteinMatchClicked(ProteinMatch * protein_match);
+    void doIdentificationGroupEdited(IdentificationGroup * p_identification_group);
     void setDefaultProteinListWindow(ProteinListWindow* p_protein_list_window);
     // void setColor(const QColor &color);
     // void setShape(Shape shape);
 signals:
+    void identificationGroupGrouped(IdentificationGroup * p_identification_group);
     //void peptideChanged(pappso::PeptideSp peptide);
 
 private :
     void connectNewProteinListWindow();
 private:
     Ui::ProjectView *ui;
-    MainWindow * main_window;    
+    MainWindow * main_window;
     std::list <ProteinListWindow *> _protein_list_window_collection;
     ProteinListWindow * _p_current_protein_list_window = nullptr;
     ProjectSp _project_sp;
diff --git a/src/gui/protein_list_view/proteinlistwindow.cpp b/src/gui/protein_list_view/proteinlistwindow.cpp
index b4eec221ec55bad78b50182ab7c67b12856e65ad..1a888fac7ade4bd0fb698b525cb0aa35158932dd 100644
--- a/src/gui/protein_list_view/proteinlistwindow.cpp
+++ b/src/gui/protein_list_view/proteinlistwindow.cpp
@@ -84,6 +84,23 @@ ProteinListWindow::~ProteinListWindow()
 
 }
 
+void ProteinListWindow::edited() {
+    qDebug() << "ProteinListWindow::edited begin";
+    //emit dataChanged(index, index);
+    emit identificationGroupEdited(_p_identification_group);
+    updateStatusBar();
+
+    qDebug() << "ProteinListWindow::edited end";
+}
+
+void ProteinListWindow::doIdentificationGroupGrouped(IdentificationGroup * p_identification_group) {
+    qDebug() << "ProteinListWindow::doIdentificationGroupGrouped begin";
+    if (_p_identification_group == p_identification_group) {
+        _p_proxy_model->setSourceModel(_protein_table_model_p);
+        updateStatusBar();
+    }
+    qDebug() << "ProteinListWindow::doIdentificationGroupGrouped end";
+}
 
 void ProteinListWindow::setIdentificationGroup(IdentificationGroup * p_identification_group) {
     if (_p_identification_group != p_identification_group) {
diff --git a/src/gui/protein_list_view/proteinlistwindow.h b/src/gui/protein_list_view/proteinlistwindow.h
index 6bf3f442faaa37c8a08bc6cc674b3874106c0b80..cf9cbe34a2213dc91d6303642241baff6e361eb3 100644
--- a/src/gui/protein_list_view/proteinlistwindow.h
+++ b/src/gui/protein_list_view/proteinlistwindow.h
@@ -38,22 +38,28 @@ class ProteinView;
 class ProteinListWindow: public QMainWindow {
     Q_OBJECT
 
+    friend ProteinTableModel;
 public:
 
     explicit ProteinListWindow(ProjectWindow * parent = 0);
     ~ProteinListWindow();
     void setIdentificationGroup(IdentificationGroup * p_identification_group);
     void doubleclickOnproteinMatch(ProteinMatch * p_protein_match);
-    void updateStatusBar();
+    
+    void edited();
 
 public slots:
     void doFocusReceived(bool has_focus);
+    void doIdentificationGroupGrouped(IdentificationGroup * p_identification_group);
     //void peptideEdited(QString peptideStr);
     // void setColor(const QColor &color);
     // void setShape(Shape shape);
 signals:
     void proteinMatchClicked(ProteinMatch * p_protein_match);
+    void identificationGroupEdited(IdentificationGroup * p_identification_group);
 
+protected : 
+    void updateStatusBar();
 private:
     IdentificationGroup * _p_identification_group;
     Ui::ProteinView *ui;
diff --git a/src/gui/protein_list_view/proteintablemodel.cpp b/src/gui/protein_list_view/proteintablemodel.cpp
index 8962a472818b518dc32a8bb1bd66f97efc14a561..89306e95912ba5d476caef4d6ddbd36e24ca2253 100644
--- a/src/gui/protein_list_view/proteintablemodel.cpp
+++ b/src/gui/protein_list_view/proteintablemodel.cpp
@@ -233,8 +233,7 @@ void ProteinTableModel::onTableClicked(const QModelIndex &index)
         else {
             _p_identification_group->getProteinMatchList().at(row)->setChecked(true);
         }
-        //emit dataChanged(index, index);
-        _p_protein_list_window->updateStatusBar();
+        _p_protein_list_window->edited();
     }
 }