diff --git a/src/ppm_fdsolver_init.f b/src/ppm_fdsolver_init.f
index eafb8386dc0809c6ff116ad3a79352cc16e85aba..2dd3b65a2362412e0a76c0ac60cf05b782bf5de9 100644
--- a/src/ppm_fdsolver_init.f
+++ b/src/ppm_fdsolver_init.f
@@ -138,7 +138,7 @@
       !  Modules
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_mktopo
       USE ppm_module_typedef
       USE ppm_module_data_fieldsolver
diff --git a/src/ppm_fdsolver_solve_2d.f b/src/ppm_fdsolver_solve_2d.f
index 3c1fde2eaffdd9aab9ca20946d3bfa95ac80b82c..a0286b4c6e3ec6b449c86aa69f0b7193cdf1f79e 100644
--- a/src/ppm_fdsolver_solve_2d.f
+++ b/src/ppm_fdsolver_solve_2d.f
@@ -182,7 +182,7 @@
       !  Modules
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_substart
       USE ppm_module_substop
       USE ppm_module_write
diff --git a/src/ppm_fdsolver_solve_3d.f b/src/ppm_fdsolver_solve_3d.f
index 49bd31c4845f16557566f62b77dec5462e3fe181..023acef21c9383cec9b889f5022e67c5394d71cd 100644
--- a/src/ppm_fdsolver_solve_3d.f
+++ b/src/ppm_fdsolver_solve_3d.f
@@ -231,7 +231,7 @@
       !  Modules
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_mktopo
       USE ppm_module_mesh_define
       USE ppm_module_fdsolver_map
diff --git a/src/ppm_gmm_cpt.f b/src/ppm_gmm_cpt.f
index 3c776cfdbc15fcb2a15ae778ce3881b2ab293afe..45bf371d6b9deffe1bf1f8e3c8eb9a57286d27db 100644
--- a/src/ppm_gmm_cpt.f
+++ b/src/ppm_gmm_cpt.f
@@ -34,7 +34,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_gmm_kickoff
       USE ppm_module_substart
diff --git a/src/ppm_gmm_extend.f b/src/ppm_gmm_extend.f
index be93c7ee37173dc99bb3433e66bc024463ee7127..39633ae7a79667902cd45a141d010f3c7c9aab70 100644
--- a/src/ppm_gmm_extend.f
+++ b/src/ppm_gmm_extend.f
@@ -95,7 +95,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_gmm_init
       USE ppm_module_gmm_cpt
diff --git a/src/ppm_gmm_extend_bkwd.f b/src/ppm_gmm_extend_bkwd.f
index 000a3cad49ace12b5709c94afb1bc765e7fe34eb..ab20544af6c6f832a076f92bacf29e56f5eba263 100644
--- a/src/ppm_gmm_extend_bkwd.f
+++ b/src/ppm_gmm_extend_bkwd.f
@@ -32,7 +32,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_substart
       USE ppm_module_substop
diff --git a/src/ppm_gmm_extend_fwd.f b/src/ppm_gmm_extend_fwd.f
index fc0c3fa596bcd708a23978ebe65c3ff4a1c50fae..454223d80d3027c8cfab3b83f8dda071c23789fd 100644
--- a/src/ppm_gmm_extend_fwd.f
+++ b/src/ppm_gmm_extend_fwd.f
@@ -32,7 +32,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_substart
       USE ppm_module_substop
diff --git a/src/ppm_gmm_init.f b/src/ppm_gmm_init.f
index c5d2539c10a8438c57e4009bccc0a0abb0eb830c..aba8414cd1308b83043cfa6a4cb0a487546f1ff1 100644
--- a/src/ppm_gmm_init.f
+++ b/src/ppm_gmm_init.f
@@ -17,7 +17,7 @@
       !-------------------------------------------------------------------------
       USE ppm_module_data
       USE ppm_module_data_gmm
-      USE ppm_module_data_mesh
+      
       USE ppm_module_error
       USE ppm_module_typedef
       IMPLICIT NONE
diff --git a/src/ppm_gmm_kickoff.f b/src/ppm_gmm_kickoff.f
index 3e91839f42b24a430b8befe88fe5852f2a67121d..e82f328ec2cac66f5c8c2634120ceceb41526f33 100644
--- a/src/ppm_gmm_kickoff.f
+++ b/src/ppm_gmm_kickoff.f
@@ -59,7 +59,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_substart
       USE ppm_module_substop
