diff --git a/compute/zgelqf.c b/compute/zgelqf.c
index 1adc35baed5e0ba7def1d9a78e023a2ab6d4fd58..214067ab6b1aad46e716f9b4a6754f7a1d7a801a 100644
--- a/compute/zgelqf.c
+++ b/compute/zgelqf.c
@@ -134,11 +134,11 @@ int MORSE_zgelqf(int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -198,7 +198,7 @@ int MORSE_zgelqf_Tile(MORSE_desc_t *A, MORSE_desc_t *T)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqf_Tile_Async(A, T, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     
     status = sequence->status;
diff --git a/compute/zgelqs.c b/compute/zgelqs.c
index 314f4869e012e5deb32a1defa46263eb2bcc7517..3620d8c1187a007dd0f323f5241a99dede514943 100644
--- a/compute/zgelqs.c
+++ b/compute/zgelqs.c
@@ -153,13 +153,13 @@ int MORSE_zgelqs(int M, int N, int NRHS,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -219,7 +219,7 @@ int MORSE_zgelqs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqs_Tile_Async(A, T, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/zgels.c b/compute/zgels.c
index 65f0c4c8bf6df2131bc69a318dfd6db461c3af17..0b0e4c979607a39118fdba181764bc9ffe448f23 100644
--- a/compute/zgels.c
+++ b/compute/zgels.c
@@ -202,13 +202,13 @@ int MORSE_zgels(MORSE_enum trans, int M, int N, int NRHS,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -284,7 +284,7 @@ int MORSE_zgels_Tile(MORSE_enum trans, MORSE_desc_t *A,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgels_Tile_Async(trans, A, T, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
 
diff --git a/compute/zgemm.c b/compute/zgemm.c
index 7aa73aa9e4a6845ae7667a705564c066a75da0b3..8fc3e48377ff796c540c6c9cc7e06309e34e039e 100644
--- a/compute/zgemm.c
+++ b/compute/zgemm.c
@@ -231,7 +231,7 @@ int MORSE_zgemm(MORSE_enum transA, MORSE_enum transB, int M, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
         morse_desc_mat_free(&descC);
@@ -239,7 +239,7 @@ int MORSE_zgemm(MORSE_enum transA, MORSE_enum transB, int M, int N, int K,
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, An,  sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, Bn,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,   sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -319,7 +319,7 @@ int MORSE_zgemm_Tile(MORSE_enum transA, MORSE_enum transB,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgemm_Tile_Async(transA, transB, alpha, A, B, beta, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
     RUNTIME_desc_getoncpu(C);
diff --git a/compute/zgeqrf.c b/compute/zgeqrf.c
index 6ead321dd3dbc59037ae7b7bb517e9300e7cc38f..f6162ca88350accd16620d720047a459d5728816 100644
--- a/compute/zgeqrf.c
+++ b/compute/zgeqrf.c
@@ -133,11 +133,11 @@ int MORSE_zgeqrf(int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -197,7 +197,7 @@ int MORSE_zgeqrf_Tile(MORSE_desc_t *A, MORSE_desc_t *T)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrf_Tile_Async(A, T, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
 
     status = sequence->status;
diff --git a/compute/zgeqrs.c b/compute/zgeqrs.c
index 172177b9f5fefde03cee237cb04a7c857414f997..b881bcbe519aa614b0df01d2187e90a2c0cecb6a 100644
--- a/compute/zgeqrs.c
+++ b/compute/zgeqrs.c
@@ -153,13 +153,13 @@ int MORSE_zgeqrs(int M, int N, int NRHS,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -218,7 +218,7 @@ int MORSE_zgeqrs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrs_Tile_Async(A, T, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(T);
     RUNTIME_desc_getoncpu(B);
diff --git a/compute/zgesv_incpiv.c b/compute/zgesv_incpiv.c
index e10879e1b839e40574b6adf4e924bf6f7952100d..07da2243d7cba3c8db3b9357e8d632824d2195c1 100644
--- a/compute/zgesv_incpiv.c
+++ b/compute/zgesv_incpiv.c
@@ -153,13 +153,13 @@ int MORSE_zgesv_incpiv(int N, int NRHS,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -224,7 +224,7 @@ int MORSE_zgesv_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_d
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgesv_incpiv_Tile_Async(A, L, IPIV, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/zgesv_nopiv.c b/compute/zgesv_nopiv.c
index 9f8f30565f6586f234dba6080de9be50667a66ca..60f3a69d3a22502496663190f8c36477b1101b95 100644
--- a/compute/zgesv_nopiv.c
+++ b/compute/zgesv_nopiv.c
@@ -152,13 +152,13 @@ int MORSE_zgesv_nopiv(int N, int NRHS,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -216,7 +216,7 @@ int MORSE_zgesv_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgesv_nopiv_Tile_Async(A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/zgetrf_incpiv.c b/compute/zgetrf_incpiv.c
index 4b76cbb2ea37609ad862aa5629ffd138ef67ba6b..6ab6f822aa2f3a2c798f1a3a9e4e84f9f31681af 100644
--- a/compute/zgetrf_incpiv.c
+++ b/compute/zgetrf_incpiv.c
@@ -135,11 +135,11 @@ int MORSE_zgetrf_incpiv(int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -202,7 +202,7 @@ int MORSE_zgetrf_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrf_incpiv_Tile_Async(A, L, IPIV, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
 
     status = sequence->status;
diff --git a/compute/zgetrf_nopiv.c b/compute/zgetrf_nopiv.c
index 17472bddde9f02e82e981987aeab5d16c186e1e1..e8c2f01510d283575dfbddedbfebce70e8bc2dce 100644
--- a/compute/zgetrf_nopiv.c
+++ b/compute/zgetrf_nopiv.c
@@ -129,12 +129,12 @@ int MORSE_zgetrf_nopiv(int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request );
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,*/
 /*                             sequence, &request );*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -190,7 +190,7 @@ int MORSE_zgetrf_nopiv_Tile(MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrf_nopiv_Tile_Async(A, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     
     status = sequence->status;
diff --git a/compute/zgetrs_incpiv.c b/compute/zgetrs_incpiv.c
index c4c580a224b17033d6f393620162afdd40aff5e1..22542be07c9355ddc040aaea9f6b9e247a344f4c 100644
--- a/compute/zgetrs_incpiv.c
+++ b/compute/zgetrs_incpiv.c
@@ -158,13 +158,13 @@ int MORSE_zgetrs_incpiv(MORSE_enum trans, int N, int NRHS,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -227,7 +227,7 @@ int MORSE_zgetrs_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrs_incpiv_Tile_Async(A, L, IPIV, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/zgetrs_nopiv.c b/compute/zgetrs_nopiv.c
index afe25ac5e6e8aee3ef60046276a53481b43f8594..89791493c8bc8b474b297335d1412f010cec2b96 100644
--- a/compute/zgetrs_nopiv.c
+++ b/compute/zgetrs_nopiv.c
@@ -152,13 +152,13 @@ int MORSE_zgetrs_nopiv(MORSE_enum trans, int N, int NRHS,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -215,7 +215,7 @@ int MORSE_zgetrs_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrs_nopiv_Tile_Async(A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
 
diff --git a/compute/zhemm.c b/compute/zhemm.c
index df0fa2a08ddecbc1892ca0bcc1edac56078ea72f..1a333118d1ddef0b08e846ec7f7dd81bf0970e56 100644
--- a/compute/zhemm.c
+++ b/compute/zhemm.c
@@ -194,7 +194,7 @@ int MORSE_zhemm(MORSE_enum side, MORSE_enum uplo, int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
         morse_desc_mat_free(&descC);
@@ -202,7 +202,7 @@ int MORSE_zhemm(MORSE_enum side, MORSE_enum uplo, int M, int N,
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, Am,  sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, N,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -284,7 +284,7 @@ int MORSE_zhemm_Tile(MORSE_enum side, MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zhemm_Tile_Async(side, uplo, alpha, A, B, beta, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
         RUNTIME_desc_getoncpu(C);
diff --git a/compute/zher2k.c b/compute/zher2k.c
index 5e9b191afeecfb94afe540462c6a95751cb81b6a..f0215d6e2334048d638bed2e6478f218ed977219 100644
--- a/compute/zher2k.c
+++ b/compute/zher2k.c
@@ -198,7 +198,7 @@ int MORSE_zher2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
         morse_desc_mat_free(&descC);
@@ -206,7 +206,7 @@ int MORSE_zher2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, An,  sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, An,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -283,7 +283,7 @@ int MORSE_zher2k_Tile(MORSE_enum uplo, MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zher2k_Tile_Async(uplo, trans, alpha, A, B, beta, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
         RUNTIME_desc_getoncpu(C);
diff --git a/compute/zherk.c b/compute/zherk.c
index 2069e7a22fee9b2c48406d1a6e3c47864d81533f..35e69bd5f5e064ca19a92ac733208d7cd9156aed 100644
--- a/compute/zherk.c
+++ b/compute/zherk.c
@@ -180,13 +180,13 @@ int MORSE_zherk(MORSE_enum uplo, MORSE_enum trans, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descC);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, An,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -259,7 +259,7 @@ int MORSE_zherk_Tile(MORSE_enum uplo, MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zherk_Tile_Async(uplo, trans, alpha, A, beta, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(C);
     
diff --git a/compute/zlacpy.c b/compute/zlacpy.c
index 01c6ddf9ce3193619d4555d4c37176217f554547..db7c293f890be8e2973034803bd6382862d82a60 100644
--- a/compute/zlacpy.c
+++ b/compute/zlacpy.c
@@ -146,12 +146,12 @@ int MORSE_zlacpy(MORSE_enum uplo, int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     morse_sequence_destroy(morse, sequence);
@@ -211,7 +211,7 @@ int MORSE_zlacpy_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlacpy_Tile_Async(uplo, A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_sequence_destroy(morse, sequence);
     return MORSE_SUCCESS;
 }
diff --git a/compute/zlange.c b/compute/zlange.c
index 0b90870de17b25ad5bdbc2f9154f7f2266889307..b3bfe288ad60d0faa6b3d4c1c17fb3ad992e2da5 100644
--- a/compute/zlange.c
+++ b/compute/zlange.c
@@ -146,12 +146,12 @@ double MORSE_zlange(MORSE_enum norm, int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         RUNTIME_desc_getoncpu(&descA);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     morse_sequence_destroy(morse, sequence);
@@ -210,7 +210,7 @@ double MORSE_zlange_Tile(MORSE_enum norm, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlange_Tile_Async(norm, A, &value, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlanhe.c b/compute/zlanhe.c
index 4ac03ab7b0ef2ea584e32ebf76fbc78310618e2a..fcbd5decdd339633502a6777fbc627e4d8e26e07 100644
--- a/compute/zlanhe.c
+++ b/compute/zlanhe.c
@@ -146,12 +146,12 @@ double MORSE_zlanhe(MORSE_enum norm, MORSE_enum uplo, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
     morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(&descA);
     morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     morse_sequence_destroy(morse, sequence);
@@ -214,7 +214,7 @@ double MORSE_zlanhe_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlanhe_Tile_Async(norm, uplo, A, &value, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlansy.c b/compute/zlansy.c
index 57d9f718f5c8e45734dc223bf33c1da01afdb237..15b09950f14a1cb582c9bc1fcb06b05753542f13 100644
--- a/compute/zlansy.c
+++ b/compute/zlansy.c
@@ -145,11 +145,11 @@ double MORSE_zlansy(MORSE_enum norm, MORSE_enum uplo, int N,
     MORSE_zlansy_Tile_Async(norm, uplo, &descA, &value, sequence, &request);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     morse_sequence_destroy(morse, sequence);
@@ -212,7 +212,7 @@ double MORSE_zlansy_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlansy_Tile_Async(norm, uplo, A, &value, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlantr.c b/compute/zlantr.c
index 1d9ad9e43981d5f04d259b899f79224fba5df5b0..f1718da7b283ac1db4d6befa635fc61a2c3de922 100644
--- a/compute/zlantr.c
+++ b/compute/zlantr.c
@@ -165,11 +165,11 @@ double MORSE_zlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
     MORSE_zlantr_Tile_Async(norm, uplo, diag, &descA, &value, sequence, &request);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     morse_sequence_destroy(morse, sequence);
@@ -234,7 +234,7 @@ double MORSE_zlantr_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag, MORS
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlantr_Tile_Async(norm, uplo, diag, A, &value, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlaset.c b/compute/zlaset.c
index 8498e3d26d0f777c6a0f784039aa1b9cae4c9da9..63d46883c08b2035c0493a35a39dd74bea364cb0 100644
--- a/compute/zlaset.c
+++ b/compute/zlaset.c
@@ -138,11 +138,11 @@ int MORSE_zlaset(MORSE_enum uplo, int M, int N,
     MORSE_zlaset_Tile_Async(uplo, alpha, beta, &descA, sequence, &request);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     morse_sequence_destroy(morse, sequence);
@@ -200,7 +200,7 @@ int MORSE_zlaset_Tile(MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlaset_Tile_Async(uplo, alpha, beta, A, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_sequence_destroy(morse, sequence);
     return MORSE_SUCCESS;
 }
diff --git a/compute/zlauum.c b/compute/zlauum.c
index 69849d8a8fc40e5f0005de800df34cb3096cfba9..a79827ce2d245fc322400fc6fbf6999ea6eeb438 100644
--- a/compute/zlauum.c
+++ b/compute/zlauum.c
@@ -133,11 +133,11 @@ int MORSE_zlauum(MORSE_enum uplo, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -199,7 +199,7 @@ int MORSE_zlauum_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlauum_Tile_Async(uplo, A, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     
     status = sequence->status;
diff --git a/compute/zplghe.c b/compute/zplghe.c
index 337a4fac0a41cf1f515a6e0d74fd7cfd20be5dea..0162107f53440761b93c7b9ef532c03b273cffab 100644
--- a/compute/zplghe.c
+++ b/compute/zplghe.c
@@ -114,9 +114,9 @@ int MORSE_zplghe( double bump, int N,
     /* Call the tile interface */
     MORSE_zplghe_Tile_Async( bump, &descA, seed, sequence, &request );
 
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -178,7 +178,7 @@ int MORSE_zplghe_Tile( double bump, MORSE_desc_t *A,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zplghe_Tile_Async( bump, A, seed, sequence, &request );
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/zplgsy.c b/compute/zplgsy.c
index 2904033c0e348dac4fe67e0a2f6b72b1a7a43767..20a9c9f29a588961aac30a24c922c6da048e0cf3 100644
--- a/compute/zplgsy.c
+++ b/compute/zplgsy.c
@@ -114,9 +114,9 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
     /* Call the tile interface */
     MORSE_zplgsy_Tile_Async( bump, &descA, seed, sequence, &request );
 
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -178,7 +178,7 @@ int MORSE_zplgsy_Tile( MORSE_Complex64_t bump, MORSE_desc_t *A,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zplgsy_Tile_Async( bump, A, seed, sequence, &request );
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/zplrnt.c b/compute/zplrnt.c
index 42a303faace040aa3502a7c1bc88972591d5b2d4..efd560da6aa73e3dcc359e3f63feecd8e03fc957 100644
--- a/compute/zplrnt.c
+++ b/compute/zplrnt.c
@@ -116,9 +116,9 @@ int MORSE_zplrnt( int M, int N,
     /* Call the tile interface */
     MORSE_zplrnt_Tile_Async( &descA, seed, sequence, &request );
 
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -176,7 +176,7 @@ int MORSE_zplrnt_Tile( MORSE_desc_t *A,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zplrnt_Tile_Async( A, seed, sequence, &request );
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/zposv.c b/compute/zposv.c
index d3b6a0222080a2d432cc64921f5fe43e24c2a587..5cba21f4929c7469e9cf5954df547274730d118d 100644
--- a/compute/zposv.c
+++ b/compute/zposv.c
@@ -166,13 +166,13 @@ int MORSE_zposv(MORSE_enum uplo, int N, int NRHS,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -242,7 +242,7 @@ int MORSE_zposv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zposv_Tile_Async(uplo, A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/zpotrf.c b/compute/zpotrf.c
index 9335f550425e50bb62913fee54a640339654fddf..1ccae89b1d5d8a39db3dfa6382ba1d9453bbe7ce 100644
--- a/compute/zpotrf.c
+++ b/compute/zpotrf.c
@@ -139,11 +139,11 @@ int MORSE_zpotrf(MORSE_enum uplo, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -211,7 +211,7 @@ int MORSE_zpotrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrf_Tile_Async(uplo, A, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
 
     status = sequence->status;
diff --git a/compute/zpotri.c b/compute/zpotri.c
index 7e3c44d65910f3c978d1d7c2490c3aad9eb40ab2..7ee8c9d3ec8ae1d1942cc36a7a5c597a9ffbce5f 100644
--- a/compute/zpotri.c
+++ b/compute/zpotri.c
@@ -130,11 +130,11 @@ int MORSE_zpotri(MORSE_enum uplo, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -199,7 +199,7 @@ int MORSE_zpotri_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zpotri_Tile_Async(uplo, A, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     
     status = sequence->status;
diff --git a/compute/zpotrimm.c b/compute/zpotrimm.c
index 2db5d5d0e2db2ded1823c09b196081ae31701ca6..179743c050f7ac082781041f3a9a96ca5d034658 100644
--- a/compute/zpotrimm.c
+++ b/compute/zpotrimm.c
@@ -146,13 +146,13 @@ int MORSE_zpotrimm(MORSE_enum uplo, int N,
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
         morse_zooptile2lap(descB, A, NB, NB, LDB, N,  sequence, &request);
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
         morse_desc_mat_free(&descC);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -217,7 +217,7 @@ int MORSE_zpotrimm_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrimm_Tile_Async(uplo, A, B, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(C);
 
     status = sequence->status;
diff --git a/compute/zpotrs.c b/compute/zpotrs.c
index 6133e3b7c82b07758029a650cef5ea4e48ab8a90..bb2de06d5bc89001ff0e21d3403a6809d7575c17 100644
--- a/compute/zpotrs.c
+++ b/compute/zpotrs.c
@@ -149,13 +149,13 @@ int MORSE_zpotrs(MORSE_enum uplo, int N, int NRHS,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -217,7 +217,7 @@ int MORSE_zpotrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrs_Tile_Async(uplo, A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
 
diff --git a/compute/zsymm.c b/compute/zsymm.c
index 01c1bfd6bf78114fa01b079270f3198dd788ea43..92df1735e6551a7c60805c5e6bcb751c1a3d8be4 100644
--- a/compute/zsymm.c
+++ b/compute/zsymm.c
@@ -194,7 +194,7 @@ int MORSE_zsymm(MORSE_enum side, MORSE_enum uplo, int M, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
         morse_desc_mat_free(&descC);
@@ -202,7 +202,7 @@ int MORSE_zsymm(MORSE_enum side, MORSE_enum uplo, int M, int N,
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, Am,  sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, N,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -284,7 +284,7 @@ int MORSE_zsymm_Tile(MORSE_enum side, MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zsymm_Tile_Async(side, uplo, alpha, A, B, beta, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
         RUNTIME_desc_getoncpu(C);
diff --git a/compute/zsyr2k.c b/compute/zsyr2k.c
index 19fabe35a7e24e0ddc0db7659cafd3d0d94608d2..f028ab5c95afd9208534b5fa7efba84124b31e3d 100644
--- a/compute/zsyr2k.c
+++ b/compute/zsyr2k.c
@@ -198,7 +198,7 @@ int MORSE_zsyr2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
         morse_desc_mat_free(&descC);
@@ -206,7 +206,7 @@ int MORSE_zsyr2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, An,  sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, An,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -283,7 +283,7 @@ int MORSE_zsyr2k_Tile(MORSE_enum uplo, MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zsyr2k_Tile_Async(uplo, trans, alpha, A, B, beta, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
         RUNTIME_desc_getoncpu(C);
diff --git a/compute/zsyrk.c b/compute/zsyrk.c
index 1b5791b8e5d24644791bf3caf69b5401e3a7b175..1f7aaebccb2a1d88a88e4e221966482e9225db0e 100644
--- a/compute/zsyrk.c
+++ b/compute/zsyrk.c
@@ -180,13 +180,13 @@ int MORSE_zsyrk(MORSE_enum uplo, MORSE_enum trans, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descC);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, An,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -259,7 +259,7 @@ int MORSE_zsyrk_Tile(MORSE_enum uplo, MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zsyrk_Tile_Async(uplo, trans, alpha, A, beta, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(C);
     
diff --git a/compute/zsysv.c b/compute/zsysv.c
index 954e31bb2ba24b9d01d1bc3d2f61a7c1ecab6fee..1d8eaaebb87b9b7b522ec752bfc0ed2ca85b2278 100644
--- a/compute/zsysv.c
+++ b/compute/zsysv.c
@@ -163,13 +163,13 @@ int MORSE_zsysv(MORSE_enum uplo, int N, int NRHS,
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -235,7 +235,7 @@ int MORSE_zsysv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zsysv_Tile_Async(uplo, A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
 
diff --git a/compute/zsytrf.c b/compute/zsytrf.c
index fd6fb4c154fd5907b337ef1d61ce01711372c3d1..dd1ea44f5b019dec8354bc5c7dd353c32d36f6f8 100644
--- a/compute/zsytrf.c
+++ b/compute/zsytrf.c
@@ -134,11 +134,11 @@ int MORSE_zsytrf(MORSE_enum uplo, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -200,7 +200,7 @@ int MORSE_zsytrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zsytrf_Tile_Async(uplo, A, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
 
     status = sequence->status;
diff --git a/compute/zsytrs.c b/compute/zsytrs.c
index a51bf4662881feace209bb1efa7be90d9569fec2..e8b934b2f064cca769e9355845cbba8711ce0024 100644
--- a/compute/zsytrs.c
+++ b/compute/zsytrs.c
@@ -148,13 +148,13 @@ int MORSE_zsytrs(MORSE_enum uplo, int N, int NRHS,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
     
     status = sequence->status;
@@ -213,7 +213,7 @@ int MORSE_zsytrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zsytrs_Tile_Async(uplo, A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(B);
 
diff --git a/compute/ztrmm.c b/compute/ztrmm.c
index baf28cd4fcdb96884d31d08c4c23ffbbeaf8aeb7..029142851afffad8708e04fd89684fd719b68e87 100644
--- a/compute/ztrmm.c
+++ b/compute/ztrmm.c
@@ -194,13 +194,13 @@ int MORSE_ztrmm(MORSE_enum side, MORSE_enum uplo,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, NA,    sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -285,7 +285,7 @@ int MORSE_ztrmm_Tile(MORSE_enum side, MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_ztrmm_Tile_Async(side, uplo, transA, diag, alpha, A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/ztrsm.c b/compute/ztrsm.c
index 865287a29b37d6494899a497408d3c3cf48c1da9..82b8ada02c890d94b0b090c79c508756b2c6854f 100644
--- a/compute/ztrsm.c
+++ b/compute/ztrsm.c
@@ -192,13 +192,13 @@ int MORSE_ztrsm(MORSE_enum side, MORSE_enum uplo,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, NA,    sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -283,7 +283,7 @@ int MORSE_ztrsm_Tile(MORSE_enum side, MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_ztrsm_Tile_Async(side, uplo, transA, diag, alpha, A, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/ztrsmpl.c b/compute/ztrsmpl.c
index 4cc5c31c3628134bfd4299095a01c9a2735e3152..dd18ea9e58043047cf10b36c3cfa5ba664e4ac18 100644
--- a/compute/ztrsmpl.c
+++ b/compute/ztrsmpl.c
@@ -146,13 +146,13 @@ int MORSE_ztrsmpl(int N, int NRHS,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descB);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,     sequence, &request);*/
 /*        morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -212,7 +212,7 @@ int MORSE_ztrsmpl_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t
     }
     morse_sequence_create(morse, &sequence);
     MORSE_ztrsmpl_Tile_Async(A, L, IPIV, B, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(B);
     
diff --git a/compute/ztrtri.c b/compute/ztrtri.c
index 556c97d673f9ca290a695d843b11bac5b1ab0909..628cd063585222ff61080285ac352b845ee969d0 100644
--- a/compute/ztrtri.c
+++ b/compute/ztrtri.c
@@ -142,11 +142,11 @@ int MORSE_ztrtri(MORSE_enum uplo, MORSE_enum diag, int N,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -218,7 +218,7 @@ int MORSE_ztrtri_Tile(MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_ztrtri_Tile_Async(uplo, diag, A, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     
     status = sequence->status;
diff --git a/compute/zunglq.c b/compute/zunglq.c
index f09320d489669f27a70b36df46077d06a365bf5b..af519a9aeb8a477ad42711717134b62e1a8b8067 100644
--- a/compute/zunglq.c
+++ b/compute/zunglq.c
@@ -152,13 +152,13 @@ int MORSE_zunglq(int M, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descQ, Q, NB, NB, LDQ, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descQ);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
 /*        morse_ziptile2lap( descQ, Q, NB, NB, LDQ, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
         
     status = sequence->status;
@@ -214,7 +214,7 @@ int MORSE_zunglq_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zunglq_Tile_Async(A, T, Q, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(Q);
     
diff --git a/compute/zungqr.c b/compute/zungqr.c
index 59cc04800042b275464fc7a28f65581ecf461c6e..dffbd6479c9073f766c5555b5a64eaa3984e4013 100644
--- a/compute/zungqr.c
+++ b/compute/zungqr.c
@@ -151,13 +151,13 @@ int MORSE_zungqr(int M, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descQ, Q, NB, NB, LDQ, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descQ);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, K,  sequence, &request);*/
 /*        morse_ziptile2lap( descQ, Q, NB, NB, LDQ, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -213,7 +213,7 @@ int MORSE_zungqr_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zungqr_Tile_Async(A, T, Q, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
     RUNTIME_desc_getoncpu(Q);
     
diff --git a/compute/zunmlq.c b/compute/zunmlq.c
index 0f6a0281fcd6635d5de8ca0b6777c009eb8663a3..fcf8fbb4eb2cc59fc1b8ec5f729f390e6a7e2e39 100644
--- a/compute/zunmlq.c
+++ b/compute/zunmlq.c
@@ -190,13 +190,13 @@ int MORSE_zunmlq(MORSE_enum side, MORSE_enum trans, int M, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descC);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, An, sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -267,7 +267,7 @@ int MORSE_zunmlq_Tile(MORSE_enum side, MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zunmlq_Tile_Async(side, trans, A, T, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(C);
     
diff --git a/compute/zunmqr.c b/compute/zunmqr.c
index 6c34b587e5e1c141b9eb03975b818ae7b9f6b5fd..b344058cbc57599b6110d8c4c655f31e09ff44f8 100644
--- a/compute/zunmqr.c
+++ b/compute/zunmqr.c
@@ -193,13 +193,13 @@ int MORSE_zunmqr(MORSE_enum side, MORSE_enum trans, int M, int N, int K,
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
         morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
-        RUNTIME_barrier(morse);
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
         morse_desc_mat_free(&descC);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, K,  sequence, &request);*/
 /*        morse_ziptile2lap( descC, C, NB, NB, LDC, N,  sequence, &request);*/
-/*        RUNTIME_barrier(morse);*/
+/*        morse_sequence_wait(morse, sequence);*/
 /*    }*/
 
     status = sequence->status;
@@ -271,7 +271,7 @@ int MORSE_zunmqr_Tile(MORSE_enum side, MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zunmqr_Tile_Async(side, trans, A, T, C, sequence, &request);
-    RUNTIME_barrier(morse);
+    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu(A);
         RUNTIME_desc_getoncpu(C);
     
diff --git a/runtime/starpu/control/runtime_async.c b/runtime/starpu/control/runtime_async.c
index 849a5ce539df87e6abb26d3be995b3f146d97ea9..cad933d391c065a3b5ba8a45997d1ecc410a2de2 100644
--- a/runtime/starpu/control/runtime_async.c
+++ b/runtime/starpu/control/runtime_async.c
@@ -53,6 +53,9 @@ int RUNTIME_sequence_wait( MORSE_context_t *morse, MORSE_sequence_t *sequence )
     (void)morse;
     (void)sequence;
     starpu_task_wait_for_all();
+#if defined(CHAMELEON_USE_MPI)
+    starpu_mpi_barrier(MPI_COMM_WORLD);
+#endif
     return MORSE_SUCCESS;
 }