diff --git a/src/ppm_comp_pp_ring.f b/src/ppm_comp_pp_ring.f
index 1d85b7b02b5a21f9038ed46143077af0eb7ba702..4abdb1d3838134acb6684ef7a6bdf097351b29cc 100644
--- a/src/ppm_comp_pp_ring.f
+++ b/src/ppm_comp_pp_ring.f
@@ -91,6 +91,7 @@
       USE ppm_module_alloc
       USE ppm_module_map
       USE ppm_module_comp_pp_doring
+      USE ppm_module_map_part
       IMPLICIT NONE
 #if   __KIND == __SINGLE_PRECISION | __KIND == __SINGLE_PRECISION_COMPLEX
       INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_fdsolver_map_2d.f b/src/ppm_fdsolver_map_2d.f
index 5e6912f1587b663ae0f32299c9c22c756367eee1..17a2853d23006161b794df1e21ffbd3365779f82 100644
--- a/src/ppm_fdsolver_map_2d.f
+++ b/src/ppm_fdsolver_map_2d.f
@@ -110,7 +110,7 @@
       USE ppm_module_write
       USE ppm_module_substart
       USE ppm_module_substop
-
+      USE ppm_module_map_field
       IMPLICIT NONE
 #if   __KIND == __SINGLE_PRECISION | __KIND == __COMPLEX 
       INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_fdsolver_map_3d.f b/src/ppm_fdsolver_map_3d.f
index 1270f187b05237c9ee885e22e79b2a245070b198..64638280a846935b0b69b634ae742c84b20ad443 100644
--- a/src/ppm_fdsolver_map_3d.f
+++ b/src/ppm_fdsolver_map_3d.f
@@ -121,7 +121,7 @@
       USE ppm_module_write
       USE ppm_module_substart
       USE ppm_module_substop
-
+      USE ppm_module_map_field
 
       IMPLICIT NONE
 #if   __KIND == __SINGLE_PRECISION | __KIND == __COMPLEX 
diff --git a/src/ppm_fmm_init.f b/src/ppm_fmm_init.f
index 4a7d5c6d3f41c6c5f79717c5602924837cede02f..ed3987af5ac967774f1773e9ce01c9be4f1dd395 100644
--- a/src/ppm_fmm_init.f
+++ b/src/ppm_fmm_init.f
@@ -62,6 +62,8 @@
       USE ppm_module_substop
       USE ppm_module_write
       USE ppm_module_topo_check
+      USE ppm_module_map_part
+      USE ppm_module_map_part_global
       IMPLICIT NONE
       !-------------------------------------------------------------------------
       !  Includes
diff --git a/src/ppm_fmm_potential.f b/src/ppm_fmm_potential.f
index 8d8bc398e2dbb44a04cdb7b3043aeaecdce25f6e..b87de6ef617eb6281fb8fd9b17adb2e09a6b7b23 100644
--- a/src/ppm_fmm_potential.f
+++ b/src/ppm_fmm_potential.f
@@ -183,6 +183,9 @@
       USE ppm_module_util_cart2sph
       USE ppm_module_write
       USE ppm_module_topo_check
+      USE ppm_module_map_part_ghost
+      USE ppm_module_map_part
+      USE ppm_module_map_part_global
       IMPLICIT NONE
       !-------------------------------------------------------------------------
       !  Includes
diff --git a/src/ppm_gmm_extend_bkwd.f b/src/ppm_gmm_extend_bkwd.f
index b87099925d6bf9cf63391377091281f5b38a68c2..f53e0b9a4fa4cd61d23e91e4e95e68b2705aced7 100644
--- a/src/ppm_gmm_extend_bkwd.f
+++ b/src/ppm_gmm_extend_bkwd.f
@@ -60,6 +60,7 @@
       USE ppm_module_error
       USE ppm_module_alloc
       USE ppm_module_typedef