diff --git a/src/ppm_gmm_march.f b/src/ppm_gmm_march.f
index ae8f11f1172faad4447de5d2ce70a0b40a8f7537..3ab930e773ec3b4d086bf9a1abd4b6e8e611fc08 100644
--- a/src/ppm_gmm_march.f
+++ b/src/ppm_gmm_march.f
@@ -60,7 +60,7 @@
       !  Modules
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_gmm_march_fwd
       USE ppm_module_gmm_march_bkwd
diff --git a/src/ppm_gmm_march_bkwd.f b/src/ppm_gmm_march_bkwd.f
index 8ebfadcdabb1fe88169142bf5e42a783e3caf5b2..3c1d149d5e14c5f864f195b119b1d22c742e9c5f 100644
--- a/src/ppm_gmm_march_bkwd.f
+++ b/src/ppm_gmm_march_bkwd.f
@@ -32,7 +32,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_typedef
       USE ppm_module_substart
diff --git a/src/ppm_gmm_march_fwd.f b/src/ppm_gmm_march_fwd.f
index 7450ec3bed8d2da6daa0e7c8302bb0de8f4bdab5..67db1aa719df34e7fdb1acefdab2b7819e0db1ae 100644
--- a/src/ppm_gmm_march_fwd.f
+++ b/src/ppm_gmm_march_fwd.f
@@ -32,7 +32,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_substart
       USE ppm_module_substop
diff --git a/src/ppm_gmm_reinitialize.f b/src/ppm_gmm_reinitialize.f
index 0aa79837607018b69a24c44831d9acc0ffd3effd..3cbf198b2721c8c44a356d93fba11a885eed079b 100644
--- a/src/ppm_gmm_reinitialize.f
+++ b/src/ppm_gmm_reinitialize.f
@@ -38,7 +38,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
       USE ppm_module_data
-      USE ppm_module_data_mesh
+      
       USE ppm_module_data_gmm
       USE ppm_module_gmm_init
       USE ppm_module_gmm_kickoff
diff --git a/src/ppm_hamjac_ext_3d.f b/src/ppm_hamjac_ext_3d.f
index 09733333612f5ad09a17a43282ff0b46e7d75af9..f1b35f0eec6c33f47cd09b5bae4c9e9582db9ae2 100644
--- a/src/ppm_hamjac_ext_3d.f
+++ b/src/ppm_hamjac_ext_3d.f
@@ -57,7 +57,7 @@
       !  Modules 
       !-------------------------------------------------------------------------
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
diff --git a/src/ppm_hamjac_ext_step_3d.f b/src/ppm_hamjac_ext_step_3d.f
index 733cd5e0987a6bc7d29928da9eb7b51778405a86..8da44b787a5623a6b83bddfad19f20fa1d9cf7a2 100644
--- a/src/ppm_hamjac_ext_step_3d.f
+++ b/src/ppm_hamjac_ext_step_3d.f
@@ -54,7 +54,7 @@
 #endif
 #endif
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
diff --git a/src/ppm_hamjac_reinit_2d.f b/src/ppm_hamjac_reinit_2d.f
index 1eeeb0116defce01a6f36c70cc2a2a8d71cc0100..925ce53cb36e079f9bc404ec8775bed4702aa689 100644
--- a/src/ppm_hamjac_reinit_2d.f
+++ b/src/ppm_hamjac_reinit_2d.f
@@ -45,7 +45,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_write
         USE ppm_module_substart
diff --git a/src/ppm_hamjac_reinit_3d.f b/src/ppm_hamjac_reinit_3d.f
index 9dad18d6334c3eadebfd684c11b9696ff0a1c2a4..a88701662775afdeafbf3677744d09072bf81ab6 100644
--- a/src/ppm_hamjac_reinit_3d.f
+++ b/src/ppm_hamjac_reinit_3d.f
@@ -54,7 +54,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_write
         USE ppm_module_substart
diff --git a/src/ppm_hamjac_reinit_loc_3d.f b/src/ppm_hamjac_reinit_loc_3d.f
index 9878e44f7e23024a094d82300ed6ad320e39cf9a..c3ccc867b4cd2a2ab38660ee9c11031c8aa9b931 100644
--- a/src/ppm_hamjac_reinit_loc_3d.f
+++ b/src/ppm_hamjac_reinit_loc_3d.f
@@ -54,7 +54,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_write
         USE ppm_module_substart
