diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp
index d63e3063738ae509eabea6edced140c102631608..8b71419c6db26ca89b077ff6fc14a5fef5a1d6d8 100644
--- a/src/mesh/GmshReader.cpp
+++ b/src/mesh/GmshReader.cpp
@@ -10,6 +10,7 @@
 #include <Connectivity.hpp>
 
 #include <Mesh.hpp>
+#include <MeshData.hpp>
 
 #include <RefFaceList.hpp>
 #include <Messenger.hpp>
@@ -248,74 +249,31 @@ void GmshReader::_dispatch()
 
   MeshDispatcher<Dimension> dispatcher(mesh);
 
+  MeshData data(mesh);
+  data.updateAllData();
+
+  std::vector<Array<Rd>> recv_cell_center_by_proc
+      = dispatcher.exchange(data.xj());
+
   std::vector<Array<int>> recv_cell_number_by_proc
       = dispatcher.exchange(mesh.connectivity().cellNumber());
 
   std::vector<Array<CellType>> recv_cell_type_by_proc
       = dispatcher.exchange(mesh.connectivity().cellType());
 
-  // const std::vector<Array<const CellId>>& cell_to_send_by_proc
-  //     = dispatcher.cell_list_to_send_by_proc();
-
-  // Array<int> nb_cell_to_send_by_proc(commSize());
-  // for (size_t i=0; i<commSize(); ++i) {
-  //   nb_cell_to_send_by_proc[i] = cell_to_send_by_proc[i].size();
-  // }
-
-  // Array<int> nb_cell_to_recv_by_proc = allToAll(nb_cell_to_send_by_proc);
-
-
-  // const auto& cell_number = mesh.connectivity().cellNumber();
-  // const std::vector<Array<const int>> cell_number_to_send_by_proc
-  //     = [&] () {
-  //         std::vector<Array<const int>> cell_number_to_send_by_proc(commSize());
-  //         for (size_t i=0; i<commSize(); ++i) {
-  //           const Array<const CellId>& cell_list = cell_to_send_by_proc[i];
-  //           Array<int> cell_number_list(cell_list.size());
-  //           parallel_for (cell_list.size(), PASTIS_LAMBDA(const CellId& cell_id) {
-  //               cell_number_list[cell_id] = cell_number[cell_list[cell_id]];
-  //             });
-  //           cell_number_to_send_by_proc[i] = cell_number_list;
-  //         }
-  //         return std::move(cell_number_to_send_by_proc);
-  //       } ();
-
-  // std::vector<Array<int>> recv_cell_number_by_proc(commSize());
-  // for (size_t i=0; i<commSize(); ++i) {
-  //   recv_cell_number_by_proc[i] = Array<int>(nb_cell_to_recv_by_proc[i]);
-  // }
-
-  // exchange(cell_number_to_send_by_proc, recv_cell_number_by_proc);
-
-  // std::vector<Array<CellType>> cell_type_to_send_by_proc
-  //     = [&] () {
-  //         CellValue<const CellType> cell_type = mesh.connectivity().cellType();
-  //         std::vector<std::vector<CellType>> cell_type_vector_to_send_by_proc(commSize());
-  //         for (CellId i=0; i<mesh.numberOfCells(); ++i) {
-  //           cell_type_vector_to_send_by_proc[cell_new_owner[i]].push_back(cell_type[i]);
-  //         }
-  //         return cell_type_vector_to_send_by_proc;
-  //       } ();
-
   for (int i_rank=0; i_rank < commSize(); ++i_rank) {
     if (commRank() == i_rank) {
       std::cout << "----- rank=" << i_rank << " -----\n";
       for (int j_rank=0; j_rank < commSize(); ++j_rank) {
         std::cout << "recv from " << j_rank << ':';
         for (size_t i=0; i<recv_cell_number_by_proc[j_rank].size(); ++i) {
-          std::cout << ' ' << recv_cell_number_by_proc[j_rank][i];
+          std::cout << ' ' << recv_cell_number_by_proc[j_rank][i] << '[' << name(recv_cell_type_by_proc[j_rank][i])<< "]:" << recv_cell_center_by_proc[j_rank][i];
         }
         std::cout << '\n' << std::flush;
       }
     }
-    //    barrier();
   }
 
-  // const size_t new_cell_number
-  //     = mesh.numberOfCells()
-  //     + Sum(nb_cell_to_recv_by_proc)
-  //     - Sum(nb_cell_to_send_by_proc);
-
 
   Messenger::destroy();
   std::exit(0);