+      USE ppm_module_map_field
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
       INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_gmm_extend_fwd.f b/src/ppm_gmm_extend_fwd.f
index 283ce76368e1f14114e5649d0d185cfc5baeff50..0f59d7c9ba049f6edf9d3f9aea8fefb7fb3f19ae 100644
--- a/src/ppm_gmm_extend_fwd.f
+++ b/src/ppm_gmm_extend_fwd.f
@@ -60,6 +60,7 @@
       USE ppm_module_error
       USE ppm_module_alloc
       USE ppm_module_typedef
+      USE ppm_module_map_field
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
       INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -409,14 +410,14 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both dta AND gmm_state3d 
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
@@ -579,14 +580,14 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both dta AND gmm_state2d
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
diff --git a/src/ppm_gmm_march.f b/src/ppm_gmm_march.f
index 60adcd156268baa146f7b6d1e6a3e3b885a1820c..7e72156c2bdfd70fc2f64421bc3899f704ae3879 100644
--- a/src/ppm_gmm_march.f
+++ b/src/ppm_gmm_march.f
@@ -92,6 +92,8 @@
       USE ppm_module_error
       USE ppm_module_write
       USE ppm_module_alloc
+      USE ppm_module_map_field
+      USE ppm_module_map_field_ghost
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
       INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -367,7 +369,7 @@
      &        'ghost get mapping failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -375,7 +377,7 @@
           GOTO 9999
       ENDIF
       IF (PRESENT(udata)) THEN
-          CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,ghostsize,info)
+          CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,info)
           IF (info .NE. ppm_param_success) THEN
               info = ppm_error_error
               CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -533,7 +535,7 @@
       !-------------------------------------------------------------------------
       !  Initialize ghost layers for state array
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -762,7 +764,7 @@
       !-------------------------------------------------------------------------
       !  Initialize ghost layers for state array
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
diff --git a/src/ppm_gmm_march_bkwd.f b/src/ppm_gmm_march_bkwd.f
index dad6ec532c0ed17e34d833faf5a822df841713cb..dcc09660c2120bb2c0f4b726b1ab6c3041125d6c 100644
--- a/src/ppm_gmm_march_bkwd.f
+++ b/src/ppm_gmm_march_bkwd.f
@@ -60,6 +60,7 @@
       USE ppm_module_substop
       USE ppm_module_error
       USE ppm_module_alloc
+      USE ppm_module_map_field
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
       INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -330,7 +331,7 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for fdta
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -449,7 +450,7 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for fdta
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
diff --git a/src/ppm_gmm_march_fwd.f b/src/ppm_gmm_march_fwd.f
index d6ce53ad741776127d45c5befbdf7dc74e95eb57..8385af9da054f7c60939a2d32492484b92be593a 100644
--- a/src/ppm_gmm_march_fwd.f
+++ b/src/ppm_gmm_march_fwd.f
@@ -60,6 +60,7 @@
       USE ppm_module_error
       USE ppm_module_alloc
       USE ppm_module_typedef
+      USE ppm_module_map_field
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
       INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -434,14 +435,14 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both fdta AND gmm_state3d 
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
@@ -626,14 +627,14 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both fdta AND gmm_state2d
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
diff --git a/src/ppm_hamjac_ext_3d.f b/src/ppm_hamjac_ext_3d.f
index 0ee26b0b68b8853555617ac44adb9294ff361fd6..5e03a2f74226da7c9109dcd8a836b41def86cd70 100644
--- a/src/ppm_hamjac_ext_3d.f
+++ b/src/ppm_hamjac_ext_3d.f
@@ -64,6 +64,8 @@
         USE ppm_module_alloc
         USE ppm_module_typedef
         USE ppm_module_write
+        USE ppm_module_map_field
+        USE ppm_module_map_field_ghost
         IMPLICIT NONE
 
 #ifdef __MPI