diff --git a/src/ppm_hamjac_reinit_loc_step_3d.f b/src/ppm_hamjac_reinit_loc_step_3d.f
index d1b449d2a6def32843bf034c000893229ad8c59e..9dc4c7ae24807a786296d0d66ee9f1d4ef695b22 100644
--- a/src/ppm_hamjac_reinit_loc_step_3d.f
+++ b/src/ppm_hamjac_reinit_loc_step_3d.f
@@ -53,7 +53,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_substart
         USE ppm_module_substop
diff --git a/src/ppm_hamjac_reinit_ref_3d.f b/src/ppm_hamjac_reinit_ref_3d.f
index 8d822bf8114106c7554a57009be27f7ea1bdc126..4734d4bf8f6bae4bb9b3cf7db8ea653043baa0d6 100644
--- a/src/ppm_hamjac_reinit_ref_3d.f
+++ b/src/ppm_hamjac_reinit_ref_3d.f
@@ -45,7 +45,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_write
         USE ppm_module_substart
diff --git a/src/ppm_hamjac_reinit_russo_3d.f b/src/ppm_hamjac_reinit_russo_3d.f
index b4f9d1f5c2225881e123d1b82e3d112f12b37bb8..e00e29dd82fd6cf0ffb8562caa7a204c5cf9baaf 100644
--- a/src/ppm_hamjac_reinit_russo_3d.f
+++ b/src/ppm_hamjac_reinit_russo_3d.f
@@ -45,7 +45,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_write
         USE ppm_module_substart
diff --git a/src/ppm_hamjac_reinit_russo_step_3d.f b/src/ppm_hamjac_reinit_russo_step_3d.f
index 079b6fc6ae69062ceb708f262381c15600de828c..212cf76221a7c54981cb327877c027169b17dd66 100644
--- a/src/ppm_hamjac_reinit_russo_step_3d.f
+++ b/src/ppm_hamjac_reinit_russo_step_3d.f
@@ -45,7 +45,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_substart
         USE ppm_module_substop
diff --git a/src/ppm_hamjac_reinit_step_2d.f b/src/ppm_hamjac_reinit_step_2d.f
index cce894a3dd8a368fb3c2fd531adcdff148fe58eb..3edac699a5d64b88200a8375e790a20235c20931 100644
--- a/src/ppm_hamjac_reinit_step_2d.f
+++ b/src/ppm_hamjac_reinit_step_2d.f
@@ -44,7 +44,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_substart
         USE ppm_module_substop
diff --git a/src/ppm_hamjac_reinit_step_3d.f b/src/ppm_hamjac_reinit_step_3d.f
index c21f0537974d745edbd6d38bec19913fdc4f218b..e67a95b707cbb1382ad904a9ef16421b9d2dd8a9 100644
--- a/src/ppm_hamjac_reinit_step_3d.f
+++ b/src/ppm_hamjac_reinit_step_3d.f
@@ -53,7 +53,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_substart
         USE ppm_module_substop
diff --git a/src/ppm_hamjac_reinit_step_ref_3d.f b/src/ppm_hamjac_reinit_step_ref_3d.f
index 6c65762681ed766492bfcc9649b55047bc571b6b..70168f06fd2c5e7cfbf4fa260d60f3b9b8c61fb8 100644
--- a/src/ppm_hamjac_reinit_step_ref_3d.f
+++ b/src/ppm_hamjac_reinit_step_ref_3d.f
@@ -48,7 +48,7 @@
 #endif
 
         USE ppm_module_data
-        USE ppm_module_data_mesh
+        
         USE ppm_module_error
         USE ppm_module_substart
         USE ppm_module_substop
diff --git a/src/ppm_mg_init.f b/src/ppm_mg_init.f
index 647fd3aecef8fe607e6305ceade3e378ed5d69d3..cf4fb73c0a0adaa85532102250c21121b0a35fc9 100644
--- a/src/ppm_mg_init.f
+++ b/src/ppm_mg_init.f
@@ -149,7 +149,7 @@
          !  Modules 
          !----------------------------------------------------------------------
          USE ppm_module_data
