diff --git a/compute/zgeadd.c b/compute/zgeadd.c
index 2a6f0ea1cbb1d6b7bce9e5216a2950dfb7489f79..bb3e9afec9e44bf3ebfb63b7eb614ead584e6263 100644
--- a/compute/zgeadd.c
+++ b/compute/zgeadd.c
@@ -249,9 +249,9 @@ int MORSE_zgeadd_Tile(MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgeadd_Tile_Async(trans, alpha, A, beta, B, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqf.c b/compute/zgelqf.c
index 11e4cc42163b5339f5df7b7dbd0d9d94769a1629..9dcd6e8f11c8967fc1a7459823faf9b2c3753b72 100644
--- a/compute/zgelqf.c
+++ b/compute/zgelqf.c
@@ -200,8 +200,8 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqf_param.c b/compute/zgelqf_param.c
index de955081e51a84a4980bc68b03ecc7123160699e..215f6efd524ee6ae96266cf642c449f85df4b2db 100644
--- a/compute/zgelqf_param.c
+++ b/compute/zgelqf_param.c
@@ -197,8 +197,8 @@ int MORSE_zgelqf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqf_param_Tile_Async(qrtree, A, TS, TT, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqs.c b/compute/zgelqs.c
index 1e4d304c096e69e23d0aa28a8cc3a404978f7347..c82f52ecd8b3bd2fd70fba2150deb66c234bc9b8 100644
--- a/compute/zgelqs.c
+++ b/compute/zgelqs.c
@@ -222,9 +222,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgelqs_param.c b/compute/zgelqs_param.c
index d3248520288b875e60c5c802f153b76ceebd6858..76384fb7d0fbe0037232fe33198116414281345d 100644
--- a/compute/zgelqs_param.c
+++ b/compute/zgelqs_param.c
@@ -227,9 +227,9 @@ int MORSE_zgelqs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqs_param_Tile_Async(qrtree, A, TS, TT, B, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgels.c b/compute/zgels.c
index cc2126d79a1192d7ebdcd24b1f31aeadec873681..9a83d4fa9da74df74d9675118c1ff16785b3ebc2 100644
--- a/compute/zgels.c
+++ b/compute/zgels.c
@@ -286,9 +286,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgels_param.c b/compute/zgels_param.c
index 3f7e3653a36aff900fb567bb6ef2cf8794da8a99..4588de3a1f0bf1ce145f280b0f1b30e6042625d7 100644
--- a/compute/zgels_param.c
+++ b/compute/zgels_param.c
@@ -291,9 +291,9 @@ int MORSE_zgels_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum trans, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgels_param_Tile_Async(qrtree, trans, A, TS, TT, B, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgemm.c b/compute/zgemm.c
index 44f4bb88965fb5f21b5897892bfb76402a34148a..b69e804a34e73fbba2e287d71bd7068176f7eb2b 100644
--- a/compute/zgemm.c
+++ b/compute/zgemm.c
@@ -321,10 +321,10 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrf.c b/compute/zgeqrf.c
index 0ec53a8537cc3ac0430d08abf90099b2a3b77d7a..04433b567e09dc67580a05b41b27ddc494ee6e7b 100644
--- a/compute/zgeqrf.c
+++ b/compute/zgeqrf.c
@@ -199,8 +199,8 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrf_param.c b/compute/zgeqrf_param.c
index 2c456a5c5b3e4de2e9fb5eace8ba9ec5fbf738cd..3924becd6192526800e722d9d6ee198f0c8f1ede 100644
--- a/compute/zgeqrf_param.c
+++ b/compute/zgeqrf_param.c
@@ -206,8 +206,8 @@ int MORSE_zgeqrf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrf_param_Tile_Async(qrtree, A, TS, TT, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrs.c b/compute/zgeqrs.c
index e3f40ec0d4c4b0b7f7c690c9545a9e0e4fa7f1ad..99e7cea47541fc56f93c254e705870ea0f28ba9e 100644
--- a/compute/zgeqrs.c
+++ b/compute/zgeqrs.c
@@ -221,10 +221,10 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( T, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c
index 21abd84e12cddf34b72e0b069370ca60410b3086..83d16068e4566e3b8dbe8b91098531eb5f623e30 100644
--- a/compute/zgeqrs_param.c
+++ b/compute/zgeqrs_param.c
@@ -216,11 +216,11 @@ int MORSE_zgeqrs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrs_param_Tile_Async(qrtree, A, TS, TT, B, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( TS, sequence );
     RUNTIME_desc_getoncpu_async( TT, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgesv_incpiv.c b/compute/zgesv_incpiv.c
index 4ab52cd8b377da9de69658c57052bba753d8cf9a..59b3b9f81bed692e0eee1b8eef9b1868674e40c7 100644
--- a/compute/zgesv_incpiv.c
+++ b/compute/zgesv_incpiv.c
@@ -226,9 +226,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgesv_nopiv.c b/compute/zgesv_nopiv.c
index 3261da14d4eb3cb64f161c0077018280f18129d4..0e8ae5277de07611c343a81ae3b0e3eeaf4a0907 100644
--- a/compute/zgesv_nopiv.c
+++ b/compute/zgesv_nopiv.c
@@ -218,9 +218,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrf_incpiv.c b/compute/zgetrf_incpiv.c
index 6e4ba0ecfbded633c6f82275a8939a2e14e12ccf..9ea8c5562b26a1d0e56f9966ab88ebf38ade9042 100644
--- a/compute/zgetrf_incpiv.c
+++ b/compute/zgetrf_incpiv.c
@@ -204,8 +204,8 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrf_nopiv.c b/compute/zgetrf_nopiv.c
index 17cac2dd2b38f5e4c102517f73b3915975831782..14546df8d967d205d62fce83b21250c84616056f 100644
--- a/compute/zgetrf_nopiv.c
+++ b/compute/zgetrf_nopiv.c
@@ -192,8 +192,8 @@ int MORSE_zgetrf_nopiv_Tile(MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrf_nopiv_Tile_Async(A, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrs_incpiv.c b/compute/zgetrs_incpiv.c
index d5d79a006bf6b0819b830cf88fca8fa75eb0e3b6..5cf6d483a9cab1b36c91e0470ab6797f96c1378f 100644
--- a/compute/zgetrs_incpiv.c
+++ b/compute/zgetrs_incpiv.c
@@ -229,9 +229,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zgetrs_nopiv.c b/compute/zgetrs_nopiv.c
index 80d3f8e48fe17c2c1991728e8c649375481d3560..8be6d99d9409e7f1bd04043c77056b1771f5d7a4 100644
--- a/compute/zgetrs_nopiv.c
+++ b/compute/zgetrs_nopiv.c
@@ -217,9 +217,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zhemm.c b/compute/zhemm.c
index 834557cc7383decc207beb2e75b9b55b71f49d3f..ad7429942dff1cb02c8b655a127a0dc807ee5e67 100644
--- a/compute/zhemm.c
+++ b/compute/zhemm.c
@@ -286,10 +286,10 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zher2k.c b/compute/zher2k.c
index 64ef671cc53cef4fae6eae38e2ac5859572a0364..2f41bd1a7f16b83c1579da2cd1ad5454b3607c7d 100644
--- a/compute/zher2k.c
+++ b/compute/zher2k.c
@@ -285,10 +285,10 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zherk.c b/compute/zherk.c
index 4a079f951ce9be58afcfdfa1a2839fade02cb16e..e0a0a1b87d87b2f0c7aa32e5e606848d07e3eb87 100644
--- a/compute/zherk.c
+++ b/compute/zherk.c
@@ -261,9 +261,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zlange.c b/compute/zlange.c
index a83b03d178b19e07380d65202fcc5f3271d47208..a11499a2bcc902770b75fa1c3da9de1e8ce4cc8d 100644
--- a/compute/zlange.c
+++ b/compute/zlange.c
@@ -147,8 +147,8 @@ 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);
-        morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( &descA, sequence );
+        morse_sequence_wait(morse, sequence);
         morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
diff --git a/compute/zlanhe.c b/compute/zlanhe.c
index e4941322c2d2f2f6bb4081e1d0b73c12a1456a72..7130bd6bdc0679129970c10e702383bd92d2f0aa 100644
--- a/compute/zlanhe.c
+++ b/compute/zlanhe.c
@@ -147,8 +147,8 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( &descA, sequence );
+    morse_sequence_wait(morse, sequence);
     morse_desc_mat_free(&descA);
 /*    } else {*/
 /*        morse_ziptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);*/
diff --git a/compute/zlauum.c b/compute/zlauum.c
index 926bfbc0b2c6dee23f507585f48f4a89fab297eb..23ac0ebb28bb22d70bd3b3d0cbc2c533f80dd0f5 100644
--- a/compute/zlauum.c
+++ b/compute/zlauum.c
@@ -201,8 +201,8 @@ int MORSE_zlauum_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlauum_Tile_Async(uplo, A, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zposv.c b/compute/zposv.c
index 96d393df0825bcad55cac5357454de08978c409c..4bcbd9c5959b180f35ba0ebaf77ba81738847e60 100644
--- a/compute/zposv.c
+++ b/compute/zposv.c
@@ -244,9 +244,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotrf.c b/compute/zpotrf.c
index 3cfa25b0455a869819893ced54cf2a7afdb044ca..63c1b7b2c457936053f465c61b7179c3fc19bddb 100644
--- a/compute/zpotrf.c
+++ b/compute/zpotrf.c
@@ -213,8 +213,8 @@ int MORSE_zpotrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrf_Tile_Async(uplo, A, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotri.c b/compute/zpotri.c
index fec3b0f7fa5596c7151480e941df9d8ed9d22310..cf15fe29e38b8c0bd25860933aa8699734a5b665 100644
--- a/compute/zpotri.c
+++ b/compute/zpotri.c
@@ -201,8 +201,8 @@ int MORSE_zpotri_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zpotri_Tile_Async(uplo, A, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotrimm.c b/compute/zpotrimm.c
index f83321f3b132658b877a2078a617f61507b56d94..2d2089164318f0bf3c8a83d0a335c734aa91974a 100644
--- a/compute/zpotrimm.c
+++ b/compute/zpotrimm.c
@@ -219,8 +219,8 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zpotrs.c b/compute/zpotrs.c
index 21cc2a3c60a37130dd5363ccd4982c230e4e2bbf..21cb261cf970d499a66679cc0b125b01f87e7023 100644
--- a/compute/zpotrs.c
+++ b/compute/zpotrs.c
@@ -219,9 +219,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsymm.c b/compute/zsymm.c
index bd66fa6b328b3ae7717e53419ba8a3fbbce01871..51fdca0bd35090de889b85c4a05186e64d6c36fe 100644
--- a/compute/zsymm.c
+++ b/compute/zsymm.c
@@ -286,10 +286,10 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsyr2k.c b/compute/zsyr2k.c
index 4f38cf71a8cec2defd1a8ae883a54a4462fee70b..9ad897f4e2160edb318631889d783b1ddeb96179 100644
--- a/compute/zsyr2k.c
+++ b/compute/zsyr2k.c
@@ -285,10 +285,10 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsyrk.c b/compute/zsyrk.c
index 59da04f0f96c8385d6052ea044ae11a57bac3412..ac57f02928bfdc688a0d3af6013ad64ad83e1ca1 100644
--- a/compute/zsyrk.c
+++ b/compute/zsyrk.c
@@ -261,9 +261,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsysv.c b/compute/zsysv.c
index 1e5dafbdad2296b44c48fadf741a518492406af7..818b7728295f1e0a4c3cf6ddd30b1c7fecaee6a2 100644
--- a/compute/zsysv.c
+++ b/compute/zsysv.c
@@ -237,9 +237,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsytrf.c b/compute/zsytrf.c
index b0457b5f1026a991a149827ec9f32bf3d21cc490..c0cce1f3de7ad96f7d8a510a0c4f8f2fd3ffe7bc 100644
--- a/compute/zsytrf.c
+++ b/compute/zsytrf.c
@@ -202,8 +202,8 @@ int MORSE_zsytrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zsytrf_Tile_Async(uplo, A, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zsytrs.c b/compute/zsytrs.c
index 57666d946b5b413a97c9ca61dd6a8626ac5b460e..7411d24796bf724a2f2d28146459fdd706a1eeb8 100644
--- a/compute/zsytrs.c
+++ b/compute/zsytrs.c
@@ -215,9 +215,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztpgqrt.c b/compute/ztpgqrt.c
index a4e176b705631ffa98aca387490625fdeb3953fa..f5f2b0595b741956595d16d4c76f0f4e9a9e8aa6 100644
--- a/compute/ztpgqrt.c
+++ b/compute/ztpgqrt.c
@@ -296,9 +296,9 @@ int MORSE_ztpgqrt_Tile( int L,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_ztpgqrt_Tile_Async(L, V1, T1, V2, T2, Q1, Q2, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( Q1, sequence );
     RUNTIME_desc_getoncpu_async( Q2, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztpqrt.c b/compute/ztpqrt.c
index 0e1729f13dac04f1765725f9ea2977d6063791c1..b8cf1b3844bc112e42594f8569411fec1ee04ea0 100644
--- a/compute/ztpqrt.c
+++ b/compute/ztpqrt.c
@@ -268,9 +268,9 @@ int MORSE_ztpqrt_Tile( int L, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *T
     }
     morse_sequence_create(morse, &sequence);
     MORSE_ztpqrt_Tile_Async(L, A, B, T, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztradd.c b/compute/ztradd.c
index d9c62b0b22cce82373bdba1f0e86ab1dd3417ded..ab16ed27781534b44be0a35835fac006dcbd0689 100644
--- a/compute/ztradd.c
+++ b/compute/ztradd.c
@@ -265,9 +265,9 @@ int MORSE_ztradd_Tile(MORSE_enum uplo, MORSE_enum trans,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_ztradd_Tile_Async(uplo, trans, alpha, A, beta, B, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrmm.c b/compute/ztrmm.c
index 2590c24eb7b8419c7984c99a47b5b190ec0b86b3..1e7411a545853946907c2edf180da40f5d026d28 100644
--- a/compute/ztrmm.c
+++ b/compute/ztrmm.c
@@ -287,9 +287,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrsm.c b/compute/ztrsm.c
index 6ca114999eda453eeacf8ffd68d3ad704de394bd..282ec5e2e300383b2d202bd499cce0b0b1aa4249 100644
--- a/compute/ztrsm.c
+++ b/compute/ztrsm.c
@@ -285,9 +285,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrsmpl.c b/compute/ztrsmpl.c
index 14246f6ba9cce542db42c1fb08018574884922f6..6bac3866c263ff55b60cf3f48680b4275ea29299 100644
--- a/compute/ztrsmpl.c
+++ b/compute/ztrsmpl.c
@@ -214,9 +214,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( B, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/ztrtri.c b/compute/ztrtri.c
index ddef7c2ff6160161ee2d00f35a9f8a6a7dff2f9b..01ca06dbc26afdb1444fc9a41fe5c6787d462e3c 100644
--- a/compute/ztrtri.c
+++ b/compute/ztrtri.c
@@ -220,8 +220,8 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunglq.c b/compute/zunglq.c
index 69b28301b1d9f236a8c16af93347836890d9b5d1..ff911006ddfa25c629d5c98a51776a2b4ddf76ba 100644
--- a/compute/zunglq.c
+++ b/compute/zunglq.c
@@ -216,9 +216,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( Q, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunglq_param.c b/compute/zunglq_param.c
index 8e292e0dce6f3046386b451efdb236f88caaf171..957ae5b3c5722957c659b2cdc2aa5ee16b02f597 100644
--- a/compute/zunglq_param.c
+++ b/compute/zunglq_param.c
@@ -213,9 +213,9 @@ int MORSE_zunglq_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zunglq_param_Tile_Async(qrtree, A, TS, TT, Q, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( Q, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zungqr.c b/compute/zungqr.c
index ba592be85a7fa82187d546f4513fb68ad5a547f3..9e0b3d1bf01c4b938b14f1d37ab15fbb82d23f62 100644
--- a/compute/zungqr.c
+++ b/compute/zungqr.c
@@ -215,9 +215,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( Q, sequence );
+    morse_sequence_wait(morse, sequence);
     
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zungqr_param.c b/compute/zungqr_param.c
index fcd8c79d16df1463dbdc41f35176384bbd685a20..5a3b7185552a3bf22885320e84ce0faa9cd0adc7 100644
--- a/compute/zungqr_param.c
+++ b/compute/zungqr_param.c
@@ -214,9 +214,9 @@ int MORSE_zungqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zungqr_param_Tile_Async(qrtree, A, TS, TT, Q, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( Q, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmlq.c b/compute/zunmlq.c
index 238d953f0d15f8cd90aedd3566ec93d3f429cb34..ef13e6fca60e3aff09e1f4ca23f7d2574c781fc3 100644
--- a/compute/zunmlq.c
+++ b/compute/zunmlq.c
@@ -269,9 +269,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmlq_param.c b/compute/zunmlq_param.c
index 6fe8c120aa82e02dcabce0b37dd5191107e27ade..6a2fdcfa3426971d3c2adefc0c4768cad51a760d 100644
--- a/compute/zunmlq_param.c
+++ b/compute/zunmlq_param.c
@@ -268,9 +268,9 @@ int MORSE_zunmlq_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zunmlq_param_Tile_Async(qrtree, side, trans, A, TS, TT, C, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmqr.c b/compute/zunmqr.c
index 821e4ce63730632fa0fe881480cdffd50ba71725..ab3d7659d7ad0b4b137dea42f762ea8875c4837a 100644
--- a/compute/zunmqr.c
+++ b/compute/zunmqr.c
@@ -273,9 +273,9 @@ 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);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
diff --git a/compute/zunmqr_param.c b/compute/zunmqr_param.c
index f591e94db673db0c66a56d205ef505c516f06adb..a8cb3ae25f1fa90a5584085b3d9edad735d384ab 100644
--- a/compute/zunmqr_param.c
+++ b/compute/zunmqr_param.c
@@ -274,9 +274,9 @@ int MORSE_zunmqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zunmqr_param_Tile_Async(qrtree, side, trans, A, TS, TT, C, sequence, &request);
-    morse_sequence_wait(morse, sequence);
     RUNTIME_desc_getoncpu_async( A, sequence );
     RUNTIME_desc_getoncpu_async( C, sequence );
+    morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);