@@ -185,23 +187,23 @@
         dx(2)       = len_phys(2)/REAL(mesh%nm(2)-1,mk)
         dx(3)       = len_phys(3)/REAL(mesh%nm(3)-1,mk)
         !--- map the gowas
-        CALL ppm_map_field_ghost_get(topo_id,mesh_id,phi,ghostsize,info)
-        CALL ppm_map_field_push(topo_id,mesh_id,phi,ghostsize,info)
+        CALL ppm_map_field_ghost_get(topo_id,mesh_id,ghostsize,info)
+        CALL ppm_map_field_push(topo_id,mesh_id,phi,info)
         CALL ppm_map_field_send(info)
         CALL ppm_map_field_pop(topo_id,mesh_id,phi,ghostsize,info)
            !--- map the function
         DO istep=1,maxstep
 #if   __MODE == __SCA
-           CALL ppm_map_field_ghost_get(psi,topo_id,mesh_id,ghostsize,info)
-           CALL ppm_map_field_push(topo_id,mesh_id,psi,ghostsize,info)
+           CALL ppm_map_field_ghost_get(topo_id,mesh_id,ghostsize,info)
+           CALL ppm_map_field_push(topo_id,mesh_id,psi,info)
            CALL ppm_map_field_send(info)
            CALL ppm_map_field_pop(topo_id,mesh_id,psi,ghostsize,info)
 
 #elif __MODE == __VEC
-           CALL ppm_map_field_ghost_get(topo_id,mesh_id,psi,lda,ghostsize,info)
-           CALL ppm_map_field_push(topo_id,mesh_id,psi,lda,ghostsize,info)
+           CALL ppm_map_field_ghost_get(topo_id,mesh_id,ghostsize,info)
+           CALL ppm_map_field_push(topo_id,mesh_id,psi,lda,info)
            CALL ppm_map_field_send(info)
-           CALL ppm_map_field_pop(psi,lda,topo_id,mesh_id,ghostsize,info)
+           CALL ppm_map_field_pop(topo_id, mesh_id, psi,lda,ghostsize,info)
 #endif           
            !     IF (ppm_debug .GT. 0) THEN
            !     ENDIF
diff --git a/src/ppm_hamjac_reinit_2d.f b/src/ppm_hamjac_reinit_2d.f
index cabd24d5b3a5188659b177842eb28f32ab44622f..29ede9cfb9c2e305af23d3630842df3c3992703e 100644
--- a/src/ppm_hamjac_reinit_2d.f
+++ b/src/ppm_hamjac_reinit_2d.f
@@ -52,6 +52,7 @@
         USE ppm_module_alloc
         USE ppm_module_substop
         USE ppm_module_map
+        USE ppm_module_map_field_ghost
         USE ppm_module_typedef
         IMPLICIT NONE
 
diff --git a/src/ppm_hamjac_reinit_3d.f b/src/ppm_hamjac_reinit_3d.f
index 15c533c78695ea71d7d569f3d294bcdbef4623c3..cc7c3a1317961a975433aee1ef22b499d88d53d8 100644
--- a/src/ppm_hamjac_reinit_3d.f
+++ b/src/ppm_hamjac_reinit_3d.f
@@ -62,6 +62,8 @@
         USE ppm_module_substop
         USE ppm_module_map
         USE ppm_module_typedef
+        USE ppm_module_map_field
+        USE ppm_module_map_field_ghost
         IMPLICIT NONE
 
 #if    __KIND == __SINGLE_PRECISION
diff --git a/src/ppm_hamjac_reinit_loc_3d.f b/src/ppm_hamjac_reinit_loc_3d.f
index 7e673f8593d9efdd03082f555c72ba0569b28119..f7cecd87c4d5511ff808b9a11aa12ae8f212f6b4 100644
--- a/src/ppm_hamjac_reinit_loc_3d.f
+++ b/src/ppm_hamjac_reinit_loc_3d.f
@@ -62,6 +62,8 @@
         USE ppm_module_substop
         USE ppm_module_map
         USE ppm_module_typedef