-         USE ppm_module_data_mesh
+         
          USE ppm_module_data_mg
          USE ppm_module_mg_alloc
          USE ppm_module_alloc
@@ -908,9 +908,9 @@
                ldl3(1) = 1-ghostsize(1)
                ldl3(2) = 1-ghostsize(2)
                ldl3(3) = 1-ghostsize(3)
-               ldu3(1) = ppm_cart_mesh(meshid,topoid)%nnodes(1,idom)+ghostsize(1)
-               ldu3(2) = ppm_cart_mesh(meshid,topoid)%nnodes(2,idom)+ghostsize(2)
-               ldu3(3) = ppm_cart_mesh(meshid,topoid)%nnodes(3,idom)+ghostsize(3)
+               ldu3(1) = mesh%nnodes(1,idom)+ghostsize(1)
+               ldu3(2) = mesh%nnodes(2,idom)+ghostsize(2)
+               ldu3(3) = mesh%nnodes(3,idom)+ghostsize(3)
                CALL ppm_alloc(mgfield(i,mlev)%uc,ldl3,ldu3,iopt,info)
                IF (info .NE. 0) THEN
                   info = ppm_error_fatal
@@ -921,9 +921,9 @@
                tuc=>mgfield(i,mlev)%uc
                tuc=0.0_MK              
                iopt = ppm_param_alloc_fit
-               ldu3(1) = ppm_cart_mesh(meshid,topoid)%nnodes(1,idom)
-               ldu3(2) = ppm_cart_mesh(meshid,topoid)%nnodes(2,idom)
-               ldu3(3) = ppm_cart_mesh(meshid,topoid)%nnodes(3,idom)
+               ldu3(1) = mesh%nnodes(1,idom)
+               ldu3(2) = mesh%nnodes(2,idom)
+               ldu3(3) = mesh%nnodes(3,idom)
                CALL ppm_alloc(mgfield(i,mlev)%fc,ldu3,iopt,info)
                IF (info .NE. 0) THEN
                   info = ppm_error_fatal
@@ -936,9 +936,9 @@
                ldl3(1) = 1-ghostsize(1)
                ldl3(2) = 1-ghostsize(2)
                ldl3(3) = 1-ghostsize(3)
-               ldu3(1) = ppm_cart_mesh(meshid,topoid)%nnodes(1,idom)+ghostsize(1)
-               ldu3(2) = ppm_cart_mesh(meshid,topoid)%nnodes(2,idom)+ghostsize(2)
-               ldu3(3) = ppm_cart_mesh(meshid,topoid)%nnodes(3,idom)+ghostsize(3)
+               ldu3(1) = mesh%nnodes(1,idom)+ghostsize(1)
+               ldu3(2) = mesh%nnodes(2,idom)+ghostsize(2)
+               ldu3(3) = mesh%nnodes(3,idom)+ghostsize(3)
                CALL ppm_alloc(mgfield(i,mlev)%err,ldl3,ldu3,iopt,info)
                IF (info .NE. 0) THEN
                   info = ppm_error_fatal
diff --git a/src/ppm_mg_res_coarse.f b/src/ppm_mg_res_coarse.f
index df1139ed57c708ad1a67723b8029e63bdcd43dc5..bfe6d1faaa553e5ea4fe0b402409366cd9e4afde 100644
--- a/src/ppm_mg_res_coarse.f
+++ b/src/ppm_mg_res_coarse.f
@@ -90,7 +90,7 @@
         !-----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        USE ppm_module_data_mesh
+        
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
diff --git a/src/ppm_mg_res_fine.f b/src/ppm_mg_res_fine.f
index e8d82e9395f04ce4465ca82136949be3cea1cf24..c29375eeb1ed5a7f387b99fda51bc132e55132eb 100644
--- a/src/ppm_mg_res_fine.f
+++ b/src/ppm_mg_res_fine.f
@@ -87,7 +87,7 @@
         !-----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        USE ppm_module_data_mesh
+        
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
diff --git a/src/ppm_mg_smooth_coarse.f b/src/ppm_mg_smooth_coarse.f
index e9f6f627d9c8c9c4cff58ee5a2e1e866b740723c..2c7afdbb143b876629e53a26a83b3312543d4ae7 100644
--- a/src/ppm_mg_smooth_coarse.f
+++ b/src/ppm_mg_smooth_coarse.f
@@ -120,7 +120,7 @@
          USE ppm_module_error
          USE ppm_module_alloc
          USE ppm_module_map
