diff --git a/src/ppm_mg_alloc_bc.f b/src/ppm_mg_alloc_bc.f
index bb6684541174e591db4f740f63bc91ac510d1db0..750409594fb5d4584a395cd7a1b1fe2670f98d6c 100644
--- a/src/ppm_mg_alloc_bc.f
+++ b/src/ppm_mg_alloc_bc.f
@@ -99,6 +99,8 @@
       USE ppm_module_substop
       USE ppm_module_error
       USE ppm_module_alloc
+      USE ppm_module_write
+
       IMPLICIT NONE
 
 #if    __KIND == __SINGLE_PRECISION | __KIND == __SINGLE_PRECISION_COMPLEX
diff --git a/src/ppm_mg_alloc_field.f b/src/ppm_mg_alloc_field.f
index dcacdbf12b1ce7eacdaaca1bfa3e83af6eb16461..96348d4301ec914155db763fb060736d9861a83d 100644
--- a/src/ppm_mg_alloc_field.f
+++ b/src/ppm_mg_alloc_field.f
@@ -102,6 +102,8 @@
       USE ppm_module_substart
       USE ppm_module_substop
       USE ppm_module_error
+      USE ppm_module_write
+
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION | __KIND == __SINGLE_PRECISION_COMPLEX
       INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_core.f b/src/ppm_mg_core.f
index 17a49f813c6ec2becfafb8c1c6e4ba794653e6b0..a5268c0e5f1874efc9f11b7ba30a424e4287a71e 100644
--- a/src/ppm_mg_core.f
+++ b/src/ppm_mg_core.f
@@ -75,6 +75,7 @@
         USE ppm_module_substop
         USE ppm_module_error
         USE ppm_module_alloc
+        USE ppm_module_write
         IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
         INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_finalize.f b/src/ppm_mg_finalize.f
index abf4f73ed9549745501015c18ab3a72a77eb412c..af1e7c73bcc88775c18a53211331817226ee5fe2 100644
--- a/src/ppm_mg_finalize.f
+++ b/src/ppm_mg_finalize.f
@@ -94,6 +94,8 @@
       USE ppm_module_substop
       USE ppm_module_error
       USE ppm_module_alloc
+      USE ppm_module_write
+
       IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION | __KIND == __SINGLE_PRECISION_COMPLEX
       INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_init.f b/src/ppm_mg_init.f
index cf4fb73c0a0adaa85532102250c21121b0a35fc9..b15405128570abca0d2e9b6607e073ec1dc002ce 100644
--- a/src/ppm_mg_init.f
+++ b/src/ppm_mg_init.f
@@ -149,13 +149,13 @@
          !  Modules 
          !----------------------------------------------------------------------
          USE ppm_module_data
-         
          USE ppm_module_data_mg
          USE ppm_module_mg_alloc
          USE ppm_module_alloc
          USE ppm_module_mg_alloc
          USE ppm_module_error
-         USE ppm_module_mesh_derive
+         USE ppm_module_write
+         USE ppm_module_mesh
          USE ppm_module_substart
          USE ppm_module_substop
          USE ppm_module_typedef
diff --git a/src/ppm_mg_prolong.f b/src/ppm_mg_prolong.f
index d130b14e79672a4f42335afd4b71ae1949f8bc83..8cd98b6339b486ade532c30995d36dc2b31145f4 100644
--- a/src/ppm_mg_prolong.f
+++ b/src/ppm_mg_prolong.f
@@ -92,6 +92,7 @@
          USE ppm_module_substop
          USE ppm_module_error
          USE ppm_module_alloc
+         USE ppm_module_write
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
diff --git a/src/ppm_mg_res_coarse.f b/src/ppm_mg_res_coarse.f
index bfe6d1faaa553e5ea4fe0b402409366cd9e4afde..a45eaa79218b41317cd061ba12906f93f93d3512 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_write
         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 c29375eeb1ed5a7f387b99fda51bc132e55132eb..f00f2708311c247fe14bf6e1d5eb42b86083770f 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_write
         USE ppm_module_substart
         USE ppm_module_substop
         USE ppm_module_error
diff --git a/src/ppm_mg_restrict.f b/src/ppm_mg_restrict.f
index f5f635b3daa00d35d446a5ede537f277410e24b8..df23f927ec5f22c6facb20bde4851bd4c5870267 100644
--- a/src/ppm_mg_restrict.f
+++ b/src/ppm_mg_restrict.f
@@ -97,9 +97,12 @@
         !-----------------------------------------------------------------------
         USE ppm_module_data
         USE ppm_module_data_mg
-        USE ppm_module_error
+        USE ppm_module_alloc
         USE ppm_module_substart
         USE ppm_module_substop
