diff --git a/Makefile b/Makefile
index 3ae932a8970fe316ec175be363c1818de8352bc6..34ce07e5c00e06825668eaced25820aeba29851b 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
 #  File         :  Makefile.in
 #-------------------------------------------------------------------------
 #
-#  Purpose      :  Compilation
+#  Purpose      :  Makefile template
 #
 #  Remarks      :
 #
@@ -11,8 +11,7 @@
 #  Revisions    :
 #-------------------------------------------------------------------------
 #  Parallel Particle Mesh Library (PPM)
-#  Institute of Computational Science
-#  ETH Zentrum, Hirschengraben 84
+#  ETH Zurich
 #  CH-8092 Zurich, Switzerland
 #-------------------------------------------------------------------------
 
@@ -22,13 +21,13 @@ exec_prefix = ${prefix}
 libdir = ${exec_prefix}/lib
 builddir = .
 LIBS = -lppm -lppm -lm 
-LDFLAGS = -L/Users/omar/sw/metis/gcc/lib -L../../ngtopo-libppm/libppm/lib -L../../ngtopo-libppm/libppm/lib
+LDFLAGS = -L/home/omar/sw/metis/gcc/lib -L../../ppmcore/libppm/lib -L../../ppmcore/libppm/lib
 CFLAGS = -O3
-FCLIBS =  -L/Users/omar/sw/metis/gcc/lib -L/opt/local/lib/gcc44/gcc/x86_64-apple-darwin10/4.4.4 -L/opt/local/lib/gcc44/gcc/x86_64-apple-darwin10/4.4.4/../../.. -lgfortranbegin -lgfortran
-FCFLAGS = -O3 -ffree-form -I../../ngtopo-libppm/libppm/include
-FC = gfortran-mp-4.4
-CC = gcc-mp-4.4
-CXX = g++-mp-4.4
+FCLIBS =  -L/home/omar/sw/metis/gcc/lib -L/opt/openmpi/1.5/intel/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/opt/openmpi/1.5/intel/lib -L/opt/intel/composerxe-2011.0.084/compiler/lib/intel64 -L/opt/intel/composerxe-2011.0.084/ipp/../compiler/lib/intel64 -L/opt/intel/composerxe-2011.0.084/ipp/lib/intel64 -L/opt/intel/composerxe-2011.0.084/mkl/lib/intel64 -L/opt/intel/composerxe-2011.0.084/tbb/lib/intel64//cc4.1.0_libc2.4_kernel2.6.16.21 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../.. -L/usr/lib/x86_64-linux-gnu -lgfortranbegin -lgfortran -lm
+FCFLAGS = -O3 -ffree-form -I../../ppmcore/libppm/include
+FC = gfortran
+CC = gcc
+CXX = g++
 DEBUG = 
 MODFLAG = -I
 
diff --git a/src/ppm_fdsolver_map_2d.f b/src/ppm_fdsolver_map_2d.f
index 8f9814b73ea11d93830e3fa6ed918779024dc027..5e6912f1587b663ae0f32299c9c22c756367eee1 100644
--- a/src/ppm_fdsolver_map_2d.f
+++ b/src/ppm_fdsolver_map_2d.f
@@ -229,31 +229,15 @@
       !  Map fields
       !-------------------------------------------------------------------------
 #if   __DIM == __SFIELD
-      maptype = ppm_param_map_global
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_push
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_send
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_pop
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
+      CALL ppm_map_field_global(from_topo,to_topo,from_mesh,to_mesh,info)
+      CALL ppm_map_field_push(from_topo,from_mesh,DATA_fv,info)
+      CALL ppm_map_field_send(info)
+      CALL ppm_map_field_pop(to_topo,to_mesh,DATA_fv,ghostsize,info)
 #elif __DIM == __VFIELD     
-      maptype = ppm_param_map_global;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_push;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_send;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_pop;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv, &
-     &           ghostsize,maptype,info)
+      CALL ppm_map_field_global(from_topo,to_topo,from_mesh,to_mesh,info)
+      CALL ppm_map_field_push(from_topo,from_mesh,DATA_fv,info)
+      CALL ppm_map_field_send(info)
+      CALL ppm_map_field_pop(to_topo,to_mesh,DATA_fv,ghostsize,info)
 #endif
       !-------------------------------------------------------------------------
       !  Return
diff --git a/src/ppm_fdsolver_map_3d.f b/src/ppm_fdsolver_map_3d.f
index aabc2dc832d5b1301f82120bf5774b4842a36ab7..1270f187b05237c9ee885e22e79b2a245070b198 100644
--- a/src/ppm_fdsolver_map_3d.f
+++ b/src/ppm_fdsolver_map_3d.f
@@ -234,31 +234,15 @@
       !  Map field 
       !-------------------------------------------------------------------------
 #if   __DIM == __SFIELD