-         USE ppm_module_data_mesh
+         
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_smooth_fine.f b/src/ppm_mg_smooth_fine.f
index 0ccef032ddf80f4d6df63e810c42bf79be098ee7..7bbaafbc01cb11c8d2b7a4c5d41d612482972eb1 100644
--- a/src/ppm_mg_smooth_fine.f
+++ b/src/ppm_mg_smooth_fine.f
@@ -114,7 +114,7 @@
          USE ppm_module_error
          USE ppm_module_alloc
          USE ppm_module_map
-         USE ppm_module_data_mesh
+         
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_solv.f b/src/ppm_mg_solv.f
index ef0adce1139f4ce0227f42bc7ae8a41978de1692..9f57ebd2f62fa2fb613f653e46c0bb61c739ff30 100644
--- a/src/ppm_mg_solv.f
+++ b/src/ppm_mg_solv.f
@@ -121,7 +121,7 @@
          !----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        USE ppm_module_data_mesh
+        
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
@@ -183,6 +183,7 @@
          REAL(MK)                             :: gEu 
          INTEGER                              :: MPI_PREC
          TYPE(ppm_t_topo),      POINTER       :: topo
+         TYPE(ppm_t_equi_mesh), POINTER       :: mesh
 #if __MESH_DIM == __3D
          REAL(MK)                             :: c5,dz,rdz2
          INTEGER,DIMENSION(4)                 :: ldl4,ldu4
@@ -267,6 +268,7 @@
         ENDIF
 #endif
 		topo => ppm_topo(topo_id)%t
+		mesh => topo%mesh(meshid_g(1))
         !----------------------------------------------------------------------
         !  Check arguments
         !----------------------------------------------------------------------