+        USE ppm_module_error
+        USE ppm_module_write
+        USE ppm_module_map
         IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
            INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -274,14 +277,15 @@
               ENDDO
             ENDDO   
           ENDDO 
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          ghostsize,info)
           DO isub=1,nsubs
             terr=>mgfield(isub,mlevm1)%err 
             pfc=>mgfield(isub,mlev)%fc 
@@ -352,14 +356,15 @@
             ENDDO   
            ENDDO
           ENDDO 
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlevm1),&
-        &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          ghostsize,info)
 
 
             DO isub=1,nsubs
@@ -477,14 +482,16 @@
              ENDDO   
             ENDDO
           ENDDO 
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-        &                          ghostsize,ppm_param_map_pop,info)
+
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          vecdim,ghostsize,info)
           DO isub=1,nsubs
             terr=>mgfield(isub,mlevm1)%err
             pfc=>mgfield(isub,mlev)%fc
@@ -573,14 +580,15 @@
             ENDDO
           ENDDO  
         ENDDO 
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                         ghostsize,ppm_param_map_ghost_get,info)
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                         ghostsize,ppm_param_map_push,info)
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                         ghostsize,ppm_param_map_send,info)
-        CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlevm1),&
-       &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlevm1),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlevm1),uc_dummy,&
+        &                          vecdim,ghostsize,info)
          DO isub=1,nsubs
            terr=>mgfield(isub,mlevm1)%err
            pfc=>mgfield(isub,mlev)%fc
diff --git a/src/ppm_mg_smooth_coarse.f b/src/ppm_mg_smooth_coarse.f
index 2c7afdbb143b876629e53a26a83b3312543d4ae7..fa82836f1356eefc4e8686751f483598e4e219d1 100644
--- a/src/ppm_mg_smooth_coarse.f
+++ b/src/ppm_mg_smooth_coarse.f
@@ -120,7 +120,8 @@
          USE ppm_module_error
          USE ppm_module_alloc
          USE ppm_module_map
-         
+         USE ppm_module_data_mesh
+         USE ppm_module_write
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -388,14 +389,16 @@
                !----------------------------------------------------------------
                !Communicate
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                            tuc(:,:)=uc_dummy(&
@@ -422,14 +425,15 @@
                ENDIF
               ENDDO!DO color   
               IF (isweep.EQ.nsweep) THEN
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info)
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info)
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info)
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info)
+               CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                            tuc(:,:)=uc_dummy(&
@@ -486,14 +490,15 @@
                !----------------------------------------------------------------
                !Communicate
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                  a=0
                  b=0
                  c=0
@@ -623,14 +628,15 @@
                   ENDIF
            ENDDO!DO color
                IF (isweep.EQ.nsweep) THEN
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+                CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+                CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         info)
+                CALL ppm_map_field_send(info)
+                !TODO: I'm not 100% sure about that since the signature
+                !has been changed dramatically
+                CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          ghostsize,info)
                ENDIF
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc  
@@ -690,14 +696,15 @@
                !----------------------------------------------------------------
                !Communicate 
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+               CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                   tuc(:,:,:)=uc_dummy(&
@@ -725,14 +732,15 @@
                     ENDIF
             ENDDO!DO color   
               IF (isweep.EQ.nsweep) THEN
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                DO isub=1,nsubs
                   tuc=>mgfield(isub,mlev)%uc
                   tuc(:,:,:)=uc_dummy(&
@@ -813,14 +821,15 @@
                !----------------------------------------------------------------
                !Communicate 
                !----------------------------------------------------------------
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                    ghostsize,ppm_param_map_ghost_get,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_push,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                         ghostsize,ppm_param_map_send,info) 
-               CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-      &                          ghostsize,ppm_param_map_pop,info) 
+               CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+               CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+               CALL ppm_map_field_send(info)
+               !TODO: I'm not 100% sure about that since the signature
+               !has been changed dramatically
+               CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                  a=0
                  b=0
                  c=0
@@ -1006,14 +1015,15 @@
                    ENDIF 
            ENDDO!DO color
           IF (isweep.EQ.nsweep) THEN
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &             ghostsize,ppm_param_map_ghost_get,info) 
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &                   ghostsize,ppm_param_map_push,info) 
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &                   ghostsize,ppm_param_map_send,info) 
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(mlev),&
-        &                ghostsize,ppm_param_map_pop,info) 
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                         vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),uc_dummy,&
+        &                          vecdim,ghostsize,info)
                    DO isub=1,nsubs 
                     tuc=>mgfield(isub,mlev)%uc
                     DO k=1-ghostsize(3),max_node(3,mlev)+ghostsize(3)
diff --git a/src/ppm_mg_smooth_fine.f b/src/ppm_mg_smooth_fine.f
index 7bbaafbc01cb11c8d2b7a4c5d41d612482972eb1..559ab9ca71e4f15e5147134ccbceb7487b35b462 100644
--- a/src/ppm_mg_smooth_fine.f
+++ b/src/ppm_mg_smooth_fine.f
@@ -114,7 +114,8 @@
          USE ppm_module_error
          USE ppm_module_alloc
          USE ppm_module_map
