diff --git a/runtime/parsec/codelets/codelet_zasum.c b/runtime/parsec/codelets/codelet_zasum.c
index 61343c8155daad053a38c53dda2939076f7b1af0..f0fd0c5b525b878622b0a8d7f0542f2a28a16062 100644
--- a/runtime/parsec/codelets/codelet_zasum.c
+++ b/runtime/parsec/codelets/codelet_zasum.c
@@ -25,8 +25,8 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_dzasum_parsec(dague_execution_unit_t    *context,
-                   dague_execution_context_t *this_task)
+CORE_dzasum_parsec(parsec_execution_stream_t    *context,
+                   parsec_task_t *this_task)
 {
     MORSE_enum *storev;
     MORSE_enum *uplo;
@@ -36,7 +36,7 @@ CORE_dzasum_parsec(dague_execution_unit_t    *context,
     int *lda;
     double *work;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &storev,
         UNPACK_VALUE, &uplo,
@@ -56,10 +56,10 @@ void MORSE_TASK_dzasum(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *B, int Bm, int Bn)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_dzasum_parsec, "zasum",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_dzasum_parsec, options->priority, "zasum",
         sizeof(MORSE_enum),    &storev,                           VALUE,
         sizeof(MORSE_enum),    &uplo,                             VALUE,
         sizeof(int),           &M,                                VALUE,
diff --git a/runtime/parsec/codelets/codelet_zaxpy.c b/runtime/parsec/codelets/codelet_zaxpy.c
index d43182e96655bdde8a697cfdd4a8be68d49fb67f..03b15b5ca14ece4ec8f48ccab33dc6dff37ac2db 100644
--- a/runtime/parsec/codelets/codelet_zaxpy.c
+++ b/runtime/parsec/codelets/codelet_zaxpy.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zaxpy_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zaxpy_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *M;
     MORSE_Complex64_t *alpha;
@@ -34,7 +34,7 @@ CORE_zaxpy_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     MORSE_Complex64_t *B;
     int *incB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &M,
         UNPACK_VALUE, &alpha,
@@ -53,10 +53,10 @@ void MORSE_TASK_zaxpy(const MORSE_option_t *options,
                       const MORSE_desc_t *A, int Am, int An, int incA,
                       const MORSE_desc_t *B, int Bm, int Bn, int incB)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zaxpy_parsec, "axpy",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zaxpy_parsec, options->priority,  "axpy",
         sizeof(int),               &M,     VALUE,
         sizeof(MORSE_Complex64_t), &alpha, VALUE,
         PASSED_BY_REF,  RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zbuild.c b/runtime/parsec/codelets/codelet_zbuild.c
index f3bcd647225315843bcc46a5e5ff3567dc162aee..4c73985663ef3e5831d0c6e867a1d480a5276853 100644
--- a/runtime/parsec/codelets/codelet_zbuild.c
+++ b/runtime/parsec/codelets/codelet_zbuild.c
@@ -27,8 +27,8 @@
 #include "coreblas/coreblas_z.h"
 
 static inline int
-CORE_zbuild_parsec(dague_execution_unit_t    *context,
-                   dague_execution_context_t *this_task)
+CORE_zbuild_parsec(parsec_execution_stream_t    *context,
+                   parsec_task_t *this_task)
 {
     MORSE_Complex64_t *A;
     int lda;
@@ -36,7 +36,7 @@ CORE_zbuild_parsec(dague_execution_unit_t    *context,
     void (*user_build_callback)(int row_min, int row_max, int col_min, int col_max, void *buffer, int ld, void *user_data) ;
     int row_min, row_max, col_min, col_max;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &row_min,
         UNPACK_VALUE, &row_max,
@@ -56,15 +56,15 @@ void MORSE_TASK_zbuild( const MORSE_option_t *options,
                         const MORSE_desc_t *A, int Am, int An, int lda,
                         void *user_data, void* user_build_callback )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
     int row_min, row_max, col_min, col_max;
     row_min = Am*A->mb ;
     row_max = Am == A->mt-1 ? A->m-1 : row_min+A->mb-1 ;
     col_min = An*A->nb ;
     col_max = An == A->nt-1 ? A->n-1 : col_min+A->nb-1 ;
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zbuild_parsec, "zbuild",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zbuild_parsec, options->priority, "zbuild",
         sizeof(int),   &row_min,                          VALUE,
         sizeof(int),   &row_max,                          VALUE,
         sizeof(int),   &col_min,                          VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgeadd.c b/runtime/parsec/codelets/codelet_zgeadd.c
index a7122d5b18642023c79c53a085888c8a9aa31bc0..88d78068a9d855b56ad584d5fbff7fde5487f629 100644
--- a/runtime/parsec/codelets/codelet_zgeadd.c
+++ b/runtime/parsec/codelets/codelet_zgeadd.c
@@ -30,7 +30,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zgeadd_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgeadd_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *trans;
     int *M;
@@ -42,7 +42,7 @@ CORE_zgeadd_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *B;
     int *LDB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &trans,
         UNPACK_VALUE, &M,
@@ -118,10 +118,10 @@ void MORSE_TASK_zgeadd(const MORSE_option_t *options,
                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
                        MORSE_Complex64_t beta,  const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgeadd_parsec, "geadd",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgeadd_parsec, options->priority, "geadd",
         sizeof(MORSE_enum),        &trans, VALUE,
         sizeof(int),               &m,     VALUE,
         sizeof(int),               &n,     VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgelqt.c b/runtime/parsec/codelets/codelet_zgelqt.c
index 7185c34ac04af8e4e6be3648d7b8bbdf31825418..b21bbd2badfe411f44040b39af18339c0aa1514a 100644
--- a/runtime/parsec/codelets/codelet_zgelqt.c
+++ b/runtime/parsec/codelets/codelet_zgelqt.c
@@ -86,7 +86,7 @@
  *
  ******************************************************************************/
 static int
-CORE_zgelqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgelqt_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -98,7 +98,7 @@ CORE_zgelqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -120,10 +120,10 @@ void MORSE_TASK_zgelqt(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgelqt_parsec, "gelqt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgelqt_parsec, options->priority, "gelqt",
         sizeof(int),                        &m,     VALUE,
         sizeof(int),                        &n,     VALUE,
         sizeof(int),                        &ib,    VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgemm.c b/runtime/parsec/codelets/codelet_zgemm.c
index 3adbc0a34de1edc9fecc49e5b236b5077cd76326..13ede15fa1e2082b49bb2b4ca8cde2a67309c2c6 100644
--- a/runtime/parsec/codelets/codelet_zgemm.c
+++ b/runtime/parsec/codelets/codelet_zgemm.c
@@ -30,8 +30,8 @@
  *
  **/
 static int
-CORE_zgemm_parsec(dague_execution_unit_t    *context,
-                  dague_execution_context_t *this_task)
+CORE_zgemm_parsec(parsec_execution_stream_t    *context,
+                  parsec_task_t *this_task)
 {
     MORSE_enum *transA;
     MORSE_enum *transB;
@@ -47,7 +47,7 @@ CORE_zgemm_parsec(dague_execution_unit_t    *context,
     MORSE_Complex64_t *C;
     int *ldc;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &transA,
         UNPACK_VALUE, &transB,
@@ -78,22 +78,22 @@ void MORSE_TASK_zgemm(const MORSE_option_t *options,
                                                 const MORSE_desc_t *B, int Bm, int Bn, int ldb,
                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgemm_parsec, "Gemm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgemm_parsec, options->priority, "Gemm",
         sizeof(MORSE_enum),    &transA,                           VALUE,
         sizeof(MORSE_enum),    &transB,                           VALUE,
         sizeof(int),           &m,                                VALUE,
         sizeof(int),           &n,                                VALUE,
         sizeof(int),           &k,                                VALUE,
         sizeof(MORSE_Complex64_t),           &alpha,              VALUE,
-        PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | morse_parsec_get_arena_index(A),
         sizeof(int),           &lda,                              VALUE,
-        PASSED_BY_REF,     RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,     RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | morse_parsec_get_arena_index(B),
         sizeof(int),           &ldb,                              VALUE,
         sizeof(MORSE_Complex64_t),           &beta,               VALUE,
-        PASSED_BY_REF,     RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,     RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | morse_parsec_get_arena_index(C) | AFFINITY,
         sizeof(int),           &ldc,                              VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zgeqrt.c b/runtime/parsec/codelets/codelet_zgeqrt.c
index 0edbf9f04f15067d1cf13b17f123622db955ebd8..93c9bd85d6ea9c1c5873983119611a7df3bc677b 100644
--- a/runtime/parsec/codelets/codelet_zgeqrt.c
+++ b/runtime/parsec/codelets/codelet_zgeqrt.c
@@ -87,7 +87,7 @@
  *
  ******************************************************************************/
 static int
-CORE_zgeqrt_parsec (dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgeqrt_parsec (parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -99,7 +99,7 @@ CORE_zgeqrt_parsec (dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -121,10 +121,10 @@ void MORSE_TASK_zgeqrt(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgeqrt_parsec, "geqrt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgeqrt_parsec, options->priority, "geqrt",
         sizeof(int),           &m,                             VALUE,
         sizeof(int),           &n,                             VALUE,
         sizeof(int),           &ib,                            VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgessm.c b/runtime/parsec/codelets/codelet_zgessm.c
index 27ffdab2670133e10faefb9bfeb79ace8118fa7b..f21ab9dbbfccffdd49906a70e79b46bdbc88cdc2 100644
--- a/runtime/parsec/codelets/codelet_zgessm.c
+++ b/runtime/parsec/codelets/codelet_zgessm.c
@@ -70,7 +70,7 @@
  *
  ******************************************************************************/
 static int
-CORE_zgessm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgessm_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -84,7 +84,7 @@ CORE_zgessm_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *A;
     int *lda;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -110,10 +110,10 @@ void MORSE_TASK_zgessm(const MORSE_option_t *options,
                        const MORSE_desc_t *D, int Dm, int Dn, int ldd,
                        const MORSE_desc_t *A, int Am, int An, int lda)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgessm_parsec, "gessm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgessm_parsec, options->priority, "gessm",
         sizeof(int),           &m,                                VALUE,
         sizeof(int),           &n,                                VALUE,
         sizeof(int),           &k,                                VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgessq.c b/runtime/parsec/codelets/codelet_zgessq.c
index 17ad5b091de0dbe27e057ff83c98831e30b1cbaa..b19ff431d697c63a20f3cd8898156d55f478e6d5 100644
--- a/runtime/parsec/codelets/codelet_zgessq.c
+++ b/runtime/parsec/codelets/codelet_zgessq.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zgessq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgessq_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -33,7 +33,7 @@ CORE_zgessq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *lda;
     double *SCALESUMSQ;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -51,10 +51,10 @@ void MORSE_TASK_zgessq( const MORSE_option_t *options,
                         const MORSE_desc_t *A, int Am, int An, int lda,
                         const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgessq_parsec, "gessq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgessq_parsec, options->priority, "gessq",
         sizeof(int),    &m,            VALUE,
         sizeof(int),    &n,            VALUE,
         PASSED_BY_REF,   RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                            INPUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zgetrf.c b/runtime/parsec/codelets/codelet_zgetrf.c
index cbcc82c1e1fe66d4e372ae05ae4e1497363f24af..03cf388a53fdba0f43b5e0342c4fee250a10f8b7 100644
--- a/runtime/parsec/codelets/codelet_zgetrf.c
+++ b/runtime/parsec/codelets/codelet_zgetrf.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zgetrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgetrf_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -36,7 +36,7 @@ CORE_zgetrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *iinfo;
     int info;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -57,10 +57,10 @@ void MORSE_TASK_zgetrf(const MORSE_option_t *options,
                        int *IPIV,
                        MORSE_bool check_info, int iinfo)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgetrf_parsec, "getrf",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgetrf_parsec, options->priority, "getrf",
         sizeof(int),        &m,                          VALUE,
         sizeof(int),        &n,                          VALUE,
         PASSED_BY_REF,       RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zgetrf_incpiv.c b/runtime/parsec/codelets/codelet_zgetrf_incpiv.c
index 0782304da984bfb78baf0ea83ac94beba550f7b3..84bed781a6370dea5f14b5f9eb96a182a94075a9 100644
--- a/runtime/parsec/codelets/codelet_zgetrf_incpiv.c
+++ b/runtime/parsec/codelets/codelet_zgetrf_incpiv.c
@@ -79,7 +79,7 @@
  *
  ******************************************************************************/
 static int
-CORE_zgetrf_incpiv_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgetrf_incpiv_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -92,7 +92,7 @@ CORE_zgetrf_incpiv_parsec(dague_execution_unit_t *context, dague_execution_conte
 
     int info;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -115,10 +115,10 @@ void MORSE_TASK_zgetrf_incpiv(const MORSE_option_t *options,
                               int *IPIV,
                               MORSE_bool check_info, int iinfo)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgetrf_incpiv_parsec, "getrf_inc",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgetrf_incpiv_parsec, options->priority, "getrf_inc",
         sizeof(int),           &m,                                VALUE,
         sizeof(int),           &n,                                VALUE,
         sizeof(int),           &ib,                               VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgetrf_nopiv.c b/runtime/parsec/codelets/codelet_zgetrf_nopiv.c
index e16a90c3d1d682d95e45d5c2500fddfb9e39002e..1152b26c08a542bc36d1d759c935fbe47e2d9eeb 100644
--- a/runtime/parsec/codelets/codelet_zgetrf_nopiv.c
+++ b/runtime/parsec/codelets/codelet_zgetrf_nopiv.c
@@ -72,7 +72,7 @@
  *
  ******************************************************************************/
 static int
-CORE_zgetrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgetrf_nopiv_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -82,7 +82,7 @@ CORE_zgetrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_contex
     int *iinfo;
     int info;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -101,10 +101,10 @@ void MORSE_TASK_zgetrf_nopiv(const MORSE_option_t *options,
                              const MORSE_desc_t *A, int Am, int An, int lda,
                              int iinfo)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zgetrf_nopiv_parsec, "getrf_nopiv",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zgetrf_nopiv_parsec, options->priority,  "getrf_nopiv",
         sizeof(int),           &m,                          VALUE,
         sizeof(int),           &n,                          VALUE,
         sizeof(int),           &ib,                         VALUE,
diff --git a/runtime/parsec/codelets/codelet_zhe2ge.c b/runtime/parsec/codelets/codelet_zhe2ge.c
index 3dae0955a3bad83ce623fa0189c1e4e3a1b0f4ea..04488862b8e774a5056937987da8dbe802ce72d7 100644
--- a/runtime/parsec/codelets/codelet_zhe2ge.c
+++ b/runtime/parsec/codelets/codelet_zhe2ge.c
@@ -30,8 +30,8 @@
  *
  **/
 static inline int
-CORE_zhe2ge_parsec(dague_execution_unit_t    *context,
-                   dague_execution_context_t *this_task)
+CORE_zhe2ge_parsec(parsec_execution_stream_t    *context,
+                   parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *M;
@@ -41,7 +41,7 @@ CORE_zhe2ge_parsec(dague_execution_unit_t    *context,
     MORSE_Complex64_t *B;
     int *LDB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &M,
@@ -61,10 +61,10 @@ void MORSE_TASK_zhe2ge(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zhe2ge_parsec, "he2ge",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zhe2ge_parsec, options->priority, "he2ge",
         sizeof(MORSE_enum), &uplo,   VALUE,
         sizeof(int),        &m,      VALUE,
         sizeof(int),        &n,      VALUE,
diff --git a/runtime/parsec/codelets/codelet_zhemm.c b/runtime/parsec/codelets/codelet_zhemm.c
index 6f0dfa920402c7a4ede74426f45ee9542ace30e9..4402c15b259bb24d1838494a40a31ad92f99fded 100644
--- a/runtime/parsec/codelets/codelet_zhemm.c
+++ b/runtime/parsec/codelets/codelet_zhemm.c
@@ -30,7 +30,7 @@
  *
  **/
 static int
-CORE_zhemm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zhemm_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *uplo;
@@ -45,7 +45,7 @@ CORE_zhemm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     MORSE_Complex64_t *C;
     int *LDC;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &side,
         UNPACK_VALUE, &uplo,
@@ -75,10 +75,10 @@ void MORSE_TASK_zhemm(const MORSE_option_t *options,
                       const MORSE_desc_t *B, int Bm, int Bn, int ldb,
                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zhemm_parsec, "hemm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zhemm_parsec, options->priority, "hemm",
         sizeof(MORSE_enum),                &side,    VALUE,
         sizeof(MORSE_enum),                &uplo,    VALUE,
         sizeof(int),                       &m,       VALUE,
diff --git a/runtime/parsec/codelets/codelet_zher2k.c b/runtime/parsec/codelets/codelet_zher2k.c
index ef88ccd1f351d985f46b9d021e00c1160fe28a01..78064708c69f59eb167355804b4c2a30e16e7501 100644
--- a/runtime/parsec/codelets/codelet_zher2k.c
+++ b/runtime/parsec/codelets/codelet_zher2k.c
@@ -30,7 +30,7 @@
  *
  **/
 static int
-CORE_zher2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zher2k_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
@@ -45,7 +45,7 @@ CORE_zher2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *C;
     int *ldc;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &trans,
@@ -75,21 +75,21 @@ void MORSE_TASK_zher2k(const MORSE_option_t *options,
                        const MORSE_desc_t *B, int Bm, int Bn, int ldb,
                        double beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zher2k_parsec, "her2k",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zher2k_parsec, options->priority, "her2k",
         sizeof(MORSE_enum),                 &uplo,     VALUE,
         sizeof(MORSE_enum),                 &trans,    VALUE,
         sizeof(int),                        &n,        VALUE,
         sizeof(int),                        &k,        VALUE,
         sizeof(MORSE_Complex64_t),          &alpha,    VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | morse_parsec_get_arena_index(A),
         sizeof(int),                        &lda,      VALUE,
-        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | morse_parsec_get_arena_index(B),
         sizeof(int),                        &ldb,      VALUE,
         sizeof(double),                     &beta,     VALUE,
-        PASSED_BY_REF,         RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | morse_parsec_get_arena_index(C) | AFFINITY,
         sizeof(int),                        &ldc,      VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zherfb.c b/runtime/parsec/codelets/codelet_zherfb.c
index af42a6fd7571175d352311beedc862ba175eddc6..c96cabf0839498c4310ff983d668c42976e70b9d 100644
--- a/runtime/parsec/codelets/codelet_zherfb.c
+++ b/runtime/parsec/codelets/codelet_zherfb.c
@@ -27,8 +27,8 @@
 #include "coreblas/coreblas_z.h"
 
 static inline int
-CORE_zherfb_parsec(dague_execution_unit_t    *context,
-                   dague_execution_context_t *this_task)
+CORE_zherfb_parsec(parsec_execution_stream_t    *context,
+                   parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *n;
@@ -44,7 +44,7 @@ CORE_zherfb_parsec(dague_execution_unit_t    *context,
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &uplo,
         UNPACK_VALUE,   &n,
@@ -72,20 +72,20 @@ void MORSE_TASK_zherfb(const MORSE_option_t *options,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt,
                        const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zherfb_parsec, "herfb",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zherfb_parsec, options->priority, "herfb",
         sizeof(MORSE_enum), &uplo, VALUE,
         sizeof(int),        &n,    VALUE,
         sizeof(int),        &k,    VALUE,
         sizeof(int),        &ib,   VALUE,
         sizeof(int),        &nb,   VALUE,
-        PASSED_BY_REF,       RTBLKADDR(A, MORSE_Complex64_t, Am, An), (uplo == MorseUpper) ? INOUT | REGION_U : INOUT | REGION_L,
+        PASSED_BY_REF,       RTBLKADDR(A, MORSE_Complex64_t, Am, An), (uplo == MorseUpper) ? INOUT | REGION_FULL : INOUT | REGION_FULL,
         sizeof(int),        &lda,  VALUE,
         PASSED_BY_REF,       RTBLKADDR(T, MORSE_Complex64_t, Tm, Tn), INPUT | REGION_FULL,
         sizeof(int),        &ldt,  VALUE,
-        PASSED_BY_REF,       RTBLKADDR(C, MORSE_Complex64_t, Cm, Cn), (uplo == MorseUpper) ? INOUT | REGION_D | REGION_U : INOUT | REGION_D | REGION_L,
+        PASSED_BY_REF,       RTBLKADDR(C, MORSE_Complex64_t, Cm, Cn), (uplo == MorseUpper) ? INOUT | REGION_FULL : INOUT | REGION_FULL,
         sizeof(int),        &ldc,  VALUE,
         sizeof(MORSE_Complex64_t)*2*nb*nb,  NULL, SCRATCH,
         sizeof(int),        &nb,   VALUE,
diff --git a/runtime/parsec/codelets/codelet_zherk.c b/runtime/parsec/codelets/codelet_zherk.c
index 6acc7808bd9f53aef6ea04d52cb158e1e0d7aa90..738572657934db66442e86c9f6f7ff0cd86426ab 100644
--- a/runtime/parsec/codelets/codelet_zherk.c
+++ b/runtime/parsec/codelets/codelet_zherk.c
@@ -31,7 +31,7 @@
  **/
 
 static int
-CORE_zherk_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zherk_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
@@ -44,7 +44,7 @@ CORE_zherk_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
     MORSE_Complex64_t *C;
     int *ldc;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &trans,
@@ -70,19 +70,19 @@ void MORSE_TASK_zherk(const MORSE_option_t *options,
                       double alpha, const MORSE_desc_t *A, int Am, int An, int lda,
                       double beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zherk_parsec, "herk",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zherk_parsec, options->priority, "herk",
         sizeof(MORSE_enum),    &uplo,                             VALUE,
         sizeof(MORSE_enum),    &trans,                            VALUE,
         sizeof(int),           &n,                                VALUE,
         sizeof(int),           &k,                                VALUE,
         sizeof(double),        &alpha,                            VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | morse_parsec_get_arena_index(A),
         sizeof(int),           &lda,                              VALUE,
         sizeof(double),        &beta,                             VALUE,
-        PASSED_BY_REF,         RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | morse_parsec_get_arena_index(C) | AFFINITY,
         sizeof(int),           &ldc,                              VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zhessq.c b/runtime/parsec/codelets/codelet_zhessq.c
index 31626fac46a922d1b17945890f6dece57d73f460..033c79b6bcf78c15095c3ba61bfe65f45e7a3c89 100644
--- a/runtime/parsec/codelets/codelet_zhessq.c
+++ b/runtime/parsec/codelets/codelet_zhessq.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zhessq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zhessq_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *n;
@@ -33,7 +33,7 @@ CORE_zhessq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *lda;
     double *SCALESUMSQ;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &n,
@@ -51,10 +51,10 @@ void MORSE_TASK_zhessq( const MORSE_option_t *options,
                         const MORSE_desc_t *A, int Am, int An, int lda,
                         const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zhessq_parsec, "hessq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zhessq_parsec, options->priority, "hessq",
         sizeof(int),           &uplo,               VALUE,
         sizeof(int),           &n,                  VALUE,
         PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                    INPUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zlacpy.c b/runtime/parsec/codelets/codelet_zlacpy.c
index 3622c6ce7e5fb6fa9409f57755adfc994de3234d..43875e1d5204260ea6b2797ab4ea4f69def40d0d 100644
--- a/runtime/parsec/codelets/codelet_zlacpy.c
+++ b/runtime/parsec/codelets/codelet_zlacpy.c
@@ -30,7 +30,7 @@
  *
  **/
 static int
-CORE_zlacpy_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zlacpy_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *uplo;
     int *M;
@@ -40,7 +40,7 @@ CORE_zlacpy_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_Complex64_t *B;
     int *LDB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &M,
@@ -61,10 +61,10 @@ void MORSE_TASK_zlacpy(const MORSE_option_t *options,
                        const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
 
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlacpy_parsec, "lacpy",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlacpy_parsec, options->priority, "lacpy",
         sizeof(MORSE_enum),    &uplo,                      VALUE,
         sizeof(int),           &m,                         VALUE,
         sizeof(int),           &n,                         VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlag2c.c b/runtime/parsec/codelets/codelet_zlag2c.c
index c5d5f8337d5a8babb41cbe9508c3a08253737945..8153700f5c204c296adae076edce6b81c7511cff 100644
--- a/runtime/parsec/codelets/codelet_zlag2c.c
+++ b/runtime/parsec/codelets/codelet_zlag2c.c
@@ -30,7 +30,7 @@
  *
  **/
 static int
-CORE_zlag2c_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zlag2c_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -40,7 +40,7 @@ CORE_zlag2c_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *ldb;
     int info;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -59,9 +59,9 @@ void MORSE_TASK_zlag2c(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(DAGUE_dtd_handle, CORE_zlag2c_parsec, "lag2c",
+    parsec_dtd_taskpool_insert_task(PARSEC_dtd_taskpool, CORE_zlag2c_parsec, "lag2c",
         sizeof(int),                        &m,         VALUE,
         sizeof(int),                        &n,         VALUE,
         PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
@@ -77,7 +77,7 @@ void MORSE_TASK_zlag2c(const MORSE_option_t *options,
  *
  **/
 static int
-CORE_clag2z_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_clag2z_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -86,7 +86,7 @@ CORE_clag2z_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *B;
     int *ldb;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -105,10 +105,10 @@ void MORSE_TASK_clag2z(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_clag2z_parsec, "lag2z",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_clag2z_parsec, options->priority, "lag2z",
         sizeof(int),                        &m,         VALUE,
         sizeof(int),                        &n,         VALUE,
         PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex32_t, Am, An ),     INPUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zlange.c b/runtime/parsec/codelets/codelet_zlange.c
index 9b7c64d035f462bcc576304b1e62b8e633d83399..cd3cc78ed698bf9cb344f5da04b076be570e44ad 100644
--- a/runtime/parsec/codelets/codelet_zlange.c
+++ b/runtime/parsec/codelets/codelet_zlange.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zlange_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zlange_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *norm;
     int *M;
@@ -35,7 +35,7 @@ CORE_zlange_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     double *work;
     double *normA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &norm,
         UNPACK_VALUE,   &M,
@@ -55,12 +55,12 @@ void MORSE_TASK_zlange(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int LDA,
                        const MORSE_desc_t *B, int Bm, int Bn)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
     int szeW = chameleon_max( M, N );
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlange_parsec, "lange",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlange_parsec, options->priority, "lange",
         sizeof(MORSE_enum),            &norm,          VALUE,
         sizeof(int),                   &M,             VALUE,
         sizeof(int),                   &N,             VALUE,
@@ -73,12 +73,12 @@ void MORSE_TASK_zlange(const MORSE_option_t *options,
 
 #if defined(PRECISION_d) || defined(PRECISION_s)
 static int
-CORE_zlange_max_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zlange_max_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     double *A;
     double *normA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_DATA,  &A,
         UNPACK_DATA,  &normA );
@@ -93,10 +93,10 @@ void MORSE_TASK_zlange_max(const MORSE_option_t *options,
                            const MORSE_desc_t *A, int Am, int An,
                            const MORSE_desc_t *B, int Bm, int Bn)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlange_max_parsec, "lange_max",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlange_max_parsec, options->priority, "lange_max",
         PASSED_BY_REF,         RTBLKADDR( A, double, Am, An ), INPUT | REGION_FULL,
         PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ), OUTPUT | REGION_FULL,
         0);
diff --git a/runtime/parsec/codelets/codelet_zlanhe.c b/runtime/parsec/codelets/codelet_zlanhe.c
index ddd30b0e5ddc3614f4e2b54f1629db10754cb454..4aa0fff0a4ba4857be4ec796962ca49389a45055 100644
--- a/runtime/parsec/codelets/codelet_zlanhe.c
+++ b/runtime/parsec/codelets/codelet_zlanhe.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zlanhe_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zlanhe_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *norm;
     MORSE_enum *uplo;
@@ -35,7 +35,7 @@ CORE_zlanhe_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     double *work;
     double *normA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &norm,
         UNPACK_VALUE,   &uplo,
@@ -55,12 +55,12 @@ void MORSE_TASK_zlanhe(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int LDA,
                        const MORSE_desc_t *B, int Bm, int Bn)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
     int szeW = chameleon_max( 1, N );
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlanhe_parsec, "LANHE",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlanhe_parsec, options->priority, "LANHE",
         sizeof(MORSE_enum),            &norm,          VALUE,
         sizeof(MORSE_enum),            &uplo,          VALUE,
         sizeof(int),                   &N,             VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlansy.c b/runtime/parsec/codelets/codelet_zlansy.c
index 44a685cb1bed310a1f92e20bf6165fb1a2944990..07dd0484fe0acb6a1135992d8fc30e1461190986 100644
--- a/runtime/parsec/codelets/codelet_zlansy.c
+++ b/runtime/parsec/codelets/codelet_zlansy.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zlansy_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zlansy_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *norm;
     MORSE_enum *uplo;
@@ -35,7 +35,7 @@ CORE_zlansy_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     double *work;
     double *normA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &norm,
         UNPACK_VALUE, &uplo,
@@ -55,12 +55,12 @@ void MORSE_TASK_zlansy(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int LDA,
                        const MORSE_desc_t *B, int Bm, int Bn)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
     int szeW = chameleon_max( 1, N );
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlansy_parsec, "lansy",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlansy_parsec, options->priority, "lansy",
         sizeof(MORSE_enum),            &norm,          VALUE,
         sizeof(MORSE_enum),            &uplo,          VALUE,
         sizeof(int),                   &N,             VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlantr.c b/runtime/parsec/codelets/codelet_zlantr.c
index fbff2acfd990089c420b7a015ff15b692aabd20e..08859c4850a901a5e98dd4b8bf0dfacfda01f561 100644
--- a/runtime/parsec/codelets/codelet_zlantr.c
+++ b/runtime/parsec/codelets/codelet_zlantr.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zlantr_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zlantr_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *norm, *uplo, *diag;
     int *M;
@@ -35,7 +35,7 @@ CORE_zlantr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     double *work;
     double *normA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &norm,
         UNPACK_VALUE, &uplo,
@@ -58,12 +58,12 @@ void MORSE_TASK_zlantr(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int LDA,
                        const MORSE_desc_t *B, int Bm, int Bn)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
     int szeW = chameleon_max( 1, N );
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlantr_parsec, "lantr",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlantr_parsec, options->priority, "lantr",
         sizeof(MORSE_enum),            &norm,          VALUE,
         sizeof(MORSE_enum),            &uplo,          VALUE,
         sizeof(MORSE_enum),            &diag,          VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlascal.c b/runtime/parsec/codelets/codelet_zlascal.c
index f82b08c7e757104709c252d8e036db85c6205803..3153036c4edde44b3509969b12edf4f826bf7128 100644
--- a/runtime/parsec/codelets/codelet_zlascal.c
+++ b/runtime/parsec/codelets/codelet_zlascal.c
@@ -39,8 +39,8 @@
  *
  **/
 static inline int
-CORE_zlascal_parsec(dague_execution_unit_t    *context,
-                    dague_execution_context_t *this_task)
+CORE_zlascal_parsec(parsec_execution_stream_t    *context,
+                    parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *M;
@@ -49,7 +49,7 @@ CORE_zlascal_parsec(dague_execution_unit_t    *context,
     MORSE_Complex64_t *A;
     int *LDA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &M,
@@ -67,10 +67,10 @@ void MORSE_TASK_zlascal(const MORSE_option_t *options,
                         MORSE_Complex64_t alpha,
                         const MORSE_desc_t *A, int Am, int An, int lda)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlascal_parsec, "lascal",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlascal_parsec, options->priority, "lascal",
         sizeof(MORSE_enum),        &uplo,  VALUE,
         sizeof(int),               &m,     VALUE,
         sizeof(int),               &n,     VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlaset.c b/runtime/parsec/codelets/codelet_zlaset.c
index c6d182fd627a092dbfcad13d1d54a451188d8264..eee861481c74419c1996341fa5d64cb53ebff0af 100644
--- a/runtime/parsec/codelets/codelet_zlaset.c
+++ b/runtime/parsec/codelets/codelet_zlaset.c
@@ -60,7 +60,7 @@
  *
  **/
 static int
-CORE_zlaset_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zlaset_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *uplo;
     int *M;
@@ -70,7 +70,7 @@ CORE_zlaset_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_Complex64_t *A;
     int *LDA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &M,
@@ -90,10 +90,10 @@ void MORSE_TASK_zlaset(const MORSE_option_t *options,
                        MORSE_Complex64_t alpha, MORSE_Complex64_t beta,
                        const MORSE_desc_t *A, int Am, int An, int LDA)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlaset_parsec, "laset",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlaset_parsec, options->priority, "laset",
         sizeof(MORSE_enum),              &uplo,        VALUE,
         sizeof(int),                     &M,           VALUE,
         sizeof(int),                     &N,           VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlaset2.c b/runtime/parsec/codelets/codelet_zlaset2.c
index 5c1a7bc4b4b7a59efad913d08268414e1f92dce1..667d9f0c83b96ff4333966ccab6233d87726bee1 100644
--- a/runtime/parsec/codelets/codelet_zlaset2.c
+++ b/runtime/parsec/codelets/codelet_zlaset2.c
@@ -58,7 +58,7 @@
  *
  **/
 static int
-CORE_zlaset2_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zlaset2_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *M;
@@ -67,7 +67,7 @@ CORE_zlaset2_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_Complex64_t *A;
     int *LDA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &M,
@@ -85,10 +85,10 @@ void MORSE_TASK_zlaset2(const MORSE_option_t *options,
                        MORSE_enum uplo, int M, int N,
                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int LDA)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlaset2_parsec, "laset2",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlaset2_parsec, options->priority, "laset2",
         sizeof(MORSE_enum),                &uplo,      VALUE,
         sizeof(int),                       &M,         VALUE,
         sizeof(int),                       &N,         VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlatro.c b/runtime/parsec/codelets/codelet_zlatro.c
index 40955c79670181d8e365a6f07255bfb80a605904..7f18835a48c144b9e9c2b007dcb095c2779bc685 100644
--- a/runtime/parsec/codelets/codelet_zlatro.c
+++ b/runtime/parsec/codelets/codelet_zlatro.c
@@ -26,8 +26,8 @@
 #include "coreblas/coreblas_z.h"
 
 static inline int
-CORE_zlatro_parsec(dague_execution_unit_t    *context,
-                   dague_execution_context_t *this_task)
+CORE_zlatro_parsec(parsec_execution_stream_t    *context,
+                   parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
@@ -38,7 +38,7 @@ CORE_zlatro_parsec(dague_execution_unit_t    *context,
     MORSE_Complex64_t *B;
     int *LDB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &trans,
@@ -62,10 +62,10 @@ void MORSE_TASK_zlatro(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlatro_parsec, "latro",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlatro_parsec, options->priority, "latro",
         sizeof(MORSE_enum), &uplo,  VALUE,
         sizeof(MORSE_enum), &trans, VALUE,
         sizeof(int),        &m,     VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlauum.c b/runtime/parsec/codelets/codelet_zlauum.c
index 286d01d0af287e5aa1ef5e3f2d0f2825c50525f7..94a5fbcf65d2b8519ca76898b1bfd44f8b3bbca1 100644
--- a/runtime/parsec/codelets/codelet_zlauum.c
+++ b/runtime/parsec/codelets/codelet_zlauum.c
@@ -30,14 +30,14 @@
  *
  **/
 static int
-CORE_zlauum_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zlauum_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *uplo;
     int *N;
     MORSE_Complex64_t *A;
     int *LDA;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &N,
@@ -53,10 +53,10 @@ void MORSE_TASK_zlauum(const MORSE_option_t *options,
                        MORSE_enum uplo, int n, int nb,
                        const MORSE_desc_t *A, int Am, int An, int lda)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zlauum_parsec, "lauum",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zlauum_parsec, options->priority, "lauum",
         sizeof(MORSE_enum),    &uplo,                  VALUE,
         sizeof(int),           &n,                     VALUE,
         PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zpamm.c b/runtime/parsec/codelets/codelet_zpamm.c
index b5f4cda49606035c703b443557e73c4537a55563..ca6920d3a167588a91f7537bf3d0e27c5b65bf54 100644
--- a/runtime/parsec/codelets/codelet_zpamm.c
+++ b/runtime/parsec/codelets/codelet_zpamm.c
@@ -169,7 +169,7 @@
 /***************************************************************************/
 
 static int
-CORE_zpamm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zpamm_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *op;
     MORSE_enum *side;
@@ -187,7 +187,7 @@ CORE_zpamm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     MORSE_Complex64_t *W;
     int *LDW;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &op,
         UNPACK_VALUE, &side,
@@ -219,10 +219,10 @@ MORSE_TASK_zpamm(const MORSE_option_t *options,
                  const MORSE_desc_t *V, int Vm, int Vn, int ldv,
                        const MORSE_desc_t *W, int Wm, int Wn, int ldw)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zpamm_parsec, "pamm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zpamm_parsec, options->priority, "pamm",
         sizeof(int),                        &op,                VALUE,
         sizeof(MORSE_enum),                 &side,              VALUE,
         sizeof(MORSE_enum),                 &storev,            VALUE,
diff --git a/runtime/parsec/codelets/codelet_zplghe.c b/runtime/parsec/codelets/codelet_zplghe.c
index b14fdd87da7aa5acd01509f48ee63aaabdf78b6b..13dfda18c0b4d26829157c035bd781c44ab5686b 100644
--- a/runtime/parsec/codelets/codelet_zplghe.c
+++ b/runtime/parsec/codelets/codelet_zplghe.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zplghe_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zplghe_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     double *bump;
     int *m;
@@ -37,7 +37,7 @@ CORE_zplghe_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *n0;
     unsigned long long int *seed;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &bump,
         UNPACK_VALUE, &m,
@@ -58,14 +58,14 @@ void MORSE_TASK_zplghe( const MORSE_option_t *options,
                         double bump, int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
                         int bigM, int m0, int n0, unsigned long long int seed )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zplghe_parsec, "zplghe",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zplghe_parsec, options->priority, "zplghe",
         sizeof(double),    &bump,                          VALUE,
         sizeof(int),       &m,                             VALUE,
         sizeof(int),       &n,                             VALUE,
-        PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     OUTPUT | morse_parsec_get_arena_index(A) | AFFINITY,
         sizeof(int),       &lda,                           VALUE,
         sizeof(int),       &bigM,                          VALUE,
         sizeof(int),       &m0,                            VALUE,
diff --git a/runtime/parsec/codelets/codelet_zplgsy.c b/runtime/parsec/codelets/codelet_zplgsy.c
index fecf2c4641abea4f71ed30bc50c715dfd1a6a34d..afd91170bd0bb264b3c2205bae12e1ca78933d3d 100644
--- a/runtime/parsec/codelets/codelet_zplgsy.c
+++ b/runtime/parsec/codelets/codelet_zplgsy.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zplgsy_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zplgsy_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_Complex64_t *bump;
     int *m;
@@ -37,7 +37,7 @@ CORE_zplgsy_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *n0;
     unsigned long long int *seed;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &bump,
         UNPACK_VALUE, &m,
@@ -58,14 +58,14 @@ void MORSE_TASK_zplgsy( const MORSE_option_t *options,
                         MORSE_Complex64_t bump, int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
                         int bigM, int m0, int n0, unsigned long long int seed )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zplgsy_parsec, "zplgsy",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zplgsy_parsec, options->priority, "zplgsy",
         sizeof(MORSE_Complex64_t), &bump,                          VALUE,
         sizeof(int),               &m,                             VALUE,
         sizeof(int),               &n,                             VALUE,
-        PASSED_BY_REF,             RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,             RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     OUTPUT | morse_parsec_get_arena_index(A) | AFFINITY,
         sizeof(int),               &lda,                           VALUE,
         sizeof(int),               &bigM,                          VALUE,
         sizeof(int),               &m0,                            VALUE,
diff --git a/runtime/parsec/codelets/codelet_zplrnt.c b/runtime/parsec/codelets/codelet_zplrnt.c
index abd11e4e34a6a86aacb3894e82a83944dc1cbf02..a4334cb218be47ffcb725d70b448c570125bd19b 100644
--- a/runtime/parsec/codelets/codelet_zplrnt.c
+++ b/runtime/parsec/codelets/codelet_zplrnt.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zplrnt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zplrnt_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -36,7 +36,7 @@ CORE_zplrnt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *n0;
     unsigned long long int *seed;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -56,10 +56,10 @@ void MORSE_TASK_zplrnt( const MORSE_option_t *options,
                         int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
                         int bigM, int m0, int n0, unsigned long long int seed )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zplrnt_parsec, "zplrnt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zplrnt_parsec, options->priority, "zplrnt",
         sizeof(int),       &m,                          VALUE,
         sizeof(int),       &n,                          VALUE,
         PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     OUTPUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zplssq.c b/runtime/parsec/codelets/codelet_zplssq.c
index a68abc47d5d1881b4dce8a8e90dee964e1d67265..32ff0454d13b3cc4ceaf76305d006f27d8bfa658 100644
--- a/runtime/parsec/codelets/codelet_zplssq.c
+++ b/runtime/parsec/codelets/codelet_zplssq.c
@@ -57,12 +57,12 @@
  *
  */
 static int
-CORE_zplssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zplssq_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     double *SCALESUMSQ;
     double *SCLSSQ;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_DATA,  &SCALESUMSQ,
         UNPACK_DATA,  &SCLSSQ );
@@ -81,21 +81,21 @@ void MORSE_TASK_zplssq( const MORSE_option_t *options,
                         const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn,
                         const MORSE_desc_t *SCLSSQ,     int SCLSSQm,     int SCLSSQn )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zplssq_parsec, "plssq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zplssq_parsec, options->priority, "plssq",
         PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INPUT | REGION_FULL,
         PASSED_BY_REF,         RTBLKADDR( SCLSSQ, double, SCLSSQm, SCLSSQn ),                INOUT | REGION_FULL,
         0);
 }
 
 static int
-CORE_zplssq2_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zplssq2_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     double *RESULT;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_DATA, &RESULT );
 
@@ -107,10 +107,10 @@ CORE_zplssq2_parsec(dague_execution_unit_t *context, dague_execution_context_t *
 void MORSE_TASK_zplssq2( const MORSE_option_t *options,
                          const MORSE_desc_t *RESULT, int RESULTm, int RESULTn )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zplssq2_parsec, "plssq2",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zplssq2_parsec, options->priority, "plssq2",
         PASSED_BY_REF,         RTBLKADDR( RESULT, double, RESULTm, RESULTn ),     INOUT | REGION_FULL,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zpotrf.c b/runtime/parsec/codelets/codelet_zpotrf.c
index 1e1976c1eec20ab278a857d3eb0a80e590d6682e..9cdf2486d848d2b92cffcd1f7293a1e120cf89ab 100644
--- a/runtime/parsec/codelets/codelet_zpotrf.c
+++ b/runtime/parsec/codelets/codelet_zpotrf.c
@@ -30,13 +30,13 @@
  *
  **/
 static int
-CORE_zpotrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zpotrf_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *tempkm, *ldak, *iinfo;
     MORSE_Complex64_t *A;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &tempkm,
@@ -54,13 +54,13 @@ void MORSE_TASK_zpotrf(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        int iinfo)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zpotrf_parsec, "potrf",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zpotrf_parsec, options->priority, "potrf",
         sizeof(MORSE_enum),    &uplo,                             VALUE,
         sizeof(int),           &n,                                VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | morse_parsec_get_arena_index(A) | AFFINITY,
         sizeof(int),           &lda,                              VALUE,
         sizeof(int),           &iinfo,                            VALUE,
         0);
diff --git a/runtime/parsec/codelets/codelet_zssssm.c b/runtime/parsec/codelets/codelet_zssssm.c
index 86c5543f0d0bc06f7bb392e51b4b15f62b5226d6..dcf3a61f438a70d1c64025814fe233414340f621 100644
--- a/runtime/parsec/codelets/codelet_zssssm.c
+++ b/runtime/parsec/codelets/codelet_zssssm.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zssssm_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zssssm_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     int *m1;
     int *n1;
@@ -43,7 +43,7 @@ CORE_zssssm_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *ldl2;
     int *IPIV;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &m1,
         UNPACK_VALUE,   &n1,
@@ -74,10 +74,10 @@ void MORSE_TASK_zssssm(const MORSE_option_t *options,
                        const MORSE_desc_t *L2, int L2m, int L2n, int ldl2,
                        const int *IPIV)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zssssm_parsec, "ssssm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zssssm_parsec, options->priority, "ssssm",
         sizeof(int),           &m1,                                VALUE,
         sizeof(int),           &n1,                                VALUE,
         sizeof(int),           &m2,                                VALUE,
diff --git a/runtime/parsec/codelets/codelet_zsymm.c b/runtime/parsec/codelets/codelet_zsymm.c
index f8a8383f01e6225aa6ca79870316e3b375b149d7..b268138b2f98170e8e51149499eceff5dcc4950b 100644
--- a/runtime/parsec/codelets/codelet_zsymm.c
+++ b/runtime/parsec/codelets/codelet_zsymm.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zsymm_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zsymm_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *side;
     MORSE_enum *uplo;
@@ -40,7 +40,7 @@ CORE_zsymm_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
     MORSE_Complex64_t *C;
     int *LDC;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &side,
         UNPACK_VALUE, &uplo,
@@ -70,10 +70,10 @@ void MORSE_TASK_zsymm(const MORSE_option_t *options,
                       const MORSE_desc_t *B, int Bm, int Bn, int ldb,
                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zsymm_parsec, "symm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zsymm_parsec, options->priority, "symm",
         sizeof(MORSE_enum),     &side,              VALUE,
         sizeof(MORSE_enum),     &uplo,              VALUE,
         sizeof(int),            &m,                 VALUE,
diff --git a/runtime/parsec/codelets/codelet_zsyr2k.c b/runtime/parsec/codelets/codelet_zsyr2k.c
index 160ff5e7d4c933cc6796c91fc3dd983c4b00d37a..a16a874e137a4deaebd62146d22fddf9ce2de73f 100644
--- a/runtime/parsec/codelets/codelet_zsyr2k.c
+++ b/runtime/parsec/codelets/codelet_zsyr2k.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zsyr2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zsyr2k_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
@@ -40,7 +40,7 @@ CORE_zsyr2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *C;
     int *ldc;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &trans,
@@ -70,21 +70,21 @@ void MORSE_TASK_zsyr2k(const MORSE_option_t *options,
                        const MORSE_desc_t *B, int Bm, int Bn, int ldb,
                        MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zsyr2k_parsec, "syr2k",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zsyr2k_parsec, options->priority, "syr2k",
         sizeof(MORSE_enum),     &uplo,                  VALUE,
         sizeof(MORSE_enum),     &trans,                 VALUE,
         sizeof(int),            &n,                     VALUE,
         sizeof(int),            &k,                     VALUE,
         sizeof(MORSE_Complex64_t), &alpha,              VALUE,
-        PASSED_BY_REF,          RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | morse_parsec_get_arena_index(A),
         sizeof(int),            &lda,                   VALUE,
-        PASSED_BY_REF,          RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | morse_parsec_get_arena_index(B),
         sizeof(int),            &ldb,                   VALUE,
         sizeof(MORSE_Complex64_t), &beta,               VALUE,
-        PASSED_BY_REF,          RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | morse_parsec_get_arena_index(C) | AFFINITY,
         sizeof(int),            &ldc,                   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zsyrk.c b/runtime/parsec/codelets/codelet_zsyrk.c
index 82baa3b13a3d0a18ea1e4421830b784b9838913e..28911f3c36b9b65f8159e0452e378981192777c4 100644
--- a/runtime/parsec/codelets/codelet_zsyrk.c
+++ b/runtime/parsec/codelets/codelet_zsyrk.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zsyrk_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zsyrk_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
@@ -38,7 +38,7 @@ CORE_zsyrk_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     MORSE_Complex64_t *C;
     int *ldc;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &trans,
@@ -64,19 +64,19 @@ void MORSE_TASK_zsyrk(const MORSE_option_t *options,
                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zsyrk_parsec, "syrk",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zsyrk_parsec, options->priority, "syrk",
         sizeof(MORSE_enum),    &uplo,                              VALUE,
         sizeof(MORSE_enum),    &trans,                             VALUE,
         sizeof(int),           &n,                                 VALUE,
         sizeof(int),           &k,                                 VALUE,
         sizeof(MORSE_Complex64_t),           &alpha,               VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | morse_parsec_get_arena_index(A),
         sizeof(int),           &lda,                               VALUE,
         sizeof(MORSE_Complex64_t),           &beta,                VALUE,
-        PASSED_BY_REF,         RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | morse_parsec_get_arena_index(C) | AFFINITY,
         sizeof(int),           &ldc,                               VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zsyssq.c b/runtime/parsec/codelets/codelet_zsyssq.c
index 307268caa0122c1a875c8301bfb5a467e9a3e647..7e069a2f7cf7488e280ef9f44706e810a2355e9a 100644
--- a/runtime/parsec/codelets/codelet_zsyssq.c
+++ b/runtime/parsec/codelets/codelet_zsyssq.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zsyssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zsyssq_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *n;
@@ -33,7 +33,7 @@ CORE_zsyssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *lda;
     double *SCALESUMSQ;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &n,
@@ -51,10 +51,10 @@ void MORSE_TASK_zsyssq( const MORSE_option_t *options,
                         const MORSE_desc_t *A, int Am, int An, int lda,
                         const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zsyssq_parsec, "syssq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zsyssq_parsec, options->priority, "syssq",
         sizeof(MORSE_enum),     &uplo,                  VALUE,
         sizeof(int),            &n,                     VALUE,
         PASSED_BY_REF,          RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                               INPUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_zsytrf_nopiv.c b/runtime/parsec/codelets/codelet_zsytrf_nopiv.c
index 08c8894aea87dc82182d3abb7b75a10725e3f4c2..1c1e462ef579afb36dc5210b14c5b1782bdac64f 100644
--- a/runtime/parsec/codelets/codelet_zsytrf_nopiv.c
+++ b/runtime/parsec/codelets/codelet_zsytrf_nopiv.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zsytrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zsytrf_nopiv_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     int *n;
@@ -34,7 +34,7 @@ CORE_zsytrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_contex
     int *iinfo;
     int info;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &n,
@@ -52,10 +52,10 @@ void MORSE_TASK_zsytrf_nopiv(const MORSE_option_t *options,
                              const MORSE_desc_t *A, int Am, int An, int lda,
                              int iinfo)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zsytrf_nopiv_parsec, "sytrf_nopiv",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zsytrf_nopiv_parsec, options->priority, "sytrf_nopiv",
         sizeof(MORSE_enum),              &uplo,                VALUE,
         sizeof(int),                     &n,                   VALUE,
         PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
diff --git a/runtime/parsec/codelets/codelet_ztile_zero.c b/runtime/parsec/codelets/codelet_ztile_zero.c
index 5bb42168cd9a35abc2e095d6864939b8e6f7b994..7d38207c6c15494c8f5ed78fa5d3873fc97bc201 100644
--- a/runtime/parsec/codelets/codelet_ztile_zero.c
+++ b/runtime/parsec/codelets/codelet_ztile_zero.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztile_zero_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztile_zero_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *X1;
     int *X2;
@@ -35,7 +35,7 @@ CORE_ztile_zero_parsec(dague_execution_unit_t *context, dague_execution_context_
     int *lda;
     int x, y;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &X1,
         UNPACK_VALUE, &X2,
@@ -55,10 +55,10 @@ void MORSE_TASK_ztile_zero(const const MORSE_option_t *options,
                            int X1, int X2, int Y1, int Y2,
                            const MORSE_desc_t *A, int Am, int An, int lda)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztile_zero_parsec, "tile zero",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztile_zero_parsec, options->priority, "tile zero",
         sizeof(int),       &X1,                       VALUE,
         sizeof(int),       &X2,                       VALUE,
         sizeof(int),       &Y1,                       VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztpmqrt.c b/runtime/parsec/codelets/codelet_ztpmqrt.c
index 4b9c869ba68fb862b9b36ab42bc44c55cb5cba57..3dc5ca5e6d4a8e36ebc11d4ae9743921429d65a7 100644
--- a/runtime/parsec/codelets/codelet_ztpmqrt.c
+++ b/runtime/parsec/codelets/codelet_ztpmqrt.c
@@ -27,8 +27,8 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztpmqrt_parsec(dague_execution_unit_t    *context,
-                    dague_execution_context_t *this_task)
+CORE_ztpmqrt_parsec(parsec_execution_stream_t    *context,
+                    parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -47,7 +47,7 @@ CORE_ztpmqrt_parsec(dague_execution_unit_t    *context,
     int *ldb;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -80,10 +80,10 @@ void MORSE_TASK_ztpmqrt( const MORSE_option_t *options,
                          const MORSE_desc_t *A, int Am, int An, int lda,
                          const MORSE_desc_t *B, int Bm, int Bn, int ldb )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztpmqrt_parsec, "tpmqrt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztpmqrt_parsec, options->priority, "tpmqrt",
         sizeof(MORSE_enum), &side,  VALUE,
         sizeof(MORSE_enum), &trans, VALUE,
         sizeof(int),        &M,     VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztpqrt.c b/runtime/parsec/codelets/codelet_ztpqrt.c
index e866833544f6af2acf022fb1fc9860093cdf773e..1610f02a07f3260f1a4e102094db1b816729d5a4 100644
--- a/runtime/parsec/codelets/codelet_ztpqrt.c
+++ b/runtime/parsec/codelets/codelet_ztpqrt.c
@@ -27,8 +27,8 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztpqrt_parsec(dague_execution_unit_t    *context,
-                   dague_execution_context_t *this_task)
+CORE_ztpqrt_parsec(parsec_execution_stream_t    *context,
+                   parsec_task_t *this_task)
 {
     int *M;
     int *N;
@@ -42,7 +42,7 @@ CORE_ztpqrt_parsec(dague_execution_unit_t    *context,
     int *ldt;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &M,
         UNPACK_VALUE,   &N,
@@ -68,15 +68,15 @@ void MORSE_TASK_ztpqrt( const MORSE_option_t *options,
                          const MORSE_desc_t *B, int Bm, int Bn, int ldb,
                          const MORSE_desc_t *T, int Tm, int Tn, int ldt )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztpqrt_parsec, "tpqrt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztpqrt_parsec, options->priority, "tpqrt",
         sizeof(int),   &M,   VALUE,
         sizeof(int),   &N,   VALUE,
         sizeof(int),   &L,   VALUE,
         sizeof(int),   &ib,  VALUE,
-        PASSED_BY_REF,  RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INOUT | REGION_U | REGION_D,
+        PASSED_BY_REF,  RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INOUT | REGION_FULL,
         sizeof(int),   &lda, VALUE,
         PASSED_BY_REF,  RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ), INOUT | REGION_FULL,
         sizeof(int),   &ldb, VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztradd.c b/runtime/parsec/codelets/codelet_ztradd.c
index 7490dfbf94eceaaeaf5c8fe48e24988051aa6cf7..fc747e8d85f650327ec8b0a8cdde47c2d87437f9 100644
--- a/runtime/parsec/codelets/codelet_ztradd.c
+++ b/runtime/parsec/codelets/codelet_ztradd.c
@@ -29,7 +29,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztradd_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztradd_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
@@ -42,7 +42,7 @@ CORE_ztradd_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *B;
     int *LDB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &trans,
@@ -125,10 +125,10 @@ void MORSE_TASK_ztradd(const MORSE_option_t *options,
                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
                        MORSE_Complex64_t beta,  const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztradd_parsec, "tradd",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztradd_parsec, options->priority, "tradd",
         sizeof(MORSE_enum),        &uplo,  VALUE,
         sizeof(MORSE_enum),        &trans, VALUE,
         sizeof(int),               &m,     VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztrasm.c b/runtime/parsec/codelets/codelet_ztrasm.c
index 66327f9710d034850aabc3eb3be6006d1a84975e..e16ef765fbe485533908cc40bb462c1964e6c76d 100644
--- a/runtime/parsec/codelets/codelet_ztrasm.c
+++ b/runtime/parsec/codelets/codelet_ztrasm.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztrasm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztrasm_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *storev;
     MORSE_enum *uplo;
@@ -36,7 +36,7 @@ CORE_ztrasm_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *lda;
     double *work;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &storev,
         UNPACK_VALUE, &uplo,
@@ -57,10 +57,10 @@ void MORSE_TASK_ztrasm(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        const MORSE_desc_t *B, int Bm, int Bn)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztrasm_parsec, "trasm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztrasm_parsec, options->priority, "trasm",
         sizeof(MORSE_enum),     &storev,                VALUE,
         sizeof(MORSE_enum),     &uplo,                  VALUE,
         sizeof(MORSE_enum),     &diag,                  VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztrmm.c b/runtime/parsec/codelets/codelet_ztrmm.c
index baae850c13adbecb11f06db9308647962ec9df04..7c432a6c3648a8f78533421569f1d4273315a68f 100644
--- a/runtime/parsec/codelets/codelet_ztrmm.c
+++ b/runtime/parsec/codelets/codelet_ztrmm.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztrmm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztrmm_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *uplo;
@@ -39,7 +39,7 @@ CORE_ztrmm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     MORSE_Complex64_t *B;
     int *LDB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &side,
         UNPACK_VALUE, &uplo,
@@ -68,10 +68,10 @@ void MORSE_TASK_ztrmm(const MORSE_option_t *options,
                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
                       const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztrmm_parsec, "trmm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztrmm_parsec, options->priority, "trmm",
         sizeof(MORSE_enum),     &side,                  VALUE,
         sizeof(MORSE_enum),     &uplo,                  VALUE,
         sizeof(MORSE_enum),     &transA,                VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztrsm.c b/runtime/parsec/codelets/codelet_ztrsm.c
index b22d0184e9c213dc3d7c8e6e3a88b13cb499f07d..fb650e6c26fb0ad301f2d6d2af406b0ca2807b4f 100644
--- a/runtime/parsec/codelets/codelet_ztrsm.c
+++ b/runtime/parsec/codelets/codelet_ztrsm.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztrsm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztrsm_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *side, *uplo, *trans, *diag;
     int  *tempmm, *nb, *ldak, *ldam;
@@ -33,7 +33,7 @@ CORE_ztrsm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     MORSE_Complex64_t *T;
     MORSE_Complex64_t *C;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &side,
         UNPACK_VALUE, &uplo,
@@ -60,10 +60,10 @@ void MORSE_TASK_ztrsm(const MORSE_option_t *options,
                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
                       const MORSE_desc_t *B, int Bm, int Bn, int ldb)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztrsm_parsec, "Trsm",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztrsm_parsec, options->priority, "Trsm",
         sizeof(MORSE_enum),    &side,                     VALUE,
         sizeof(MORSE_enum),    &uplo,                     VALUE,
         sizeof(MORSE_enum),    &transA,                   VALUE,
@@ -71,9 +71,9 @@ void MORSE_TASK_ztrsm(const MORSE_option_t *options,
         sizeof(int),           &m,                        VALUE,
         sizeof(int),           &n,                        VALUE,
         sizeof(MORSE_Complex64_t),           &alpha,      VALUE,
-        PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | morse_parsec_get_arena_index(A),
         sizeof(int),           &lda,                      VALUE,
-        PASSED_BY_REF,     RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,     RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INOUT | morse_parsec_get_arena_index(A) | AFFINITY,
         sizeof(int),           &ldb,                      VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrssq.c b/runtime/parsec/codelets/codelet_ztrssq.c
index 5ec51a99de4e8d298e82f76a5fddede5821d6673..0f88de733c5da304870c35a087963f54d357459f 100644
--- a/runtime/parsec/codelets/codelet_ztrssq.c
+++ b/runtime/parsec/codelets/codelet_ztrssq.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztrssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztrssq_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *diag;
@@ -35,7 +35,7 @@ CORE_ztrssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *lda;
     double *SCALESUMSQ;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &diag,
@@ -56,10 +56,10 @@ void MORSE_TASK_ztrssq( const MORSE_option_t *options,
                         const MORSE_desc_t *A, int Am, int An, int lda,
                         const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn )
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztrssq_parsec, "trssq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztrssq_parsec, options->priority, "trssq",
         sizeof(MORSE_enum),     &uplo,                  VALUE,
         sizeof(MORSE_enum),     &diag,                  VALUE,
         sizeof(int),            &m,                     VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztrtri.c b/runtime/parsec/codelets/codelet_ztrtri.c
index 29aeb28f5ff1bed145d4d678fcd4b09cf576a2af..bb250e669e5f35fa091e259dd7bb25b913a4079d 100644
--- a/runtime/parsec/codelets/codelet_ztrtri.c
+++ b/runtime/parsec/codelets/codelet_ztrtri.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztrtri_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztrtri_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *diag;
@@ -35,7 +35,7 @@ CORE_ztrtri_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *iinfo;
     int info;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &diag,
@@ -55,10 +55,10 @@ void MORSE_TASK_ztrtri(const MORSE_option_t *options,
                        const MORSE_desc_t *A, int Am, int An, int lda,
                        int iinfo)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztrtri_parsec, "trtri",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztrtri_parsec, options->priority, "trtri",
         sizeof(MORSE_enum),         &uplo,                  VALUE,
         sizeof(MORSE_enum),         &diag,                  VALUE,
         sizeof(int),                &n,                     VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztslqt.c b/runtime/parsec/codelets/codelet_ztslqt.c
index 8f01e5ca6c8f6268798e1abc059905bf4142ae70..8b17830370ee36e1b2c95453049d7be0d880329a 100644
--- a/runtime/parsec/codelets/codelet_ztslqt.c
+++ b/runtime/parsec/codelets/codelet_ztslqt.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztslqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztslqt_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -39,7 +39,7 @@ CORE_ztslqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -64,10 +64,10 @@ void MORSE_TASK_ztslqt(const MORSE_option_t *options,
                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztslqt_parsec, "tslqt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztslqt_parsec, options->priority, "tslqt",
         sizeof(int),            &m,                     VALUE,
         sizeof(int),            &n,                     VALUE,
         sizeof(int),            &ib,                    VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsmlq.c b/runtime/parsec/codelets/codelet_ztsmlq.c
index 48e2488155200d0d83b07a945b51bc70690a748e..183829a2ea6275038591715f189858d1d70f71f1 100644
--- a/runtime/parsec/codelets/codelet_ztsmlq.c
+++ b/runtime/parsec/codelets/codelet_ztsmlq.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztsmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztsmlq_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -46,7 +46,7 @@ CORE_ztsmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -83,10 +83,10 @@ void MORSE_TASK_ztsmlq(const MORSE_option_t *options,
 {
     int ldwork = side == MorseLeft ? ib : nb;
 
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztsmlq_parsec, "tsmlq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztsmlq_parsec, options->priority, "tsmlq",
         sizeof(MORSE_enum),                &side,       VALUE,
         sizeof(MORSE_enum),                &trans,      VALUE,
         sizeof(int),                        &m1,        VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsmlq_hetra1.c b/runtime/parsec/codelets/codelet_ztsmlq_hetra1.c
index 022a827d35cb622534fb4e020aeb52835c8c5a83..b3141cb5f89ffaf296224fc3da519903a4ef2c5d 100644
--- a/runtime/parsec/codelets/codelet_ztsmlq_hetra1.c
+++ b/runtime/parsec/codelets/codelet_ztsmlq_hetra1.c
@@ -30,8 +30,8 @@
 #include "coreblas/coreblas_z.h"
 
 static inline int
-CORE_ztsmlq_hetra1_parsec(dague_execution_unit_t    *context,
-                          dague_execution_context_t *this_task)
+CORE_ztsmlq_hetra1_parsec(parsec_execution_stream_t    *context,
+                          parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -52,7 +52,7 @@ CORE_ztsmlq_hetra1_parsec(dague_execution_unit_t    *context,
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -87,11 +87,11 @@ void MORSE_TASK_ztsmlq_hetra1(const MORSE_option_t *options,
                               const MORSE_desc_t *V, int Vm, int Vn, int ldv,
                               const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
     int ldwork = side == MorseLeft ? ib : nb;
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztsmlq_hetra1_parsec, "tsmlq_hetra1",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztsmlq_hetra1_parsec, options->priority, "tsmlq_hetra1",
         sizeof(MORSE_enum), &side,   VALUE,
         sizeof(MORSE_enum), &trans,  VALUE,
         sizeof(int),        &m1,     VALUE,
@@ -100,7 +100,7 @@ void MORSE_TASK_ztsmlq_hetra1(const MORSE_option_t *options,
         sizeof(int),        &n2,     VALUE,
         sizeof(int),        &k,      VALUE,
         sizeof(int),        &ib,     VALUE,
-        PASSED_BY_REF,       RTBLKADDR(A1, MORSE_Complex64_t, A1m, A1n), INOUT | REGION_U | REGION_D,
+        PASSED_BY_REF,       RTBLKADDR(A1, MORSE_Complex64_t, A1m, A1n), INOUT | REGION_FULL,
         sizeof(int),        &lda1,   VALUE,
         PASSED_BY_REF,       RTBLKADDR(A2, MORSE_Complex64_t, A2m, A2n), INOUT | REGION_FULL,
         sizeof(int),        &lda2,   VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsmqr.c b/runtime/parsec/codelets/codelet_ztsmqr.c
index 93946fbc320b93a9153db6eaff7228fb5671094b..d0f69ceeb88cee8ba8c2e8cca2e69795a5971ca5 100644
--- a/runtime/parsec/codelets/codelet_ztsmqr.c
+++ b/runtime/parsec/codelets/codelet_ztsmqr.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztsmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztsmqr_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -46,7 +46,7 @@ CORE_ztsmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -83,10 +83,10 @@ void MORSE_TASK_ztsmqr(const MORSE_option_t *options,
 {
     int ldwork = side == MorseLeft ? ib : nb;
 
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztsmqr_parsec, "tsmqr",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztsmqr_parsec, options->priority, "tsmqr",
         sizeof(MORSE_enum),    &side,                              VALUE,
         sizeof(MORSE_enum),    &trans,                             VALUE,
         sizeof(int),           &m1,                                VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsmqr_hetra1.c b/runtime/parsec/codelets/codelet_ztsmqr_hetra1.c
index 3a300a38b2e553fca68f1314317184785270c390..5c521c88102791985843fc11d59bb9764f816ba9 100644
--- a/runtime/parsec/codelets/codelet_ztsmqr_hetra1.c
+++ b/runtime/parsec/codelets/codelet_ztsmqr_hetra1.c
@@ -30,8 +30,8 @@
 #include "coreblas/coreblas_z.h"
 
 static inline int
-CORE_ztsmqr_hetra1_parsec(dague_execution_unit_t    *context,
-                          dague_execution_context_t *this_task)
+CORE_ztsmqr_hetra1_parsec(parsec_execution_stream_t    *context,
+                          parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -52,7 +52,7 @@ CORE_ztsmqr_hetra1_parsec(dague_execution_unit_t    *context,
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -87,11 +87,11 @@ void MORSE_TASK_ztsmqr_hetra1(const MORSE_option_t *options,
                               const MORSE_desc_t *V, int Vm, int Vn, int ldv,
                               const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
     int ldwork = side == MorseLeft ? ib : nb;
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztsmqr_hetra1_parsec, "tsmqr_hetra1",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztsmqr_hetra1_parsec, options->priority, "tsmqr_hetra1",
         sizeof(MORSE_enum), &side,   VALUE,
         sizeof(MORSE_enum), &trans,  VALUE,
         sizeof(int),        &m1,     VALUE,
@@ -100,7 +100,7 @@ void MORSE_TASK_ztsmqr_hetra1(const MORSE_option_t *options,
         sizeof(int),        &n2,     VALUE,
         sizeof(int),        &k,      VALUE,
         sizeof(int),        &ib,     VALUE,
-        PASSED_BY_REF,       RTBLKADDR(A1, MORSE_Complex64_t, A1m, A1n), INOUT | REGION_L | REGION_D,
+        PASSED_BY_REF,       RTBLKADDR(A1, MORSE_Complex64_t, A1m, A1n), INOUT | REGION_FULL,
         sizeof(int),        &lda1,   VALUE,
         PASSED_BY_REF,       RTBLKADDR(A2, MORSE_Complex64_t, A2m, A2n), INOUT | REGION_FULL,
         sizeof(int),        &lda2,   VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsqrt.c b/runtime/parsec/codelets/codelet_ztsqrt.c
index 8514230a620b72a43658f4546f77cea0d1a2b80e..9fbcacb20289d78d400d2b3c45823ee96626f03d 100644
--- a/runtime/parsec/codelets/codelet_ztsqrt.c
+++ b/runtime/parsec/codelets/codelet_ztsqrt.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztsqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztsqrt_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -39,7 +39,7 @@ CORE_ztsqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &m,
         UNPACK_VALUE, &n,
@@ -64,14 +64,14 @@ void MORSE_TASK_ztsqrt(const MORSE_option_t *options,
                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztsqrt_parsec, "tsqrt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztsqrt_parsec, options->priority, "tsqrt",
         sizeof(MORSE_enum),    &m,                                 VALUE,
         sizeof(int),           &n,                                 VALUE,
         sizeof(int),           &ib,                                VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT | REGION_D | REGION_U,
+        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT | REGION_FULL,
         sizeof(int),           &lda1,                              VALUE,
         PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT | REGION_FULL,
         sizeof(int),           &lda2,                              VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztstrf.c b/runtime/parsec/codelets/codelet_ztstrf.c
index bb13778e756a759c9942bc605122c4833209866d..0e361875eadbaa709b4063020ee60a0dbde19828 100644
--- a/runtime/parsec/codelets/codelet_ztstrf.c
+++ b/runtime/parsec/codelets/codelet_ztstrf.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_ztstrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_ztstrf_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -45,7 +45,7 @@ CORE_ztstrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 
     int info;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &m,
         UNPACK_VALUE,   &n,
@@ -76,10 +76,10 @@ void MORSE_TASK_ztstrf(const MORSE_option_t *options,
                        int *IPIV,
                        MORSE_bool check_info, int iinfo)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_ztstrf_parsec, "tstrf",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_ztstrf_parsec, options->priority, "tstrf",
         sizeof(int),           &m,                                VALUE,
         sizeof(int),           &n,                                VALUE,
         sizeof(int),           &ib,                               VALUE,
diff --git a/runtime/parsec/codelets/codelet_zttlqt.c b/runtime/parsec/codelets/codelet_zttlqt.c
index 5123cb2193b1e843b1f0318c53aa16fa3b64ce36..ba9f0c8e8d8f9706b31531ac474d9887aaef9952 100644
--- a/runtime/parsec/codelets/codelet_zttlqt.c
+++ b/runtime/parsec/codelets/codelet_zttlqt.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zttlqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zttlqt_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     int *m;
     int *n;
@@ -39,7 +39,7 @@ CORE_zttlqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &m,
         UNPACK_VALUE,   &n,
@@ -65,10 +65,10 @@ void MORSE_TASK_zttlqt(const MORSE_option_t *options,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
 
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zttlqt_parsec, "ttlqt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zttlqt_parsec, options->priority, "ttlqt",
         sizeof(int),            &m,                     VALUE,
         sizeof(int),            &n,                     VALUE,
         sizeof(int),            &ib,                    VALUE,
diff --git a/runtime/parsec/codelets/codelet_zttmlq.c b/runtime/parsec/codelets/codelet_zttmlq.c
index 3dba39bb715e3a12fa3ef88041eea0a1060b38a2..bb236ae9e462196cd6e5ff8a3826eb2db79748ad 100644
--- a/runtime/parsec/codelets/codelet_zttmlq.c
+++ b/runtime/parsec/codelets/codelet_zttmlq.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zttmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zttmlq_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -46,7 +46,7 @@ CORE_zttmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -83,10 +83,10 @@ void MORSE_TASK_zttmlq(const MORSE_option_t *options,
 {
     int ldwork = side == MorseLeft ? ib : nb;
 
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zttmlq_parsec, "ttmlq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zttmlq_parsec, options->priority, "ttmlq",
         sizeof(MORSE_enum),     &side,                      VALUE,
         sizeof(MORSE_enum),     &trans,                     VALUE,
         sizeof(int),            &m1,                        VALUE,
diff --git a/runtime/parsec/codelets/codelet_zttmqr.c b/runtime/parsec/codelets/codelet_zttmqr.c
index b2e2cf45e0f4bd34d9d5e141c73d67a17678a94e..c96d479ba891dff34671c52d39b5db613126be3b 100644
--- a/runtime/parsec/codelets/codelet_zttmqr.c
+++ b/runtime/parsec/codelets/codelet_zttmqr.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zttmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zttmqr_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -46,7 +46,7 @@ CORE_zttmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -84,10 +84,10 @@ void MORSE_TASK_zttmqr(const MORSE_option_t *options,
 {
     int ldwork = side == MorseLeft ? ib : nb;
 
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zttmqr_parsec, "ttmqr",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zttmqr_parsec, options->priority, "ttmqr",
         sizeof(MORSE_enum),    &side,                             VALUE,
         sizeof(MORSE_enum),    &trans,                            VALUE,
         sizeof(int),           &m1,                               VALUE,
diff --git a/runtime/parsec/codelets/codelet_zttqrt.c b/runtime/parsec/codelets/codelet_zttqrt.c
index a2cbf8749852766fc5ab3138266172d88b82097b..7a5b1ea0f06c98adf858d9d28ed735089ba5dcac 100644
--- a/runtime/parsec/codelets/codelet_zttqrt.c
+++ b/runtime/parsec/codelets/codelet_zttqrt.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zttqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zttqrt_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     int *m;
     int *n;
@@ -39,7 +39,7 @@ CORE_zttqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &m,
         UNPACK_VALUE,   &n,
@@ -64,10 +64,10 @@ void MORSE_TASK_zttqrt(const MORSE_option_t *options,
                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zttqrt_parsec, "ttqrt",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zttqrt_parsec, options->priority,  "ttqrt",
         sizeof(MORSE_enum),    &m,                                 VALUE,
         sizeof(int),           &n,                                 VALUE,
         sizeof(int),           &ib,                                VALUE,
diff --git a/runtime/parsec/codelets/codelet_zunmlq.c b/runtime/parsec/codelets/codelet_zunmlq.c
index b48855d2011771ca0b4e0d58efc3c96928888cf2..916db29fe6261713ed94664f0e514cef6c9ca073 100644
--- a/runtime/parsec/codelets/codelet_zunmlq.c
+++ b/runtime/parsec/codelets/codelet_zunmlq.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zunmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zunmlq_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -42,7 +42,7 @@ CORE_zunmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -72,10 +72,10 @@ void MORSE_TASK_zunmlq(const MORSE_option_t *options,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt,
                        const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zunmlq_parsec, "unmlq",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zunmlq_parsec, options->priority, "unmlq",
         sizeof(MORSE_enum),                 &side,              VALUE,
         sizeof(MORSE_enum),                 &trans,             VALUE,
         sizeof(int),                        &m,                 VALUE,
diff --git a/runtime/parsec/codelets/codelet_zunmqr.c b/runtime/parsec/codelets/codelet_zunmqr.c
index f0cbf7ce45370bdc4c619e62e786960688ad0ccf..ab2599d0a9f50611d14349325671718639bad1ad 100644
--- a/runtime/parsec/codelets/codelet_zunmqr.c
+++ b/runtime/parsec/codelets/codelet_zunmqr.c
@@ -25,7 +25,7 @@
 #include "coreblas/coreblas_z.h"
 
 static int
-CORE_zunmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zunmqr_parsec(parsec_execution_stream_t *context, parsec_task_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -42,7 +42,7 @@ CORE_zunmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *WORK;
     int *ldwork;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE,   &side,
         UNPACK_VALUE,   &trans,
@@ -72,17 +72,17 @@ void MORSE_TASK_zunmqr(const MORSE_option_t *options,
                        const MORSE_desc_t *T, int Tm, int Tn, int ldt,
                        const MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-    dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    dague_insert_task(
-        DAGUE_dtd_handle, CORE_zunmqr_parsec, "unmqr",
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zunmqr_parsec, options->priority, "unmqr",
         sizeof(MORSE_enum),    &side,                              VALUE,
         sizeof(MORSE_enum),    &trans,                             VALUE,
         sizeof(int),           &m,                                 VALUE,
         sizeof(int),           &n,                                 VALUE,
         sizeof(int),           &k,                                 VALUE,
         sizeof(int),           &ib,                                VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_L,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
         sizeof(int),           &lda,                               VALUE,
         PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     INPUT | REGION_FULL,
         sizeof(int),           &ldt,                               VALUE,