@@ -282,15 +284,15 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(u(:,:,i),1).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(1,idom)+2*ghostsize(1)) THEN
+              IF (SIZE(u(:,:,i),1).LT.mesh%nnodes(1,idom)+ &
+     &                                              2*ghostsize(1)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in x-dir!',__LINE__,info)  
                  GOTO 9999    
               ENDIF
-              IF (SIZE(u(:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(2,idom)+2*ghostsize(2)) THEN
+              IF (SIZE(u(:,:,i),2).LT.mesh%nnodes(2,idom) &
+     &                                             +2*ghostsize(2)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in y-dir!',__LINE__,info)
@@ -306,15 +308,13 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(f(:,:,i),1).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                  topoid)%nnodes(1,idom)) THEN
+              IF (SIZE(f(:,:,i),1).LT. mesh%nnodes(1,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'rhs mess with mesh points in x-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(f(:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(2,idom)) THEN
+              IF (SIZE(f(:,:,i),2).LT. mesh%nnodes(2,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'rhs mess with mesh points in y-dir!',__LINE__,info)
@@ -331,22 +331,22 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(u(:,:,:,i),1).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                   topoid)%nnodes(1,idom)+2*ghostsize(1)) THEN
+              IF (SIZE(u(:,:,:,i),1).LT.mesh%nnodes(1,idom)+ &
+     &                                              2*ghostsize(1)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in x-dir!',__LINE__,info)  
                  GOTO 9999    
               ENDIF
-              IF (SIZE(u(:,:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(2,idom)+2*ghostsize(2)) THEN
+              IF (SIZE(u(:,:,:,i),2).LT.mesh%nnodes(2,idom)+ &
+     &                                              2*ghostsize(1)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in y-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(u(:,:,:,i),3).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                   topoid)%nnodes(3,idom)+2*ghostsize(3)) THEN
+              IF (SIZE(u(:,:,:,i),3).LT.mesh%nnodes(3,idom)+ &
+     &                                              2*ghostsize(1)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in z-dir!',__LINE__,info)
@@ -362,22 +362,19 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(f(:,:,:,i),1).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                    topoid)%nnodes(1,idom)) THEN
+              IF (SIZE(f(:,:,:,i),1).LT.mesh%nnodes(1,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &                   'rhs mess with mesh points in x-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(f(:,:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                          topoid)%nnodes(2,idom)) THEN
+              IF (SIZE(f(:,:,:,i),2).LT.mesh%nnodes(2,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &            'rhs mess with mesh points in y-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(f(:,:,:,i),3).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                         topoid)%nnodes(3,idom)) THEN
+              IF (SIZE(f(:,:,:,i),3).LT.mesh%nnodes(3,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'rhs mess with mesh points in z-dir!',__LINE__,info)
@@ -396,15 +393,13 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(u(:,:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(1,idom)+2) THEN
+              IF (SIZE(u(:,:,:,i),2).LT.mesh%nnodes(1,idom)+2) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in x-dir!',__LINE__,info)  
                  GOTO 9999    
               ENDIF
-              IF (SIZE(u(:,:,:,i),3).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(2,idom)+2) THEN
+              IF (SIZE(u(:,:,:,i),3).LT.mesh%nnodes(2,idom)+2) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in y-dir!',__LINE__,info)
@@ -420,15 +415,13 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(f(:,:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                  topoid)%nnodes(1,idom)) THEN
+              IF (SIZE(f(:,:,:,i),2).LT.mesh%nnodes(1,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'rhs mess with mesh points in x-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(f(:,:,:,i),3).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(2,idom)) THEN
+              IF (SIZE(f(:,:,:,i),3).LT.mesh%nnodes(2,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'rhs mess with mesh points in y-dir!',__LINE__,info)
@@ -445,22 +438,22 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(u(:,:,:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                   topoid)%nnodes(1,idom)+2*ghostsize(1)) THEN
+              IF (SIZE(u(:,:,:,:,i),2).LT.mesh%nnodes(1,idom)+ &
+     &                                              2*ghostsize(1)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in x-dir!',__LINE__,info)  
                  GOTO 9999    
               ENDIF
-              IF (SIZE(u(:,:,:,:,i),3).LT.ppm_cart_mesh(meshid_g(1),  &
-     &           topoid)%nnodes(2,idom)+2*ghostsize(2)) THEN
+              IF (SIZE(u(:,:,:,:,i),3).LT.mesh%nnodes(2,idom)+ &
+     &                                              2*ghostsize(1)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in y-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(u(:,:,:,:,i),4).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                   topoid)%nnodes(3,idom)+2*ghostsize(3)) THEN
+              IF (SIZE(u(:,:,:,:,i),4).LT.mesh%nnodes(3,idom)+ &
+     &                                              2*ghostsize(1)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'solution mess with mesh points in z-dir!',__LINE__,info)
@@ -476,22 +469,19 @@
            topoid=topo_id
            DO i=1,nsubs
               idom=topo%isublist(i)
-              IF (SIZE(f(:,:,:,:,i),2).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                    topoid)%nnodes(1,idom)) THEN
+              IF (SIZE(f(:,:,:,:,i),2).LT.mesh%nnodes(1,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &                   'rhs mess with mesh points in x-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(f(:,:,:,:,i),3).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                          topoid)%nnodes(2,idom)) THEN
+              IF (SIZE(f(:,:,:,:,i),3).LT.mesh%nnodes(2,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &            'rhs mess with mesh points in y-dir!',__LINE__,info)
                  GOTO 9999
               ENDIF
-              IF (SIZE(f(:,:,:,:,i),4).LT.ppm_cart_mesh(meshid_g(1),  &
-     &                                         topoid)%nnodes(3,idom)) THEN
+              IF (SIZE(f(:,:,:,:,i),4).LT.mesh%nnodes(3,idom)) THEN
                  info = ppm_error_error
                  CALL ppm_error(ppm_err_argument,'ppm_mg_solv',  &
      &             'rhs mess with mesh points in z-dir!',__LINE__,info)
diff --git a/src/ppm_module_data_mesh.f b/src/ppm_module_data_mesh.f
deleted file mode 100644
index 77fd8a9c9634174045573b22cab0f1817464123a..0000000000000000000000000000000000000000
--- a/src/ppm_module_data_mesh.f
+++ /dev/null
@@ -1,156 +0,0 @@
-      !-------------------------------------------------------------------------
-      !  Module       :               ppm_module_data_mesh
-      !-------------------------------------------------------------------------
-      !
-      !  Purpose      : This module contains all data structures and
-      !                 definitions that are PRIVATE to the mesh routines.
-      !                 It also included those routines and provides
-      !                 INTERFACEs.
-      !                
-      !  Remarks      : The terminology distinguishes between meshes and
-      !                 fields (the data living on the meshes). Several
-      !                 fields can use the same mesh. Meshes are defined as
-      !                 ppm-internal TYPES, whereas fields are
-      !                 user-provided arrays.
-      !
-      !  References   :
-      !
-      !  Revisions    :
-      !-------------------------------------------------------------------------
-      !  $Log: ppm_module_data_mesh.f,v $
-      !  Revision 1.1.1.1  2007/07/13 10:18:57  ivos
-      !  CBL version of the PPM library
-      !
-      !  Revision 1.1  2004/07/26 07:28:18  ivos
-      !  Initial implementation. Originated from splitting the old ppm
-      !  modules.
-      !
-      !-------------------------------------------------------------------------
-      !  Perallel Particle Mesh Library (PPM)
-      !  Institute of Computational Science
-      !  ETH Zentrum, Hirschengraben 84
-      !  CH-8092 Zurich, Switzerland
-      !-------------------------------------------------------------------------
-
-      MODULE ppm_module_data_mesh
-
-         !----------------------------------------------------------------------
-         !  Mesh TYPEs
-         !----------------------------------------------------------------------
-         ! ppm-internal structure for equispaced cartesian meshes on subs
-         TYPE ppm_type_equi_mesh
-             ! topology ID (internal numbering) this mesh lives on
-             INTEGER                           :: topoid
-             ! The number of mesh NODES (not cells) in each direction in
-             ! each sub
-             INTEGER, DIMENSION(:,:), POINTER  :: nnodes
-             ! Starting indices of the mesh of this sub in the global mesh
-             INTEGER, DIMENSION(:,:), POINTER  :: istart
-             ! global number of mesh points in computational domain
-             INTEGER, DIMENSION(:  ), POINTER  :: Nm
-         END TYPE
-
-         ! mesh lists with translation between user numbering and internal
-         ! numbering of mesh IDs
-         TYPE ppm_type_mesh_list
-             ! translation from internal to user numbers
-             INTEGER, DIMENSION(:  ), POINTER  :: user
-             ! translation from user numbers to internal ones
-             INTEGER, DIMENSION(:  ), POINTER  :: internal
-         END TYPE
-
-         !----------------------------------------------------------------------
-         !  Internal meshes
-         !----------------------------------------------------------------------
-         ! first index: meshid (idea: several meshes can be defined on the same
-         ! topology at once, e.g. for multigrid solvers.), second: topoid
-         ! (internal numbering)
-         TYPE(ppm_type_equi_mesh), DIMENSION(:,:), POINTER :: ppm_cart_mesh
-         ! highest internal mesh ID available on each topology (internal
-         ! numbering)
-         INTEGER, DIMENSION(:  ), POINTER                  :: ppm_max_meshid
-         ! number translation lists (user<-->internal) for each topology
-         TYPE(ppm_type_mesh_list), DIMENSION(:  ), POINTER :: ppm_meshid
-
-         !----------------------------------------------------------------------
-         !  Mesh mapping, send and receive lists
-         !----------------------------------------------------------------------
-         ! list of source subs to send from local processor (local sub number
-         ! on source processor)
-         INTEGER, DIMENSION(:  ), POINTER          :: ppm_mesh_isendfromsub
-         ! start (lower-left corner) of mesh block to be sent in GLOBAL
-         ! mesh coordinates. First index: x,y[,z], 2nd: isendlist
-         INTEGER, DIMENSION(:,:), POINTER          :: ppm_mesh_isendblkstart
-         ! size (in grid points) of blocks to be sent
-         INTEGER, DIMENSION(:,:), POINTER          :: ppm_mesh_isendblksize
-         ! list of destination subs to recv to on local processors (local sub
-         ! number on destination processor)
-         INTEGER, DIMENSION(:  ), POINTER          :: ppm_mesh_irecvtosub
-         ! start (lower-left corner) of mesh block to be recvd in GLOBAL
-         ! mesh coordinates. First index: x,y[,z], 2nd: isendlist
-         INTEGER, DIMENSION(:,:), POINTER          :: ppm_mesh_irecvblkstart
-         ! size (in grid points) of blocks to be recvd
-         INTEGER, DIMENSION(:,:), POINTER          :: ppm_mesh_irecvblksize
-
-         ! define the target mesh id for mapping
-         INTEGER          :: ppm_target_meshid = -1
-         ! define the source mesh id for mapping
-         INTEGER          :: ppm_source_meshid = -1
-         ! define the target mesh id for the mapping 
-         ! NOTICE: NOT the same variable as the ppm_target_topoid in the
-         ! module ppm_module_map
-         INTEGER          :: ppm_target_topoid = -1
-
-         !----------------------------------------------------------------------
-         !  Mesh ghosts mappings
-         !----------------------------------------------------------------------
-         ! list of source subs of ghost mesh blocks (globel sub number).
-         ! These are the owner subs of the actual real mesh points
-         ! 1st index: meshblock ID, 2nd: meshid (internal numbering), 3rd:
-         ! topoid (internal numbering)
-         INTEGER, DIMENSION(:,:,:), POINTER            :: ppm_mesh_ghost_fromsub
-         ! list of target subs of ghost mesh blocks (globel sub number).
-         ! These are the subs a block will serve as a ghost on.
-         ! 1st index: meshblock ID, 2nd: meshid (internal numbering), 3rd:
-         ! topoid (internal numbering)
-         INTEGER, DIMENSION(:,:,:), POINTER            :: ppm_mesh_ghost_tosub
-         ! start (lower-left corner) of ghost mesh block in GLOBAL
-         ! mesh coordinates. First index: x,y[,z], 2nd: meshblock ID, 3rd:
-         ! meshid (internal numbering), 4th: topoid (internal numbering)
-         INTEGER, DIMENSION(:,:,:,:), POINTER          ::    &
-     &       ppm_mesh_ghost_blkstart
-         ! size (in grid points) of ghost blocks. 1st index: x,y[,z], 2nd:
-         ! meshblock ID, 3rd: meshid (internal numbering), 4th: topoid
-         ! (internal numbering)
-         INTEGER, DIMENSION(:,:,:,:), POINTER          :: ppm_mesh_ghost_blksize
-         ! mesh ghost block list. 1st index: target processor, 2nd: meshid
-         ! (internal numbering), 3rd: topoid (internal numbering)
-         INTEGER, DIMENSION(:,:,:)  , POINTER          :: ppm_mesh_ghost_blk
-         ! number of mesh blocks to be sent as ghosts. 1st: meshid, 2nd:
-         ! topoid (both internal numbering)
-         INTEGER, DIMENSION(:,:)    , POINTER          :: ppm_mesh_ghost_nsend
-         ! number of mesh blocks to be recvd as ghosts. 1st: meshid, 2nd:
-         ! topoid (both internal numbering)
-         INTEGER, DIMENSION(:,:)    , POINTER          :: ppm_mesh_ghost_nrecv
-         ! list of target subs for ghost mesh blocks to be received,
-         ! i.e. being ghost on the local processor (globel sub number).
-         ! These are the subs where the blocks will serve as ghosts
-         ! 1st index: meshblock ID, 2nd: meshid (internal numbering), 3rd:
-         ! topoid (internal numbering)
-         INTEGER, DIMENSION(:,:,:), POINTER            ::    &
-     &       ppm_mesh_ghost_recvtosub
-         ! start (lower-left corner) of received ghost mesh block in GLOBAL
-         ! mesh coordinates. First index: x,y[,z], 2nd: meshblock ID, 3rd:
-         ! meshid (internal numbering), 4th: topoid (internal numbering)
-         INTEGER, DIMENSION(:,:,:,:), POINTER          ::    &
-     &       ppm_mesh_ghost_recvblkstart
-         ! size (in grid points) of recvd ghost blocks. 1st index: x,y[,z], 2nd:
-         ! meshblock ID, 3rd: meshid (internal numbering), 4th: topoid
-         ! (internal numbering)
-         INTEGER, DIMENSION(:,:,:,:), POINTER          ::    &
-     &       ppm_mesh_ghost_recvblksize
-         ! mesh ghost block receive list. 1st index: target processor, 2nd: 
-         ! meshid (internal numbering), 3rd: topoid (internal numbering)
-         INTEGER, DIMENSION(:,:,:)  , POINTER          :: ppm_mesh_ghost_recvblk
-
-      END MODULE ppm_module_data_mesh