-      maptype = ppm_param_map_global;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_push;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_send;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_pop;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
+      CALL ppm_map_field_global(from_topo,to_topo,from_mesh,to_mesh,info)
+      CALL ppm_map_field_push(from_topo,from_mesh,DATA_fv,lda,info)
+      CALL ppm_map_field_send(info)
+      CALL ppm_map_field_pop(to_topo,to_mesh,DATA_fv,lda,ghostsize,info)
 #elif __DIM == __VFIELD
-      maptype = ppm_param_map_global;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_push;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_send;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
-      maptype = ppm_param_map_pop;
-      CALL ppm_map_field(from_topo,to_topo,from_mesh,to_mesh,DATA_fv,lda, &
-     &           ghostsize,maptype,info)
+      CALL ppm_map_field_global(from_topo,to_topo,from_mesh,to_mesh,info)
+      CALL ppm_map_field_push(from_topo,from_mesh,DATA_fv,lda,info)
+      CALL ppm_map_field_send(info)
+      CALL ppm_map_field_pop(to_topo,to_mesh,DATA_fv,lda,ghostsize,info)
 #endif
       !-------------------------------------------------------------------------
       !  Return
diff --git a/src/ppm_fmm_potential.f b/src/ppm_fmm_potential.f
index b9f89789e469ec98359fc08e349b6ac856622d0f..8d8bc398e2dbb44a04cdb7b3043aeaecdce25f6e 100644
--- a/src/ppm_fmm_potential.f
+++ b/src/ppm_fmm_potential.f
@@ -224,7 +224,7 @@
       LOGICAL                              :: check,drct,OK
       INTEGER                              :: i,j,k,l,cnt,iopt,m,n
       INTEGER                              :: pcount,ccount
-      INTEGER                              :: mapt,Mpart,root,istat
+      INTEGER                              :: Mpart,root,istat
       INTEGER                              :: first,last,level
       INTEGER                              :: stackpointer,curbox
       INTEGER                              :: pexp,isymm
@@ -338,22 +338,19 @@
       !-------------------------------------------------------------------------
       ! Map target points
       !-------------------------------------------------------------------------
-      mapt = ppm_param_map_global
-      CALL ppm_map_part(topoid,target_topoid,tp,ppm_dim,Ntp,Mpart,mapt,info)
+      CALL ppm_map_part_global(target_topoid,tp,Ntp,info)
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to start global mapping.',info)
           GOTO 9999
       ENDIF
-      mapt = ppm_param_map_send
-      CALL ppm_map_part(topoid,target_topoid,tp,ppm_dim,Ntp,Mpart,mapt,info)
+      CALL ppm_map_part_send(Ntp,Mpart,info)
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to start global mapping.',info)
           GOTO 9999
       ENDIF
-      mapt = ppm_param_map_pop
-      CALL ppm_map_part(topoid,target_topoid,tp,ppm_dim,Ntp,Mpart,mapt,info)
+      CALL ppm_map_part_pop(tp,ppm_dim,Ntp,Mpart,info)
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to start global mapping.',info)
@@ -408,48 +405,47 @@
       !-------------------------------------------------------------------------
       isymm  = 0
       cutoff = 1.0_MK ! can be any number > 0
-      mapt = ppm_param_map_push
+      ! OA: Is this correct???
+      CALL ppm_map_part_ghost_get(topoid,xpunord,ppm_dim,Np,isymm,cutoff,info)
 #if   __DIM == __SFIELD
-      CALL ppm_map_part_ghost(wpunord,Np,Mpart,isymm,cutoff,mapt,info) !strengths
+      CALL ppm_map_part_push(wpunord,Np,info) !strengths
 #else      
-      CALL ppm_map_part_ghost(wpunord,lda,Np,Mpart,isymm,cutoff,mapt,info) !strengths
+      CALL ppm_map_part_push(wpunord,lda,Np,info) !strengths
 #endif      
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to push strengths.',info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_part_ghost(boxpart,Np,Mpart,isymm,cutoff,mapt,info) !boxpart
+      CALL ppm_map_part_push(boxpart,Np,info) !boxpart
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to push strengths.',info)
           GOTO 9999
       ENDIF
-      mapt = ppm_param_map_send
-      CALL ppm_map_part_ghost(boxpart,Np,Mpart,isymm,cutoff,mapt,info)   ! send
+      CALL ppm_map_part_send(Np,Mpart,info)   ! send
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to send particles.',info)
           GOTO 9999
       ENDIF
-      mapt = ppm_param_map_pop
-      CALL ppm_map_part_ghost(boxpart,Np,Mpart,isymm,cutoff,mapt,info)  !boxpart
+      CALL ppm_map_part_pop(boxpart,Np,Mpart,info)  !boxpart
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to push strengths.',info)
           GOTO 9999
       ENDIF      
 #if   __DIM == __SFIELD      
-      CALL ppm_map_part_ghost(wpunord,Np,Mpart,isymm,cutoff,mapt,info) !strengths
+      CALL ppm_map_part_pop(wpunord,Np,Mpart,info) !strengths
 #else