+        USE ppm_module_map_field
+        USE ppm_module_map_field_ghost
         IMPLICIT NONE
 
 #if    __KIND == __SINGLE_PRECISION
diff --git a/src/ppm_hamjac_reinit_ref_3d.f b/src/ppm_hamjac_reinit_ref_3d.f
index 9a4583bcbe8b03f6cbf223a27b7cbfee5b71c760..3df3ba2162853741123135eb618584913cec4547 100644
--- a/src/ppm_hamjac_reinit_ref_3d.f
+++ b/src/ppm_hamjac_reinit_ref_3d.f
@@ -53,6 +53,8 @@
         USE ppm_module_substop
         USE ppm_module_map
         USE ppm_module_typedef
+        USE ppm_module_map_field
+        USE ppm_module_map_field_ghost
         IMPLICIT NONE
 
 #if    __KIND == __SINGLE_PRECISION
diff --git a/src/ppm_hamjac_reinit_russo_3d.f b/src/ppm_hamjac_reinit_russo_3d.f
index fe708067769e8bbe2c66e5a1f2d5cbcfa4557d05..9cedc76f2e6f31358d51cfdb2df8f85c6c25a1fe 100644
--- a/src/ppm_hamjac_reinit_russo_3d.f
+++ b/src/ppm_hamjac_reinit_russo_3d.f
@@ -52,6 +52,8 @@
         USE ppm_module_alloc
         USE ppm_module_substop
         USE ppm_module_map
+        USE ppm_module_map_field
+        USE ppm_module_map_field_ghost
         IMPLICIT NONE
 
 #if    __KIND == __SINGLE_PRECISION
diff --git a/src/ppm_mg_restrict.f b/src/ppm_mg_restrict.f
index e3a5362b3d35446111521700e7396b60e707c68e..cc41d81136d768145042a767d0ceee658171fc5a 100644
--- a/src/ppm_mg_restrict.f
+++ b/src/ppm_mg_restrict.f
@@ -103,6 +103,8 @@
         USE ppm_module_error
         USE ppm_module_write
         USE ppm_module_map
+        USE ppm_module_map_field
+        USE ppm_module_map_field_ghost
         IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
            INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_smooth_coarse.f b/src/ppm_mg_smooth_coarse.f
index 0afc9d968a4dc5ad99ad9d142b63dd749aaf12ee..40f34d9242497164d97786adeae6fd3c56bf5dfb 100644
--- a/src/ppm_mg_smooth_coarse.f
+++ b/src/ppm_mg_smooth_coarse.f
@@ -122,6 +122,8 @@
          USE ppm_module_map
          USE ppm_module_data_mesh
          USE ppm_module_write
+         USE ppm_module_map_field
+         USE ppm_module_map_field_ghost
          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 e71a17d7628d7caf722a9992e396938e8154d853..70accd05f209e5787a52582571ee66464889e089 100644
--- a/src/ppm_mg_smooth_fine.f
+++ b/src/ppm_mg_smooth_fine.f
@@ -116,6 +116,8 @@
          USE ppm_module_map
          USE ppm_module_data_mesh
          USE ppm_module_write
+         USE ppm_module_map_field
+         USE ppm_module_map_field_ghost
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_ode_map_push.f b/src/ppm_ode_map_push.f
index ff044ce90dcb62bb10f48ff133b59bcba6e7bb9b..62a46ae3210ee31a4c2b2ed1d5368602542cfb44 100644
--- a/src/ppm_ode_map_push.f
+++ b/src/ppm_ode_map_push.f
@@ -92,6 +92,7 @@
         USE ppm_module_map
         USE ppm_module_error
         USE ppm_module_alloc
+        USE ppm_module_map_part
         IMPLICIT NONE
 #if     __KIND == __SINGLE_PRECISION
         INTEGER, PARAMETER :: mk = ppm_kind_single