-         
+         USE ppm_module_data_mesh
+         USE ppm_module_write
          IMPLICIT NONE
 #if    __KIND == __SINGLE_PRECISION
          INTEGER, PARAMETER :: MK = ppm_kind_single
@@ -353,14 +354,14 @@ dz=dz_d
               !----------------------------------------------------------------
               !Communicate
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
             DO isub=1,nsubs
               DO j=start(2,isub,1),istop(2,isub,1)
                  DO i=start(1,isub,1)+mod(j+color,2),istop(1,isub,1),2
@@ -373,14 +374,13 @@ dz=dz_d
              ENDDO !isub
         ENDDO!DO color
         IF (isweep.EQ.nsweep) THEN
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
 
         ENDIF
       ENDDO
@@ -481,14 +481,13 @@ dz=dz_d
               !Communicate red(even) if color==0 or communicate black(odd)
               !if color==1
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
               DO isub=1,nsubs
               DO k=start(3,isub,1)+e(isub),istop(3,isub,1)-g(isub)
                  DO j=start(2,isub,1)+c(isub),istop(2,isub,1)-d(isub)
@@ -512,14 +511,13 @@ dz=dz_d
            ENDDO!subs
         ENDDO!DO color
         IF (isweep.EQ.nsweep) THEN
-             CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,ghostsize,info)
         ENDIF
       ENDDO
 #endif
@@ -535,14 +533,14 @@ dz=dz_d
               !Communicate red(even) if color==0 or communicate black(odd)
               !if color==1
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
            DO isub=1,nsubs
               DO j=start(2,isub,1),istop(2,isub,1)
                  DO i=start(1,isub,1)+mod(j+color,2),istop(1,isub,1),2
@@ -557,14 +555,14 @@ dz=dz_d
            ENDDO
         ENDDO!DO color
         IF (isweep.EQ.nsweep) THEN
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
          ENDIF
        ENDDO
 #elif __MESH_DIM == __3D
@@ -671,14 +669,14 @@ dz=dz_d
               !Communicate red(even) if color==0 or communicate black(odd)
               !if color==1
               !----------------------------------------------------------------
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
 #ifdef  __VECTOR
              DO isub=1,nsubs
               DO k=start(3,isub,1)+e(isub),istop(3,isub,1)-g(isub)
@@ -747,14 +745,14 @@ dz=dz_d
 #endif
           ENDDO!DO color
             IF (isweep.EQ.nsweep) THEN
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                    ghostsize,ppm_param_map_ghost_get,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_push,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                         ghostsize,ppm_param_map_send,info)
-              CALL ppm_map_field_ghost(u,vecdim,topoid,mesh_id_g(mlev),&
-     &                          ghostsize,ppm_param_map_pop,info)
+              CALL ppm_map_field_ghost_get(topoid,mesh_id_g(mlev),&
+        &                         ghostsize,info)
+              CALL ppm_map_field_push(topoid,mesh_id_g(mlev),u,vecdim,info)
+              CALL ppm_map_field_send(info)
+              !TODO: I'm not 100% sure about that since the signature
+              !has been changed dramatically
+              CALL ppm_map_field_pop(topoid,mesh_id_g(mlev),u,&
+        &                          vecdim,ghostsize,info)
            ENDIF
        ENDDO
             iopt = ppm_param_dealloc
diff --git a/src/ppm_mg_solv.f b/src/ppm_mg_solv.f
index 9f57ebd2f62fa2fb613f653e46c0bb61c739ff30..eec243bb3f7ddf8f985f32ad8ff7c8f90e4d578c 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
@@ -131,6 +131,7 @@
         USE ppm_module_mg_res
         USE ppm_module_mg_prolong
         USE ppm_module_mg_smooth
+        USE ppm_module_write
          IMPLICIT NONE
 #ifdef __MPI
        INCLUDE  'mpif.h'
@@ -583,8 +584,8 @@
               ENDIF
              uc_dummy(:,:,:,:)=0.0_MK
 #endif
-           CALL ppm_map_field_ghost(uc_dummy,topoid,mesh_id_g(i),&
-     &                             ghostsize,ppm_param_map_init,info) 
+           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)
@@ -658,8 +659,8 @@
               ENDIF
              uc_dummy(:,:,:,:,:)=0.0_MK
 #endif