-      CALL ppm_map_part_ghost(wpunord,lda,Np,Mpart,isymm,cutoff,mapt,info) !strengths
+      CALL ppm_map_part_pop(wpunord,lda,Np,Mpart,info) !strengths
 #endif      
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to pop strengths.',info)
           GOTO 9999
       ENDIF !positions
-      CALL ppm_map_part_ghost(xpunord,ppm_dim,Np,Mpart,isymm,cutoff,mapt,info)
+      CALL ppm_map_part_pop(xpunord,ppm_dim,Np,Mpart,info)
       IF (info .NE. 0) THEN
           CALL ppm_write(ppm_rank,'ppm_fmm_potential', &
           &    'Failed to pop positions.',info)
diff --git a/src/ppm_gmm_extend_bkwd.f b/src/ppm_gmm_extend_bkwd.f
index b9e78b4f5578010256e17b87e357c2d5e12d84eb..b87099925d6bf9cf63391377091281f5b38a68c2 100644
--- a/src/ppm_gmm_extend_bkwd.f
+++ b/src/ppm_gmm_extend_bkwd.f
@@ -309,24 +309,21 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for dta
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,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',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                     ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,dta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend',  &
@@ -410,24 +407,21 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for dta
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,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',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                     ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,dta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend',  &
diff --git a/src/ppm_gmm_extend_fwd.f b/src/ppm_gmm_extend_fwd.f
index a7cac105938bf845d54d4539dc91388250db6950..283ce76368e1f14114e5649d0d185cfc5baeff50 100644
--- a/src/ppm_gmm_extend_fwd.f
+++ b/src/ppm_gmm_extend_fwd.f
@@ -409,40 +409,35 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both dta AND gmm_state3d 
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,ghostsize,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_ghost(gmm_state3d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'pushing status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state3d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'popping status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,dta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
@@ -584,40 +579,35 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both dta AND gmm_state2d
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,ghostsize,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_ghost(gmm_state2d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'pushing status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state2d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_extend_fwd',  &
      &        'popping status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,dta,ghostsize,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 661c8407ac6628c72c2fdd0bfbd7b12fbcb6cf61..60adcd156268baa146f7b6d1e6a3e3b885a1820c 100644
--- a/src/ppm_gmm_march.f
+++ b/src/ppm_gmm_march.f
@@ -360,24 +360,14 @@
       !-------------------------------------------------------------------------
       !  Initialize the ghost layers.
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_init,info)
-      IF (info .NE. ppm_param_success) THEN
-          info = ppm_error_error
-          CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
-     &        'ghost mapping init failed',__LINE__,info)
-          GOTO 9999
-      ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_ghost_get,info)
+      CALL ppm_map_field_ghost_get(gmm_topoid,gmm_meshid,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'ghost get mapping failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -385,8 +375,7 @@
           GOTO 9999
       ENDIF
       IF (PRESENT(udata)) THEN
-          CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+          CALL ppm_map_field_push(gmm_topoid,gmm_meshid,dta,ghostsize,info)
           IF (info .NE. ppm_param_success) THEN
               info = ppm_error_error
               CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -394,8 +383,7 @@
               GOTO 9999
           ENDIF
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -403,8 +391,7 @@
           GOTO 9999
       ENDIF
       IF (PRESENT(udata)) THEN
-          CALL ppm_map_field_ghost(dta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_pop,info)
+          CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,dta,ghostsize,info)
           IF (info .NE. ppm_param_success) THEN
               info = ppm_error_error
               CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -412,8 +399,7 @@
               GOTO 9999
           ENDIF
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -547,24 +533,21 @@
       !-------------------------------------------------------------------------
       !  Initialize ghost layers for state array
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(gmm_state3d,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'pushing status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state3d,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'sending status ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state3d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -779,24 +762,21 @@
       !-------------------------------------------------------------------------
       !  Initialize ghost layers for state array
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(gmm_state2d,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'pushing status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state2d,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'sending status ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state2d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,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 7be054dc2b1b7f40852c2562650802f9cb5d76f9..dad6ec532c0ed17e34d833faf5a822df841713cb 100644
--- a/src/ppm_gmm_march_bkwd.f
+++ b/src/ppm_gmm_march_bkwd.f
@@ -330,24 +330,21 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for fdta
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                     ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
@@ -452,24 +449,21 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for fdta
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'pushing field data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                     ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,fdta,ghostsize,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 22156d00870b1f0c7f4678c70f1758ba7b7101f9..d6ce53ad741776127d45c5befbdf7dc74e95eb57 100644
--- a/src/ppm_gmm_march_fwd.f
+++ b/src/ppm_gmm_march_fwd.f
@@ -434,40 +434,35 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both fdta AND gmm_state3d 
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,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_ghost(gmm_state3d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'pushing status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state3d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,gmm_state3d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'popping status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,fdta,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
@@ -631,40 +626,35 @@
       !-------------------------------------------------------------------------
       !  Update ghost layers for both fdta AND gmm_state2d
       !-------------------------------------------------------------------------
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,fdta,ghostsize,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_ghost(gmm_state2d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_push,info)
+      CALL ppm_map_field_push(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'pushing status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_send,info)
+      CALL ppm_map_field_send(info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'sending ghosts failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(gmm_state2d,gmm_topoid,gmm_meshid,ghostsize,&
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,gmm_state2d,ghostsize,info)
       IF (info .NE. ppm_param_success) THEN
           info = ppm_error_error
           CALL ppm_error(ppm_err_sub_failed,'ppm_gmm_march_fwd',  &
      &        'popping status data failed',__LINE__,info)
           GOTO 9999
       ENDIF
-      CALL ppm_map_field_ghost(fdta,gmm_topoid,gmm_meshid,ghostsize, &
-     &                         ppm_param_map_pop,info)
+      CALL ppm_map_field_pop(gmm_topoid,gmm_meshid,fdta,ghostsize,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 9eab1d9a536d85c722f2da6b910c1693f5ae0a1b..0ee26b0b68b8853555617ac44adb9294ff361fd6 100644
--- a/src/ppm_hamjac_ext_3d.f
+++ b/src/ppm_hamjac_ext_3d.f
@@ -114,7 +114,7 @@
         !-----------------------------------------------------
         !  Local variables
         !-----------------------------------------------------
-        INTEGER                               :: isub,isubl,i,j,k,maptype
+        INTEGER                               :: isub,isubl,i,j,k
         INTEGER                               :: istep,iopt
 #if   __MODE == __SCA
         INTEGER                               :: ldl(4), ldu(4)
@@ -184,38 +184,24 @@
         dx(1)       = len_phys(1)/REAL(mesh%nm(1)-1,mk)
         dx(2)       = len_phys(2)/REAL(mesh%nm(2)-1,mk)
         dx(3)       = len_phys(3)/REAL(mesh%nm(3)-1,mk)
-        !--- ready to blast
-        maptype = ppm_param_map_init
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
         !--- map the gowas
-        maptype = ppm_param_map_ghost_get
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-        maptype = ppm_param_map_push
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-        maptype = ppm_param_map_send
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-        maptype = ppm_param_map_pop
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
+        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_send(info)
+        CALL ppm_map_field_pop(topo_id,mesh_id,phi,ghostsize,info)
            !--- map the function
         DO istep=1,maxstep
 #if   __MODE == __SCA
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(psi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(psi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(psi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(psi,topo_id,mesh_id,ghostsize,maptype,info)
+           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_send(info)
+           CALL ppm_map_field_pop(topo_id,mesh_id,psi,ghostsize,info)
+
 #elif __MODE == __VEC
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(psi,lda,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(psi,lda,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(psi,lda,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(psi,lda,topo_id,mesh_id,ghostsize,maptype,info)
+           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_send(info)
+           CALL ppm_map_field_pop(psi,lda,topo_id,mesh_id,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 925ce53cb36e079f9bc404ec8775bed4702aa689..cabd24d5b3a5188659b177842eb28f32ab44622f 100644
--- a/src/ppm_hamjac_reinit_2d.f
+++ b/src/ppm_hamjac_reinit_2d.f
@@ -135,21 +135,14 @@
            GOTO 9999
         END IF
 
-        !--- ready to blast
-        maptype = ppm_param_map_init
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
 
         !--- COMMENT Thu May 26 21:05:23 PDT 2005:  simple euler here, do TVD
         DO istep=1,maxstep
            !--- map the gowas
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,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)
            
            CALL ppm_hamjac_reinit_step(phi,tphi,trgt,res,topo_id,mesh_id&
                 &,                  ghostsize,info)
diff --git a/src/ppm_hamjac_reinit_3d.f b/src/ppm_hamjac_reinit_3d.f
index a88701662775afdeafbf3677744d09072bf81ab6..15c533c78695ea71d7d569f3d294bcdbef4623c3 100644
--- a/src/ppm_hamjac_reinit_3d.f
+++ b/src/ppm_hamjac_reinit_3d.f
@@ -151,13 +151,6 @@
            GOTO 9999
         END IF
 
-        !--- ready to blast
-        maptype = ppm_param_map_init
-#if   __MODE == __SCA
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-#elif __MODE == __VEC
-        CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize,maptype,info)
-#endif        
 
         !-----------------------------------------------------
         !  COMMENT Thu May 26 21:05:23 PDT 2005:  simple euler here, DO TVD
@@ -165,29 +158,17 @@
         DO istep=1,maxstep
            !--- map the gowas
 #if   __MODE == __SCA
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,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)
            CALL ppm_hamjac_reinit_step(phi,tphi,trgt,res,topo_id,mesh_id&
                 &,                  ghostsize,info)
 #elif __MODE == __VEC
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
+           CALL ppm_map_field_ghost_get(topo_id,mesh_id,ghostsize,info)
+           CALL ppm_map_field_push(topo_id,mesh_id,phi,lda,info)
+           CALL ppm_map_field_send(info)
+           CALL ppm_map_field_pop(topo_id,mesh_id,phi,lda,ghostsize, info)
            CALL ppm_hamjac_reinit_step(phi,idx,tphi,trgt,res,topo_id,mesh_id,&
                 & ghostsize,info)
 #endif
diff --git a/src/ppm_hamjac_reinit_loc_3d.f b/src/ppm_hamjac_reinit_loc_3d.f
index c3ccc867b4cd2a2ab38660ee9c11031c8aa9b931..7e673f8593d9efdd03082f555c72ba0569b28119 100644
--- a/src/ppm_hamjac_reinit_loc_3d.f
+++ b/src/ppm_hamjac_reinit_loc_3d.f
@@ -153,13 +153,6 @@
            GOTO 9999
         END IF
 
-        !--- ready to blast
-        maptype = ppm_param_map_init
-#if   __MODE == __SCA
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-#elif __MODE == __VEC
-        CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize,maptype,info)
-#endif        
 
         !-----------------------------------------------------
         !  COMMENT Thu May 26 21:05:23 PDT 2005:  simple euler here, DO TVD
@@ -167,29 +160,17 @@
         DO istep=1,maxstep
            !--- map the gowas
 #if   __MODE == __SCA
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,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)
            CALL ppm_hamjac_reinit_loc_step(phi,tphi,iloc,np,trgt,res,topo_id,&
                 &                  mesh_id,ghostsize,info)
 #elif __MODE == __VEC
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,lda,topo_id,mesh_id,ghostsize, &
-                & maptype,info)
+           CALL ppm_map_field_ghost_get(topo_id,mesh_id,ghostsize,info)
+           CALL ppm_map_field_push(topo_id,mesh_id,phi,lda,info)
+           CALL ppm_map_field_send(info)
+           CALL ppm_map_field_pop(topo_id,mesh_id,phi,lda,ghostsize,info)
            CALL ppm_hamjac_reinit_loc_step(phi,idx,tphi,iloc,np,trgt,res,topo_id,&
                 & mesh_id,ghostsize,info)
 #endif
diff --git a/src/ppm_hamjac_reinit_ref_3d.f b/src/ppm_hamjac_reinit_ref_3d.f
index 4734d4bf8f6bae4bb9b3cf7db8ea653043baa0d6..9a4583bcbe8b03f6cbf223a27b7cbfee5b71c760 100644
--- a/src/ppm_hamjac_reinit_ref_3d.f
+++ b/src/ppm_hamjac_reinit_ref_3d.f
@@ -139,32 +139,20 @@
            GOTO 9999
         END IF
 
-        !--- ready to blast
-        maptype = ppm_param_map_init
-        CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-
         !--- map the map
-        maptype = ppm_param_map_ghost_get
-        CALL ppm_map_field_ghost(chi,3,topo_id,mesh_id,ghostsize,maptype,info)
-        maptype = ppm_param_map_push
-        CALL ppm_map_field_ghost(chi,3,topo_id,mesh_id,ghostsize,maptype,info)
-        maptype = ppm_param_map_send
-        CALL ppm_map_field_ghost(chi,3,topo_id,mesh_id,ghostsize,maptype,info)
-        maptype = ppm_param_map_pop
-        CALL ppm_map_field_ghost(chi,3,topo_id,mesh_id,ghostsize,maptype,info)
+        CALL ppm_map_field_ghost_get(topo_id,mesh_id,ghostsize,info)
+        CALL ppm_map_field_push(topo_id,mesh_id,chi,3,info)
+        CALL ppm_map_field_send(info)
+        CALL ppm_map_field_pop(topo_id,mesh_id,chi,3,ghostsize,info)
            
 
         !--- COMMENT Thu May 26 21:05:23 PDT 2005:  simple euler here, do TVD
         DO istep=1,maxstep
            !--- map the gowas
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,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)
 
            CALL ppm_hamjac_reinit_step_ref(phi,chi,tphi,trgt,res,topo_id,   &
      &         mesh_id,ghostsize,info)
diff --git a/src/ppm_hamjac_reinit_russo_3d.f b/src/ppm_hamjac_reinit_russo_3d.f
index e00e29dd82fd6cf0ffb8562caa7a204c5cf9baaf..fe708067769e8bbe2c66e5a1f2d5cbcfa4557d05 100644
--- a/src/ppm_hamjac_reinit_russo_3d.f
+++ b/src/ppm_hamjac_reinit_russo_3d.f
@@ -67,13 +67,13 @@
         !  Arguments
         !-----------------------------------------------------
         REAL(MK), DIMENSION(:,:,:,:  ), POINTER :: phi
-		REAL(MK), DIMENSION(:,:,:,:,:), POINTER :: phigrad
+        REAL(MK), DIMENSION(:,:,:,:,:), POINTER :: phigrad
         INTEGER, INTENT(in)                   :: topo_id, mesh_id
         INTEGER, DIMENSION(3), INTENT(in)     :: ghostsize
         INTEGER, INTENT(inout)                :: info
         INTEGER, INTENT(in)                   :: maxstep
         REAL(mk), INTENT(in)                  :: tol
-		INTEGER,INTENT(IN),OPTIONAL			  :: indx
+        INTEGER,INTENT(IN),OPTIONAL              :: indx
         !-----------------------------------------------------
         !  Aliases
         !-----------------------------------------------------
@@ -83,8 +83,8 @@
         INTEGER, DIMENSION(:,:), POINTER      :: ndata
         INTEGER                               :: topoid,meshid
         REAL(mk), DIMENSION(:), POINTER       :: min_phys, max_phys
-		INTEGER, DIMENSION(6)                 :: orgbcdef
-        INTEGER								  :: s2didx, mpi_prec
+        INTEGER, DIMENSION(6)                 :: orgbcdef
+        INTEGER                               :: s2didx, mpi_prec
         TYPE(ppm_t_topo),      POINTER        :: topo
         TYPE(ppm_t_equi_mesh), POINTER        :: mesh
         !-----------------------------------------------------
@@ -98,13 +98,13 @@
 
         CALL substart('ppm_hamjac_reinit_russo_3d',t0,info)
 
-		IF(PRESENT(indx)) THEN
-			s2didx=indx
-		ELSE
-			s2didx= -1
-		END IF
+        IF(PRESENT(indx)) THEN
+            s2didx=indx
+        ELSE
+            s2didx= -1
+        END IF
 
-#ifdef __MPI		
+#ifdef __MPI        
         IF (ppm_kind.EQ.ppm_kind_single) THEN
            MPI_PREC = MPI_REAL
         ELSE
@@ -130,15 +130,15 @@
 
         len_phys(1) = max_phys(1) - min_phys(1)
         len_phys(2) = max_phys(2) - min_phys(2)
-		len_phys(3) = max_phys(3) - min_phys(3)
-		
+        len_phys(3) = max_phys(3) - min_phys(3)
+        
         dx(1)       = len_phys(1)/REAL(mesh%Nm(1)-1,mk)
         dx(2)       = len_phys(2)/REAL(mesh%Nm(2)-1,mk)
-		dx(3)       = len_phys(3)/REAL(mesh%Nm(3)-1,mk)
-		
-		! timestep
-		tau = 0.25_mk*MINVAL(dx)
-		
+        dx(3)       = len_phys(3)/REAL(mesh%Nm(3)-1,mk)
+        
+        ! timestep
+        tau = 0.25_mk*MINVAL(dx)
+        
         !-----------------------------------------------------
         !  allocate temporary storage
         !-----------------------------------------------------
@@ -148,136 +148,112 @@
         ndata_max(3) = MAXVAL(ndata(3,1:nsublist))
         ldu(1)   = ndata_max(1) + ghostsize(1)
         ldu(2)   = ndata_max(2) + ghostsize(2)
-		ldu(3)   = ndata_max(3) + ghostsize(3)
+        ldu(3)   = ndata_max(3) + ghostsize(3)
         ldu(4)   = nsublist
         iopt     = ppm_param_alloc_fit
-		CALL ppm_alloc(phi0,ldl,ldu,iopt,info)
-		CALL ppm_alloc(phirhs,ldl,ldu,iopt,info)
-		CALL ppm_alloc(phiprev,ldl,ldu,iopt,info)
+        CALL ppm_alloc(phi0,ldl,ldu,iopt,info)
+        CALL ppm_alloc(phirhs,ldl,ldu,iopt,info)
+        CALL ppm_alloc(phiprev,ldl,ldu,iopt,info)
         IF(info.NE.0) THEN
            info = ppm_error_fatal
            CALL ppm_error(ppm_err_alloc,'ppm_hamjac_reinit_russo_3d', &
                 &        'temp storage for hamjac',__LINE__,info)
            GOTO 9999
         END IF
-		
-		! fill phi0 with initial condition
+        
+        ! fill phi0 with initial condition
         DO isub=1,nsublist
            isubl = isublist(isub)
            DO k=1,ndata(3,isubl)
-		   DO j=1,ndata(2,isubl)
+           DO j=1,ndata(2,isubl)
               DO i=1,ndata(1,isubl)
-				phi0(i,j,k,isub) = phi(i,j,k,isub)
-				phiprev(i,j,k,isub) = phi(i,j,k,isub)
-				phigrad(1:3,i,j,k,isub) = 0.0_mk
-			  END DO
-			END DO
-			END DO
-		END DO
-		
-        maptype = ppm_param_map_init
-        CALL ppm_map_field_ghost(phi0,topo_id,mesh_id,ghostsize,maptype,info)		
-		maptype = ppm_param_map_ghost_get
-		CALL ppm_map_field_ghost(phi0,topo_id,mesh_id,ghostsize,maptype,info)
-		maptype = ppm_param_map_push
-		CALL ppm_map_field_ghost(phi0,topo_id,mesh_id,ghostsize,maptype,info)
-		maptype = ppm_param_map_send
-		CALL ppm_map_field_ghost(phi0,topo_id,mesh_id,ghostsize,maptype,info)
-		maptype = ppm_param_map_pop
-		CALL ppm_map_field_ghost(phi0,topo_id,mesh_id,ghostsize,maptype,info)
-				
+                phi0(i,j,k,isub) = phi(i,j,k,isub)
+                phiprev(i,j,k,isub) = phi(i,j,k,isub)
+                phigrad(1:3,i,j,k,isub) = 0.0_mk
+              END DO
+            END DO
+            END DO
+        END DO
+        
+        CALL ppm_map_field_ghost_get(topo_id,mesh_id,ghostsize,info)
+        CALL ppm_map_field_push(topo_id,mesh_id,phi0,info)
+        CALL ppm_map_field_send(info)
+        CALL ppm_map_field_pop(topo_id,mesh_id,phi0,ghostsize,info)
+                
         !-----------------------------------------------------
         ! start time integration loop: using TVD RK3
         !-----------------------------------------------------
-		
+        
         DO istep=1,maxstep
            !--- map the ghosts
-           maptype = ppm_param_map_init
-		   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)		   
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,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)
            
-		   ! TVDRK3 substep A
-		   
-		   CALL ppm_hamjac_reinit_russo_step(phi,phi0,phirhs,phigrad,res,s2didx,topo_id,mesh_id&
+           ! TVDRK3 substep A
+           
+           CALL ppm_hamjac_reinit_russo_step(phi,phi0,phirhs,phigrad,res,s2didx,topo_id,mesh_id&
                 &,                  ghostsize,info)
-				
+                
            DO isub=1,nsublist
-              isubl = isublist(isub)			  
+              isubl = isublist(isub)              
               DO k=1,ndata(3,isubl); DO j=1,ndata(2,isubl);DO i=1,ndata(1,isubl)
                  phi(i,j,k,isub) = phi(i,j,k,isub) + tau*phirhs(i,j,k,isub)
               END DO; END DO; END DO
            END DO
-		   
+           
            !--- map the ghosts
-           maptype = ppm_param_map_init
-		   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)		   
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,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)
            
-		   ! TVDRK3 substep B
-		   
-		   CALL ppm_hamjac_reinit_russo_step(phi,phi0,phirhs,phigrad,res,s2didx,topo_id,mesh_id&
+           ! TVDRK3 substep B
+           
+           CALL ppm_hamjac_reinit_russo_step(phi,phi0,phirhs,phigrad,res,s2didx,topo_id,mesh_id&
                 &,                  ghostsize,info)
-				
-		   DO isub=1,nsublist
+                
+           DO isub=1,nsublist
               isubl = isublist(isub)
-			  DO k=1,ndata(3,isubl); DO j=1,ndata(2,isubl);DO i=1,ndata(1,isubl)
+              DO k=1,ndata(3,isubl); DO j=1,ndata(2,isubl);DO i=1,ndata(1,isubl)
                  phi(i,j,k,isub) = phi(i,j,k,isub) + tau*phirhs(i,j,k,isub)
-				 phi(i,j,k,isub) = 0.25_mk*phiprev(i,j,k,isub) + 0.75_mk*phi(i,j,k,isub)
+                 phi(i,j,k,isub) = 0.25_mk*phiprev(i,j,k,isub) + 0.75_mk*phi(i,j,k,isub)
               END DO; END DO; END DO
            END DO
-		   
+           
            !--- map the ghosts
-           maptype = ppm_param_map_init
-		   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)		   
-           maptype = ppm_param_map_ghost_get
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_push
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_send
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-           maptype = ppm_param_map_pop
-           CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,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)
+           
+           ! TVDRK3 substep C
            
-		   ! TVDRK3 substep C
-		   
-		   CALL ppm_hamjac_reinit_russo_step(phi,phi0,phirhs,phigrad,res,s2didx,topo_id,mesh_id&
+           CALL ppm_hamjac_reinit_russo_step(phi,phi0,phirhs,phigrad,res,s2didx,topo_id,mesh_id&
                 &,                  ghostsize,info)
-				
-		   DO isub=1,nsublist
+                
+           DO isub=1,nsublist
               isubl = isublist(isub)
-			  DO k=1,ndata(3,isubl); DO j=1,ndata(2,isubl);DO i=1,ndata(1,isubl)
+              DO k=1,ndata(3,isubl); DO j=1,ndata(2,isubl);DO i=1,ndata(1,isubl)
                  phi(i,j,k,isub) = phi(i,j,k,isub) + tau*phirhs(i,j,k,isub)
-				 phi(i,j,k,isub) = (2.0_mk*phiprev(i,j,k,isub) + phi(i,j,k,isub))/3.0_mk
-				 phiprev(i,j,k,isub) = phi(i,j,k,isub)
+                 phi(i,j,k,isub) = (2.0_mk*phiprev(i,j,k,isub) + phi(i,j,k,isub))/3.0_mk
+                 phiprev(i,j,k,isub) = phi(i,j,k,isub)
               END DO; END DO; END DO
-           END DO		   
+           END DO           
 #ifdef __MPI
-		   CALL MPI_AllReduce(res,gres,1,mpi_prec,MPI_MIN,0,ppm_comm,info)
-		   res = gres
+           CALL MPI_AllReduce(res,gres,1,mpi_prec,MPI_MIN,0,ppm_comm,info)
+           res = gres
 #endif   
-		   IF(res.LT.tol) GOTO 666
-		   
-		   IF(ppm_rank.EQ.0.AND.MOD(istep,5).EQ.0) THEN
-				WRITE(msg,*) 'iteration #',istep,' res=',res
-				CALL ppm_write(ppm_Rank,'ppm_hamjac',msg,info)
-		   END IF
+           IF(res.LT.tol) GOTO 666
+           
+           IF(ppm_rank.EQ.0.AND.MOD(istep,5).EQ.0) THEN
+                WRITE(msg,*) 'iteration #',istep,' res=',res
+                CALL ppm_write(ppm_Rank,'ppm_hamjac',msg,info)
+           END IF
            
            !IF(res.LT.tol) GOTO 666 ! does not work in parallel with ghosting, because all 
-									! processors need to be in loop for ghosting to work
+                                    ! processors need to be in loop for ghosting to work
         END DO
 
         !info = ppm_error_warning
@@ -285,27 +261,21 @@
         !     &         'failed to reach target residual',__LINE__,info)
 
 666     CONTINUE
-	   !--- map the ghosts for last time
-	   maptype = ppm_param_map_init
-	   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)		   
-	   maptype = ppm_param_map_ghost_get
-	   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-	   maptype = ppm_param_map_push
-	   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-	   maptype = ppm_param_map_send
-	   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
-	   maptype = ppm_param_map_pop
-	   CALL ppm_map_field_ghost(phi,topo_id,mesh_id,ghostsize,maptype,info)
+       !--- map the ghosts for last time
+       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)
    
-	   IF(ppm_rank.EQ.0) THEN
-			WRITE(msg,*) 'ended after iteration #',istep,' res=',res
-			CALL ppm_write(ppm_Rank,'ppm_hamjac',msg,info)
-	   END IF
+       IF(ppm_rank.EQ.0) THEN
+            WRITE(msg,*) 'ended after iteration #',istep,' res=',res
+            CALL ppm_write(ppm_Rank,'ppm_hamjac',msg,info)
+       END IF
 
         iopt = ppm_param_dealloc
-		CALL ppm_alloc(phi0,ldl,ldu,iopt,info)
-		CALL ppm_alloc(phirhs,ldl,ldu,iopt,info)
-		CALL ppm_alloc(phiprev,ldl,ldu,iopt,info)
+        CALL ppm_alloc(phi0,ldl,ldu,iopt,info)
+        CALL ppm_alloc(phirhs,ldl,ldu,iopt,info)
+        CALL ppm_alloc(phiprev,ldl,ldu,iopt,info)
         IF(info.NE.0) THEN
            info = ppm_error_error
            CALL ppm_error(ppm_err_dealloc,'ppm_hamjac_reinit_russo_3d', &
@@ -315,10 +285,10 @@
 
 
 9999    CONTINUE
-		
-		CALL substop('ppm_hamjac_reinit_russo_3d',t0,info)
-		
-		
+        
+        CALL substop('ppm_hamjac_reinit_russo_3d',t0,info)
+        
+        
 #if   __KIND == __SINGLE_PRECISION
       END SUBROUTINE ppm_hamjac_reinit_russo_3ds 
 #elif __KIND == __DOUBLE_PRECISION
diff --git a/src/ppm_mg_solv.f b/src/ppm_mg_solv.f
index eec243bb3f7ddf8f985f32ad8ff7c8f90e4d578c..e0c247218ec30b4a9455bd0b0398112a3c43169d 100644
--- a/src/ppm_mg_solv.f
+++ b/src/ppm_mg_solv.f
@@ -584,8 +584,6 @@
               ENDIF
              uc_dummy(:,:,:,:)=0.0_MK
 #endif
-           CALL ppm_map_field_ghost_init(topoid,mesh_id_g(i),&
-     &                             ghostsize,info)
 #if __MESH_DIM == __2D
              iopt = ppm_param_dealloc
              ldl3(1) = 1-ghostsize(1)
@@ -659,8 +657,6 @@
               ENDIF
              uc_dummy(:,:,:,:,:)=0.0_MK
 #endif
-           CALL ppm_map_field_ghost_init(topoid,mesh_id_g(i),&
-     &                             ghostsize,info)
 #if __MESH_DIM == __2D
              iopt = ppm_param_dealloc
              ldl4(1) = 1-ghostsize(1)