-           CALL ppm_map_field_ghost(uc_dummy,vecdim,topoid,mesh_id_g(i),&
-     &                             ghostsize,ppm_param_map_init,info) 
+           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)
diff --git a/src/ppm_module_mg.f b/src/ppm_module_mg.f
index 1fab5056a20083997fd39765ef7e1a0a4448dbe4..2b853a77b154bee11c9fddefca28d303c4d9b5f1 100644
--- a/src/ppm_module_mg.f
+++ b/src/ppm_module_mg.f
@@ -33,5 +33,11 @@
          USE ppm_module_mg_init
          USE ppm_module_mg_solv
          USE ppm_module_mg_finalize
+         USE ppm_module_mg_alloc
+         USE ppm_module_mg_core
+         USE ppm_module_mg_prolong
+         USE ppm_module_mg_res
+         USE ppm_module_mg_restrict
+         USE ppm_module_mg_smooth
          
       END MODULE ppm_module_mg
diff --git a/src/ppm_module_mg_init.f b/src/ppm_module_mg_init.f
index 214e920ce264b068e16a1876d22223a5f2795642..ed91a64f97d73c9a07dc9375a2ea4d26cefb1a5f 100644
--- a/src/ppm_module_mg_init.f
+++ b/src/ppm_module_mg_init.f
@@ -1,23 +1,23 @@
-!-------------------------------------------------------------------------
-! Module         :            ppm_module_mg_init
-!-------------------------------------------------------------------------
-!
-! Purpose       :  module of the initialization routine
-!               
-!
-! Remarks       : 
-!
-! References    : 
-!
-! Revisions     :
-!-------------------------------------------------------------------------
-!
-!-------------------------------------------------------------------------
-!  Parallel Particle Mesh Library (PPM)
-!  Institute of Computational Science
-!  ETH Zentrum, Hirschengraben 84
-!  CH-8092 Zurich, Switzerland
-!-------------------------------------------------------------------------
+      !-------------------------------------------------------------------------
+      ! Module         :            ppm_module_mg_init
+      !-------------------------------------------------------------------------
+      !
+      ! Purpose       :  module of the initialization routine
+      !
+      !
+      ! Remarks       :
+      !
+      ! References    :
+      !
+      ! Revisions     :
+      !-------------------------------------------------------------------------
+      !
+      !-------------------------------------------------------------------------
+      !  Parallel Particle Mesh Library (PPM)
+      !  Institute of Computational Science
+      !  ETH Zentrum, Hirschengraben 84
+      !  CH-8092 Zurich, Switzerland
+      !-------------------------------------------------------------------------
 
 
 #define __SINGLE_PRECISION 1
@@ -29,30 +29,29 @@
 #define __SFIELD           9
 #define __VFIELD          10
 
-MODULE ppm_module_mg_init   
-  !--------------------------------------------------------------------------
-  !Modules
-  !-----------------------------------------------------------------------------
-
-
-  !-----------------------------------------------------------------------------
-
-  INTERFACE ppm_mg_init
-     MODULE PROCEDURE ppm_mg_init_2d_sca_s
-     MODULE PROCEDURE ppm_mg_init_2d_sca_d
-     MODULE PROCEDURE ppm_mg_init_3d_sca_s
-     MODULE PROCEDURE ppm_mg_init_3d_sca_d
-     MODULE PROCEDURE ppm_mg_init_2d_vec_s
-     MODULE PROCEDURE ppm_mg_init_2d_vec_d
-     MODULE PROCEDURE ppm_mg_init_3d_vec_s
-     MODULE PROCEDURE ppm_mg_init_3d_vec_d
-  END INTERFACE
-
-  !-----------------------------------------------------------------------------
-  ! INCLUDE THE SOURCES
-  !-----------------------------------------------------------------------------
-
-CONTAINS
+      MODULE ppm_module_mg_init
+      !-----------------------------------------------------------------
+      !Modules
+      !-----------------------------------------------------------------
+
+      !-----------------------------------------------------------------
+
+        INTERFACE ppm_mg_init
+           MODULE PROCEDURE ppm_mg_init_2d_sca_s
+           MODULE PROCEDURE ppm_mg_init_2d_sca_d
+           MODULE PROCEDURE ppm_mg_init_3d_sca_s
+           MODULE PROCEDURE ppm_mg_init_3d_sca_d
+           MODULE PROCEDURE ppm_mg_init_2d_vec_s
+           MODULE PROCEDURE ppm_mg_init_2d_vec_d
+           MODULE PROCEDURE ppm_mg_init_3d_vec_s
+           MODULE PROCEDURE ppm_mg_init_3d_vec_d
+        END INTERFACE
+
+      !-----------------------------------------------------------------
+      ! INCLUDE THE SOURCES
+      !-----------------------------------------------------------------
+
+       CONTAINS
 #define __DIM __SFIELD
 #define __MESH_DIM __2D
 #define __KIND __SINGLE_PRECISION
@@ -98,6 +97,6 @@ CONTAINS
 #undef __DIM
 
 
-END MODULE ppm_module_mg_init
+      END MODULE ppm_module_mg_init