diff --git a/runtime/parsec/codelets/codelet_dataflush.c b/runtime/parsec/codelets/codelet_dataflush.c
index 9b3e40a3db8a355a10ff6f8651cbf5e25a48f98c..a065cedf48fc5734a7bd17adac79d1955faa97f3 100644
--- a/runtime/parsec/codelets/codelet_dataflush.c
+++ b/runtime/parsec/codelets/codelet_dataflush.c
@@ -20,28 +20,24 @@
  *
  **/
 #include "chameleon_parsec.h"
-#include "chameleon/chameleon_tasks.h"
+#include "chameleon/morse_tasks.h"
 
 void MORSE_TASK_flush_data( const MORSE_option_t *options,
-                           const MORSE_desc_t *A, int Am, int An )
+                            const MORSE_desc_t *A, int Am, int An )
 {
-    (void)options; (void)A; (void)Am; (void)An;
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    /*
-     * This is useful for StarPU and PaRSEC MPI implementation, if it happens in
-     * Quark, it will need to be done carefuly to not break other runtimes.
-     */
+    parsec_dtd_data_flush( PARSEC_dtd_taskpool, RTBLKADDR( A, MORSE_Complex64_t, Am, An ) );
 }
 
 void MORSE_TASK_flush_desc( const MORSE_option_t *options,
-                           MORSE_enum uplo, const MORSE_desc_t *A )
+                            MORSE_enum uplo, const MORSE_desc_t *A )
 {
-    (void)options; (void)uplo; (void)A;
+    parsec_taskpool_t* PARSEC_dtd_taskpool = (parsec_taskpool_t *)(options->sequence->schedopt);
 
-    /*
-     * This is useful for StarPU and PaRSEC MPI implementation, if it happens in
-     * Quark, it will need to be done carefuly to not break other runtimes.
-     */
+    parsec_dtd_data_flush_all( PARSEC_dtd_taskpool, (parsec_data_collection_t*)(A->schedopt) );
+
+    (void)uplo;
 }
 
 void MORSE_TASK_flush_all()
diff --git a/runtime/parsec/codelets/codelet_zasum.c b/runtime/parsec/codelets/codelet_zasum.c
index 61343c8155daad053a38c53dda2939076f7b1af0..8736da1589d85f65e5aea4bcb6f4426217b33a98 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,16 +56,16 @@ 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,
         sizeof(int),           &N,                                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,
         sizeof(int),           &lda,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     INOUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zaxpy.c b/runtime/parsec/codelets/codelet_zaxpy.c
index d43182e96655bdde8a697cfdd4a8be68d49fb67f..ef8400eae97c834f715e176467617c67eae3474c 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,15 +53,15 @@ 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,
+        PASSED_BY_REF,  RTBLKADDR( A, MORSE_Complex64_t, Am, An ), INPUT,
         sizeof(int),               &incA, 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,
         sizeof(int),               &incB, VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zbuild.c b/runtime/parsec/codelets/codelet_zbuild.c
index f3bcd647225315843bcc46a5e5ff3567dc162aee..df154edf882ed109b80c9d404401cabb59e496bd 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,20 +56,20 @@ 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,
         sizeof(int),   &col_max,                          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,
         sizeof(int),   &lda,                              VALUE,
         sizeof(void*), &user_data,                        VALUE,
         sizeof(void*), &user_build_callback,              VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgeadd.c b/runtime/parsec/codelets/codelet_zgeadd.c
index a7122d5b18642023c79c53a085888c8a9aa31bc0..eed82f144d8db2d7db984573496e5f97f292292c 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,18 +118,18 @@ 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,
         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,
         sizeof(int),               &lda,   VALUE,
         sizeof(MORSE_Complex64_t), &beta,  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,
         sizeof(int),               &ldb,   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zgelqt.c b/runtime/parsec/codelets/codelet_zgelqt.c
index 7185c34ac04af8e4e6be3648d7b8bbdf31825418..f8283cc804f47bc7b2d63754b7686a1cd34e80b4 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,16 +120,16 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT,
         sizeof(int),           &lda,                VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     OUTPUT,
         sizeof(int),           &ldt,                VALUE,
         sizeof(MORSE_Complex64_t)*nb,       NULL,   SCRATCH,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,   SCRATCH,
diff --git a/runtime/parsec/codelets/codelet_zgemm.c b/runtime/parsec/codelets/codelet_zgemm.c
index 3adbc0a34de1edc9fecc49e5b236b5077cd76326..34ca3c30fa73a968036b211d0cd3c3e7fb665108 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,
         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,
         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 | AFFINITY,
         sizeof(int),           &ldc,                              VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zgeqrt.c b/runtime/parsec/codelets/codelet_zgeqrt.c
index 0edbf9f04f15067d1cf13b17f123622db955ebd8..19b0d183bbde49ee8b91219bce4b2812339b7232 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,16 +121,16 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT,
         sizeof(int),           &lda,                           VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     OUTPUT,
         sizeof(int),           &ldt,                           VALUE,
         sizeof(MORSE_Complex64_t)*nb,       NULL,              SCRATCH,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,              SCRATCH,
diff --git a/runtime/parsec/codelets/codelet_zgessm.c b/runtime/parsec/codelets/codelet_zgessm.c
index 27ffdab2670133e10faefb9bfeb79ace8118fa7b..823c5264951393adba83e6bae79862ab7d8e0139 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,20 +110,20 @@ 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,
         sizeof(int),           &ib,                               VALUE,
         sizeof(int)*nb,        IPIV,                              SCRATCH,
-        PASSED_BY_REF,         RTBLKADDR( L, MORSE_Complex64_t, Lm, Ln ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( L, MORSE_Complex64_t, Lm, Ln ),     INPUT,
         sizeof(int),           &ldl,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( D, MORSE_Complex64_t, Dm, Dn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( D, MORSE_Complex64_t, Dm, Dn ),     INPUT,
         sizeof(int),           &ldd,                              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,
         sizeof(int),           &lda,                              VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zgessq.c b/runtime/parsec/codelets/codelet_zgessq.c
index 17ad5b091de0dbe27e057ff83c98831e30b1cbaa..8f7f7b127e8642126caef3a11f008dd31d8cd29d 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,14 +51,14 @@ 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,
+        PASSED_BY_REF,   RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                            INPUT,
         sizeof(int),    &lda,          VALUE,
-        PASSED_BY_REF,   RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ), INOUT | REGION_FULL,
+        PASSED_BY_REF,   RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ), INOUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zgetrf.c b/runtime/parsec/codelets/codelet_zgetrf.c
index cbcc82c1e1fe66d4e372ae05ae4e1497363f24af..4950bb822fe90fca3bff6273f9477d90dac08a6d 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,13 +57,13 @@ 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,
+        PASSED_BY_REF,       RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT,
         sizeof(int),        &lda,                        VALUE,
         sizeof(int)*nb,      IPIV,                        SCRATCH,
         sizeof(MORSE_bool), &check_info,                 VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgetrf_incpiv.c b/runtime/parsec/codelets/codelet_zgetrf_incpiv.c
index 0782304da984bfb78baf0ea83ac94beba550f7b3..3322a11fd1f1e7e7db993c960070704ff96c428d 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,14 +115,14 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT,
         sizeof(int),           &lda,                              VALUE,
         sizeof(int)*nb,        IPIV,                              SCRATCH,
         sizeof(int),           &check_info,                       VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgetrf_nopiv.c b/runtime/parsec/codelets/codelet_zgetrf_nopiv.c
index e16a90c3d1d682d95e45d5c2500fddfb9e39002e..e35f3f6a2bc8a134b0f7c1dc6915a5bf57083504 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,14 +101,14 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT,
         sizeof(int),           &lda,                        VALUE,
         sizeof(int),           &iinfo,                      VALUE,
         0);
diff --git a/runtime/parsec/codelets/codelet_zhe2ge.c b/runtime/parsec/codelets/codelet_zhe2ge.c
index 3dae0955a3bad83ce623fa0189c1e4e3a1b0f4ea..c9a3d059c07d618c0a393361bceba99cc4b4a819 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,16 +61,16 @@ 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,
-        PASSED_BY_REF,       RTBLKADDR(A, MORSE_Complex64_t, Am, An), INPUT  | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(A, MORSE_Complex64_t, Am, An), INPUT ,
         sizeof(int),        &lda,    VALUE,
-        PASSED_BY_REF,       RTBLKADDR(B, MORSE_Complex64_t, Bm, Bn), OUTPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(B, MORSE_Complex64_t, Bm, Bn), OUTPUT,
         sizeof(int),        &ldb,    VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zhemm.c b/runtime/parsec/codelets/codelet_zhemm.c
index 6f0dfa920402c7a4ede74426f45ee9542ace30e9..4686a0df0fe559fa7e05ca22e22a116f067b5eb5 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,21 +75,21 @@ 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,
         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,
         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,
         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,
         sizeof(int),           &ldc,                 VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zher2k.c b/runtime/parsec/codelets/codelet_zher2k.c
index ef88ccd1f351d985f46b9d021e00c1160fe28a01..c2af9c222563080de9828b8f78e2bad313e818d3 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,
         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,
         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 | AFFINITY,
         sizeof(int),                        &ldc,      VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zherfb.c b/runtime/parsec/codelets/codelet_zherfb.c
index af42a6fd7571175d352311beedc862ba175eddc6..d50c874e3346cdf728d4a7e336b5d33e79c153c2 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 : INOUT,
         sizeof(int),        &lda,  VALUE,
-        PASSED_BY_REF,       RTBLKADDR(T, MORSE_Complex64_t, Tm, Tn), INPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(T, MORSE_Complex64_t, Tm, Tn), INPUT,
         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 : INOUT,
         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..20c78e9736c6f60be42051e5d362841e938c3fe7 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,
         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 | AFFINITY,
         sizeof(int),           &ldc,                              VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zhessq.c b/runtime/parsec/codelets/codelet_zhessq.c
index 31626fac46a922d1b17945890f6dece57d73f460..013f8e99a92d92df4b59dc0c453d49d1d7fe8713 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,14 +51,14 @@ 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,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                    INPUT,
         sizeof(int),           &lda,                VALUE,
-        PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlacpy.c b/runtime/parsec/codelets/codelet_zlacpy.c
index 3622c6ce7e5fb6fa9409f57755adfc994de3234d..6df0728bac1401e4de806c63bfe3a36fb9661b51 100644
--- a/runtime/parsec/codelets/codelet_zlacpy.c
+++ b/runtime/parsec/codelets/codelet_zlacpy.c
@@ -30,47 +30,63 @@
  *
  **/
 static int
-CORE_zlacpy_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zlacpyx_parsec(parsec_execution_stream_t *context, parsec_task_t * this_task)
 {
     MORSE_enum *uplo;
     int *M;
     int *N;
+    int *displA;
     MORSE_Complex64_t *A;
     int *LDA;
+    int *displB;
     MORSE_Complex64_t *B;
     int *LDB;
 
-    dague_dtd_unpack_args(
+    parsec_dtd_unpack_args(
         this_task,
         UNPACK_VALUE, &uplo,
         UNPACK_VALUE, &M,
         UNPACK_VALUE, &N,
+        UNPACK_VALUE, &displA,
         UNPACK_DATA,  &A,
         UNPACK_VALUE, &LDA,
+        UNPACK_VALUE, &displB,
         UNPACK_DATA,  &B,
         UNPACK_VALUE, &LDB );
 
-    CORE_zlacpy(*uplo, *M, *N, A, *LDA, B, *LDB);
+    CORE_zlacpy(*uplo, *M, *N, A + (*displA), *LDA, B + (*displB), *LDB);
 
     return 0;
 }
 
-void MORSE_TASK_zlacpy(const MORSE_option_t *options,
-                       MORSE_enum uplo, int m, int n, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int ldb)
+void MORSE_TASK_zlacpyx( const MORSE_option_t *options,
+                         MORSE_enum uplo, int m, int n, int nb,
+                         int displA, const MORSE_desc_t *A, int Am, int An, int lda,
+                         int displB, 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_zlacpyx_parsec, options->priority, "lacpy",
         sizeof(MORSE_enum),    &uplo,                      VALUE,
         sizeof(int),           &m,                         VALUE,
         sizeof(int),           &n,                         VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),   INPUT | REGION_FULL,
+        sizeof(int),           &displA,                    VALUE,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),   INPUT,
         sizeof(int),           &lda,                       VALUE,
-        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),   OUTPUT | REGION_FULL,
+        sizeof(int),           &displB,                    VALUE,
+        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),   OUTPUT,
         sizeof(int),           &ldb,                       VALUE,
         0);
 }
+
+void MORSE_TASK_zlacpy(const MORSE_option_t *options,
+                       MORSE_enum uplo, int m, int n, int nb,
+                       const MORSE_desc_t *A, int Am, int An, int lda,
+                       const MORSE_desc_t *B, int Bm, int Bn, int ldb)
+{
+    MORSE_TASK_zlacpyx( options, uplo, m, n, nb,
+                        0, A, Am, An, lda,
+                        0, B, Bm, Bn, ldb );
+}
diff --git a/runtime/parsec/codelets/codelet_zlag2c.c b/runtime/parsec/codelets/codelet_zlag2c.c
index c5d5f8337d5a8babb41cbe9508c3a08253737945..3f4e8e35193d9d15a0dc827769a2a181c8773231 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,14 +59,14 @@ 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,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT,
         sizeof(int),                        &lda,       VALUE,
-        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex32_t, Bm, Bn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex32_t, Bm, Bn ),     OUTPUT,
         sizeof(int),                        &ldb,       VALUE,
         0);
 }
@@ -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,15 +105,15 @@ 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,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex32_t, Am, An ),     INPUT,
         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,
         sizeof(int),                        &ldb,       VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlange.c b/runtime/parsec/codelets/codelet_zlange.c
index 9b7c64d035f462bcc576304b1e62b8e633d83399..25e1708a4214e4723e3e6728a83e09030cd849ab 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,30 +55,30 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT,
         sizeof(int),                   &LDA,           VALUE,
         sizeof(double)*szeW,           NULL,           SCRATCH,
-        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT,
         0);
 }
 
 #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,12 +93,12 @@ 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",
-        PASSED_BY_REF,         RTBLKADDR( A, double, Am, An ), INPUT | REGION_FULL,
-        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ), OUTPUT | REGION_FULL,
+    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,
+        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ), OUTPUT,
         0);
 }
 
diff --git a/runtime/parsec/codelets/codelet_zlanhe.c b/runtime/parsec/codelets/codelet_zlanhe.c
index ddd30b0e5ddc3614f4e2b54f1629db10754cb454..8e1f0d88d7d44d5d44080b6f33e6143821ff4e16 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,18 +55,18 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT,
         sizeof(int),                   &LDA,           VALUE,
         sizeof(double)*szeW,           NULL,           SCRATCH,
-        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlansy.c b/runtime/parsec/codelets/codelet_zlansy.c
index 44a685cb1bed310a1f92e20bf6165fb1a2944990..798405211e38cb4f576173bdb7ce50ffa37bd38b 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,18 +55,18 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT,
         sizeof(int),                   &LDA,           VALUE,
         sizeof(double)*szeW,           NULL,           SCRATCH,
-        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlantr.c b/runtime/parsec/codelets/codelet_zlantr.c
index fbff2acfd990089c420b7a015ff15b692aabd20e..18dea9797275505d5c29cf81b7e5d77df43c541e 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,20 +58,20 @@ 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,
         sizeof(int),                   &M,             VALUE,
         sizeof(int),                   &N,             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,
         sizeof(int),                   &LDA,           VALUE,
         sizeof(double)*szeW,           NULL,           SCRATCH,
-        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlascal.c b/runtime/parsec/codelets/codelet_zlascal.c
index f82b08c7e757104709c252d8e036db85c6205803..3bb8c7d3f29ea5de578bf2f1caf9b9b1fd9971b1 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,15 +67,15 @@ 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,
         sizeof(MORSE_Complex64_t), &alpha, 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,
         sizeof(int),               &lda,   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlaset.c b/runtime/parsec/codelets/codelet_zlaset.c
index c6d182fd627a092dbfcad13d1d54a451188d8264..01d3bb02007a98cd71929d2583654d16046c493e 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,16 +90,16 @@ 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,
         sizeof(MORSE_Complex64_t),       &alpha,       VALUE,
         sizeof(MORSE_Complex64_t),       &beta,        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,
         sizeof(int),                     &LDA,         VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlaset2.c b/runtime/parsec/codelets/codelet_zlaset2.c
index 5c1a7bc4b4b7a59efad913d08268414e1f92dce1..625fefcfbc598c4d12feb255d47f1b096b159f94 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,15 +85,15 @@ 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,
         sizeof(MORSE_enum),                &alpha,     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,
         sizeof(int),                       &LDA,       VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlatro.c b/runtime/parsec/codelets/codelet_zlatro.c
index 40955c79670181d8e365a6f07255bfb80a605904..ecb990962165b3d07d05c74d0501af21924dbc00 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,17 +62,17 @@ 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,
         sizeof(int),        &n,     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 ,
         sizeof(int),        &lda,   VALUE,
-        PASSED_BY_REF,       RTBLKADDR(B, MORSE_Complex64_t, Bm, Bn), OUTPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(B, MORSE_Complex64_t, Bm, Bn), OUTPUT,
         sizeof(int),        &ldb,   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlauum.c b/runtime/parsec/codelets/codelet_zlauum.c
index 286d01d0af287e5aa1ef5e3f2d0f2825c50525f7..4eb005b4bba588bce55474cb924cec128f84b887 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,13 +53,13 @@ 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,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT,
         sizeof(int),           &lda,                   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zpamm.c b/runtime/parsec/codelets/codelet_zpamm.c
index b5f4cda49606035c703b443557e73c4537a55563..f9efc2d028c241f3f4f250f33188490e78c43301 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,
@@ -230,13 +230,13 @@ MORSE_TASK_zpamm(const MORSE_option_t *options,
         sizeof(int),                        &n,                 VALUE,
         sizeof(int),                        &k,                 VALUE,
         sizeof(int),                        &l,                 VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INPUT,
         sizeof(int),                        &lda1,              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT,
         sizeof(int),                        &lda2,              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),        INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),        INPUT,
         sizeof(int),                        &ldv,               VALUE,
-        PASSED_BY_REF,         RTBLKADDR( W, MORSE_Complex64_t, Wm, Wn ),        INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( W, MORSE_Complex64_t, Wm, Wn ),        INOUT,
         sizeof(int),                        &ldw,               VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zplghe.c b/runtime/parsec/codelets/codelet_zplghe.c
index b14fdd87da7aa5acd01509f48ee63aaabdf78b6b..6883fd6e131e75f7b5f25751aa3a0bf1471af4cb 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 | 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..6ed9e709d69fb2c5b3dd3b3ab35647c62309403d 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 | 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..b0e21a698c848d988b1de2197f22ef6be457a658 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,13 +56,13 @@ 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,
+        PASSED_BY_REF,     RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     OUTPUT,
         sizeof(int),       &lda,                        VALUE,
         sizeof(int),       &bigM,                       VALUE,
         sizeof(int),       &m0,                         VALUE,
diff --git a/runtime/parsec/codelets/codelet_zplssq.c b/runtime/parsec/codelets/codelet_zplssq.c
index a68abc47d5d1881b4dce8a8e90dee964e1d67265..858ce90bd3b7925e84a20cd986d38446265cdc0b 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",
-        PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INPUT | REGION_FULL,
-        PASSED_BY_REF,         RTBLKADDR( SCLSSQ, double, SCLSSQm, SCLSSQn ),                INOUT | REGION_FULL,
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zplssq_parsec, options->priority, "plssq",
+        PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INPUT,
+        PASSED_BY_REF,         RTBLKADDR( SCLSSQ, double, SCLSSQm, SCLSSQn ),                INOUT,
         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",
-        PASSED_BY_REF,         RTBLKADDR( RESULT, double, RESULTm, RESULTn ),     INOUT | REGION_FULL,
+    parsec_dtd_taskpool_insert_task(
+        PARSEC_dtd_taskpool, CORE_zplssq2_parsec, options->priority, "plssq2",
+        PASSED_BY_REF,         RTBLKADDR( RESULT, double, RESULTm, RESULTn ),     INOUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zpotrf.c b/runtime/parsec/codelets/codelet_zpotrf.c
index 1e1976c1eec20ab278a857d3eb0a80e590d6682e..b13f687b74d84e9f17ee8643b0903f5332b841b4 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 | 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..1285a3511f228eb718018e00d50bfa78f6d2ab7b 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,23 +74,23 @@ 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,
         sizeof(int),           &n2,                                VALUE,
         sizeof(int),           &k,                                 VALUE,
         sizeof(int),           &ib,                                VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT,
         sizeof(int),           &lda1,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT,
         sizeof(int),           &lda2,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( L1, MORSE_Complex64_t, L1m, L1n ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( L1, MORSE_Complex64_t, L1m, L1n ),     INPUT,
         sizeof(int),           &ldl1,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( L2, MORSE_Complex64_t, L2m, L2n ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( L2, MORSE_Complex64_t, L2m, L2n ),     INPUT,
         sizeof(int),           &ldl2,                              VALUE,
         sizeof(int)*nb,        IPIV,                               SCRATCH,
         0);
diff --git a/runtime/parsec/codelets/codelet_zsymm.c b/runtime/parsec/codelets/codelet_zsymm.c
index f8a8383f01e6225aa6ca79870316e3b375b149d7..8d2db549d27eaba5dcec1ce41e728c1876c89601 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,21 +70,21 @@ 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,
         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,
         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,
         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,
         sizeof(int),            &ldc,               VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zsyr2k.c b/runtime/parsec/codelets/codelet_zsyr2k.c
index 160ff5e7d4c933cc6796c91fc3dd983c4b00d37a..33d326d37d43674c6cc5fb1a9030d0e4216800d4 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,
         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,
         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 | AFFINITY,
         sizeof(int),            &ldc,                   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zsyrk.c b/runtime/parsec/codelets/codelet_zsyrk.c
index 82baa3b13a3d0a18ea1e4421830b784b9838913e..4ff939ef2f1f9b3060a0bea9df1edb98b5901b2f 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,
         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 | AFFINITY,
         sizeof(int),           &ldc,                               VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zsyssq.c b/runtime/parsec/codelets/codelet_zsyssq.c
index 307268caa0122c1a875c8301bfb5a467e9a3e647..56c424bc5e42bce23d3d61809af3530391875c5d 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,14 +51,14 @@ 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,
+        PASSED_BY_REF,          RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                               INPUT,
         sizeof(int),            &lda,                   VALUE,
-        PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_zsytrf_nopiv.c b/runtime/parsec/codelets/codelet_zsytrf_nopiv.c
index 08c8894aea87dc82182d3abb7b75a10725e3f4c2..229582c8e74131f967380d2d313e62677400a5cb 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,13 +52,13 @@ 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,
+        PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT,
         sizeof(int),                     &lda,                 VALUE,
         sizeof(int),                     &iinfo,               VALUE,
         0);
diff --git a/runtime/parsec/codelets/codelet_ztile_zero.c b/runtime/parsec/codelets/codelet_ztile_zero.c
index 5bb42168cd9a35abc2e095d6864939b8e6f7b994..8cce3597bbcb2edddcf673a49d35dafdd7d7d7f3 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,15 +55,15 @@ 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,
         sizeof(int),       &Y2,                       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,
         sizeof(int),       &lda,                      VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztpmqrt.c b/runtime/parsec/codelets/codelet_ztpmqrt.c
index 4b9c869ba68fb862b9b36ab42bc44c55cb5cba57..e718cd140f1933f658cce390f96f163aeb463fc5 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,
@@ -91,13 +91,13 @@ void MORSE_TASK_ztpmqrt( const MORSE_option_t *options,
         sizeof(int),        &K,     VALUE,
         sizeof(int),        &L,     VALUE,
         sizeof(int),        &ib,    VALUE,
-        PASSED_BY_REF,       RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ), INPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ), INPUT,
         sizeof(int),        &ldv,   VALUE,
-        PASSED_BY_REF,       RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ), INPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ), INPUT,
         sizeof(int),        &ldt,   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,
         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,
         sizeof(int),        &ldb,   VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb, NULL, SCRATCH,
         0);
diff --git a/runtime/parsec/codelets/codelet_ztpqrt.c b/runtime/parsec/codelets/codelet_ztpqrt.c
index e866833544f6af2acf022fb1fc9860093cdf773e..9cd3fb736e0a446d6dad2362f5c09553749d5bd9 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,19 +68,19 @@ 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,
         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,
         sizeof(int),   &ldb, VALUE,
-        PASSED_BY_REF,  RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ), OUTPUT | REGION_FULL,
+        PASSED_BY_REF,  RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ), OUTPUT,
         sizeof(int),   &ldt, VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb, NULL, SCRATCH,
         0);
diff --git a/runtime/parsec/codelets/codelet_ztradd.c b/runtime/parsec/codelets/codelet_ztradd.c
index 7490dfbf94eceaaeaf5c8fe48e24988051aa6cf7..a9083f43d71866f41f46b1f6629537302bbe00d6 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,19 +125,19 @@ 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,
         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,
         sizeof(int),               &lda,   VALUE,
         sizeof(MORSE_Complex64_t), &beta,  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,
         sizeof(int),               &ldb,   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrasm.c b/runtime/parsec/codelets/codelet_ztrasm.c
index 66327f9710d034850aabc3eb3be6006d1a84975e..375abb2d2009a0db2e011f0e03d42c110c3765d3 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,17 +57,17 @@ 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,
         sizeof(int),            &M,                     VALUE,
         sizeof(int),            &N,                     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,
         sizeof(int),            &lda,                   VALUE,
-        PASSED_BY_REF,          RTBLKADDR( B, double, Bm, Bn ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( B, double, Bm, Bn ),     INOUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrmm.c b/runtime/parsec/codelets/codelet_ztrmm.c
index baae850c13adbecb11f06db9308647962ec9df04..fa2787109872de445d4cef98511a1fb401ec24c4 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,
@@ -79,9 +79,9 @@ void MORSE_TASK_ztrmm(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,
         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,
         sizeof(int),            &ldb,                   VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrsm.c b/runtime/parsec/codelets/codelet_ztrsm.c
index b22d0184e9c213dc3d7c8e6e3a88b13cb499f07d..08520db9ac51cbf5bf07a4ff3c09343c6e87b344 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,
         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 | AFFINITY,
         sizeof(int),           &ldb,                      VALUE,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrssq.c b/runtime/parsec/codelets/codelet_ztrssq.c
index 5ec51a99de4e8d298e82f76a5fddede5821d6673..6cef470bdb9193efd8c9ea1aba28514baf44d0eb 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,16 +56,16 @@ 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,
         sizeof(int),            &n,                     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,
         sizeof(int),            &lda,                   VALUE,
-        PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT,
         0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrtri.c b/runtime/parsec/codelets/codelet_ztrtri.c
index 29aeb28f5ff1bed145d4d678fcd4b09cf576a2af..34b2c2d58dcdf18e3cdefccfc651ec56f1e2a49f 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,14 +55,14 @@ 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,
-        PASSED_BY_REF,              RTBLKADDR( A, MORSE_Complex64_t, Am, An ),   INOUT | REGION_FULL,
+        PASSED_BY_REF,              RTBLKADDR( A, MORSE_Complex64_t, Am, An ),   INOUT,
         sizeof(int),                &lda,                   VALUE,
         sizeof(int),                &iinfo,                 VALUE,
         0);
diff --git a/runtime/parsec/codelets/codelet_ztslqt.c b/runtime/parsec/codelets/codelet_ztslqt.c
index 8f01e5ca6c8f6268798e1abc059905bf4142ae70..67587b73e1a5024e145e56cac62719345dd8a43f 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,18 +64,18 @@ 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,
-        PASSED_BY_REF,          RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT,
         sizeof(int),            &lda1,                  VALUE,
-        PASSED_BY_REF,          RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT,
         sizeof(int),            &lda2,                  VALUE,
-        PASSED_BY_REF,          RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        OUTPUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        OUTPUT,
         sizeof(int),                        &ldt,       VALUE,
         sizeof(MORSE_Complex64_t)*nb,       NULL,       SCRATCH,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,       SCRATCH,
diff --git a/runtime/parsec/codelets/codelet_ztsmlq.c b/runtime/parsec/codelets/codelet_ztsmlq.c
index 48e2488155200d0d83b07a945b51bc70690a748e..57a596dfaa9564647d60bf9ce033fe1259491cc3 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,
@@ -95,13 +95,13 @@ void MORSE_TASK_ztsmlq(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_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),  INOUT,
         sizeof(int),           &lda1,                   VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),  INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),  INOUT,
         sizeof(int),           &lda2,                   VALUE,
-        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),     INPUT,
         sizeof(int),           &ldv,                    VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     INPUT,
         sizeof(int),           &ldt,                    VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,       SCRATCH,
         sizeof(int),           &ldwork,                 VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsmlq_hetra1.c b/runtime/parsec/codelets/codelet_ztsmlq_hetra1.c
index 022a827d35cb622534fb4e020aeb52835c8c5a83..13fe37a0b2499744f2b5b3d6a5f9c60788ca326e 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,13 +100,13 @@ 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,
         sizeof(int),        &lda1,   VALUE,
-        PASSED_BY_REF,       RTBLKADDR(A2, MORSE_Complex64_t, A2m, A2n), INOUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(A2, MORSE_Complex64_t, A2m, A2n), INOUT,
         sizeof(int),        &lda2,   VALUE,
-        PASSED_BY_REF,       RTBLKADDR(V,  MORSE_Complex64_t, Vm,  Vn),  INPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(V,  MORSE_Complex64_t, Vm,  Vn),  INPUT,
         sizeof(int),        &ldv,    VALUE,
-        PASSED_BY_REF,       RTBLKADDR(T,  MORSE_Complex64_t, Tm,  Tn),  INPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(T,  MORSE_Complex64_t, Tm,  Tn),  INPUT,
         sizeof(int),        &ldt,    VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb, NULL, SCRATCH,
         sizeof(int),        &ldwork, VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsmqr.c b/runtime/parsec/codelets/codelet_ztsmqr.c
index 93946fbc320b93a9153db6eaff7228fb5671094b..f6edb0f5fb16ce00482d08ce683f796f1e2ef500 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,
@@ -95,13 +95,13 @@ void MORSE_TASK_ztsmqr(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_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),    INOUT,
         sizeof(int),           &lda1,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),    INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),    INOUT,
         sizeof(int),           &lda2,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),       INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),       INPUT,
         sizeof(int),           &ldv,                               VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),       INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),       INPUT,
         sizeof(int),           &ldt,                               VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,                  SCRATCH,
         sizeof(int),           &ldwork,                            VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsmqr_hetra1.c b/runtime/parsec/codelets/codelet_ztsmqr_hetra1.c
index 3a300a38b2e553fca68f1314317184785270c390..9fe6acb6a2dbd3bb9070ad1256201dca1db877ec 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,13 +100,13 @@ 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,
         sizeof(int),        &lda1,   VALUE,
-        PASSED_BY_REF,       RTBLKADDR(A2, MORSE_Complex64_t, A2m, A2n), INOUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(A2, MORSE_Complex64_t, A2m, A2n), INOUT,
         sizeof(int),        &lda2,   VALUE,
-        PASSED_BY_REF,       RTBLKADDR(V,  MORSE_Complex64_t, Vm,  Vn),  INPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(V,  MORSE_Complex64_t, Vm,  Vn),  INPUT,
         sizeof(int),        &ldv,    VALUE,
-        PASSED_BY_REF,       RTBLKADDR(T,  MORSE_Complex64_t, Tm,  Tn),  INPUT | REGION_FULL,
+        PASSED_BY_REF,       RTBLKADDR(T,  MORSE_Complex64_t, Tm,  Tn),  INPUT,
         sizeof(int),        &ldt,    VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb, NULL, SCRATCH,
         sizeof(int),        &ldwork, VALUE,
diff --git a/runtime/parsec/codelets/codelet_ztsqrt.c b/runtime/parsec/codelets/codelet_ztsqrt.c
index 8514230a620b72a43658f4546f77cea0d1a2b80e..19ce9c24444d52a094e67cbcb51b21c5523a558b 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,18 +64,18 @@ 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,
         sizeof(int),           &lda1,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT,
         sizeof(int),           &lda2,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        OUTPUT,
         sizeof(int),           &ldt,                               VALUE,
         sizeof(MORSE_Complex64_t)*nb,       NULL,                  SCRATCH,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,                  SCRATCH,
diff --git a/runtime/parsec/codelets/codelet_ztstrf.c b/runtime/parsec/codelets/codelet_ztstrf.c
index bb13778e756a759c9942bc605122c4833209866d..69504ff4278620d586140844beeb5fcfcf499803 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,19 +76,19 @@ 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,
         sizeof(int),           &nb,                               VALUE,
-        PASSED_BY_REF,         RTBLKADDR( U, MORSE_Complex64_t, Um, Un ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( U, MORSE_Complex64_t, Um, Un ),     INOUT,
         sizeof(int),           &ldu,                              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,
         sizeof(int),           &lda,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( L, MORSE_Complex64_t, Lm, Ln ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( L, MORSE_Complex64_t, Lm, Ln ),     OUTPUT,
         sizeof(int),           &ldl,                              VALUE,
         sizeof(int)*nb,        IPIV,                              SCRATCH,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,                 SCRATCH,
diff --git a/runtime/parsec/codelets/codelet_zttlqt.c b/runtime/parsec/codelets/codelet_zttlqt.c
index 5123cb2193b1e843b1f0318c53aa16fa3b64ce36..67f6b7105a074379b54766d6258ec50a41c0a7f8 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,18 +65,18 @@ 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,
-        PASSED_BY_REF,          RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),    INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),    INOUT,
         sizeof(int),            &lda1,                  VALUE,
-        PASSED_BY_REF,          RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),    INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),    INOUT,
         sizeof(int),            &lda2,                  VALUE,
-        PASSED_BY_REF,          RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),       OUTPUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),       OUTPUT,
         sizeof(int),            &ldt,                   VALUE,
         sizeof(MORSE_Complex64_t)*nb,       NULL,       SCRATCH,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,       SCRATCH,
diff --git a/runtime/parsec/codelets/codelet_zttmlq.c b/runtime/parsec/codelets/codelet_zttmlq.c
index 3dba39bb715e3a12fa3ef88041eea0a1060b38a2..53c6f379dee8b518d08dd2a7ccc1371099279d73 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,
@@ -95,13 +95,13 @@ void MORSE_TASK_zttmlq(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_FULL,
+        PASSED_BY_REF,          RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),    INOUT,
         sizeof(int),            &lda1,                      VALUE,
-        PASSED_BY_REF,          RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),    INOUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),    INOUT,
         sizeof(int),            &lda2,                      VALUE,
-        PASSED_BY_REF,          RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),       INPUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),       INPUT,
         sizeof(int),            &ldv,                       VALUE,
-        PASSED_BY_REF,          RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),       INPUT | REGION_FULL,
+        PASSED_BY_REF,          RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),       INPUT,
         sizeof(int),            &ldt,                       VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,           SCRATCH,
         sizeof(int),            &ldwork,                    VALUE,
diff --git a/runtime/parsec/codelets/codelet_zttmqr.c b/runtime/parsec/codelets/codelet_zttmqr.c
index b2e2cf45e0f4bd34d9d5e141c73d67a17678a94e..70bde8c14c6a399d43d15403fb761a90c29292b3 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,
@@ -96,13 +96,13 @@ void MORSE_TASK_zttmqr(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_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT,
         sizeof(int),           &lda1,                             VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT,
         sizeof(int),           &lda2,                             VALUE,
-        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),        INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( V, MORSE_Complex64_t, Vm, Vn ),        INPUT,
         sizeof(int),           &ldv,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        INPUT,
         sizeof(int),           &ldt,                              VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,                           SCRATCH,
         sizeof(int),           &ldwork,                           VALUE,
diff --git a/runtime/parsec/codelets/codelet_zttqrt.c b/runtime/parsec/codelets/codelet_zttqrt.c
index a2cbf8749852766fc5ab3138266172d88b82097b..baab70c86b891fa0561fec7857250dd8257744d7 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,18 +64,18 @@ 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,
-        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A1, MORSE_Complex64_t, A1m, A1n ),     INOUT,
         sizeof(int),           &lda1,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( A2, MORSE_Complex64_t, A2m, A2n ),     INOUT,
         sizeof(int),           &lda2,                              VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),        OUTPUT,
         sizeof(int),           &ldt,                               VALUE,
         sizeof(MORSE_Complex64_t)*nb,       NULL,                  SCRATCH,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,                  SCRATCH,
diff --git a/runtime/parsec/codelets/codelet_zunmlq.c b/runtime/parsec/codelets/codelet_zunmlq.c
index b48855d2011771ca0b4e0d58efc3c96928888cf2..e590f329b18e0c5626a9c5dc2d284059539b853b 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,21 +72,21 @@ 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,
         sizeof(int),                        &n,                 VALUE,
         sizeof(int),                        &k,                 VALUE,
         sizeof(int),                        &ib,                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,
         sizeof(int),                        &lda,               VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     INPUT,
         sizeof(int),                        &ldt,               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,
         sizeof(int),                        &ldc,               VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb,    NULL,               SCRATCH,
         sizeof(int),                        &nb,                VALUE,
diff --git a/runtime/parsec/codelets/codelet_zunmqr.c b/runtime/parsec/codelets/codelet_zunmqr.c
index f0cbf7ce45370bdc4c619e62e786960688ad0ccf..58ace163909e06dac4338b10384e7f55b0a236ff 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,21 +72,21 @@ 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,
         sizeof(int),           &lda,                               VALUE,
-        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     INPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( T, MORSE_Complex64_t, Tm, Tn ),     INPUT,
         sizeof(int),           &ldt,                               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,
         sizeof(int),           &ldc,                               VALUE,
         sizeof(MORSE_Complex64_t)*ib*nb,   NULL,                   SCRATCH,
         sizeof(int),           &nb,                                VALUE,
diff --git a/runtime/parsec/control/runtime_async.c b/runtime/parsec/control/runtime_async.c
index 8941100d1a5ff3e99eb62207576fae05f6561761..7df5d0bcf2b086a2c6e28c2b3136a150a3a555d8 100644
--- a/runtime/parsec/control/runtime_async.c
+++ b/runtime/parsec/control/runtime_async.c
@@ -15,15 +15,14 @@
  **/
 int RUNTIME_sequence_create(MORSE_context_t *morse, MORSE_sequence_t *sequence)
 {
-    dague_context_t    *dague = (dague_context_t *)morse->schedopt;
-    dague_dtd_handle_t *dague_dtd_handle = dague_dtd_handle_new((dague_context_t *)morse->schedopt);
+    parsec_context_t  *parsec        = (parsec_context_t *)morse->schedopt;
+    parsec_taskpool_t *parsec_dtd_tp = parsec_dtd_taskpool_new();
 
-    dague_enqueue(dague, (dague_handle_t*) dague_dtd_handle);
-    sequence->schedopt = dague_dtd_handle;
+    parsec_enqueue(parsec, (parsec_taskpool_t *) parsec_dtd_tp);
+    sequence->schedopt = parsec_dtd_tp;
+
+    parsec_context_start(parsec);
 
-#if defined (OVERLAP)
-    dague_context_start(dague);
-#endif
     return MORSE_SUCCESS;
 }
 
@@ -32,14 +31,18 @@ int RUNTIME_sequence_create(MORSE_context_t *morse, MORSE_sequence_t *sequence)
  **/
 int RUNTIME_sequence_destroy(MORSE_context_t *morse, MORSE_sequence_t *sequence)
 {
-    dague_context_t    *dague = (dague_context_t *)morse->schedopt;
-    dague_dtd_handle_t *dague_dtd_handle = (dague_dtd_handle_t *) sequence->schedopt;
+    parsec_context_t  *parsec = (parsec_context_t *)morse->schedopt;
+    parsec_taskpool_t *parsec_dtd_tp = (parsec_taskpool_t *) sequence->schedopt;
     (void)morse;
 
-    assert( dague_dtd_handle );
+    assert( parsec_dtd_tp );
+
+    // TODO: switch to a partial wait
+    //parsec_dtd_taskpool_wait(parsec, parsec_dtd_tp);
+    parsec_context_wait(parsec);
+
+    parsec_taskpool_free(parsec_dtd_tp);
 
-    dague_dtd_context_wait_on_handle(dague, dague_dtd_handle);
-    dague_dtd_handle_destruct(dague_dtd_handle);
     sequence->schedopt = NULL;
     return MORSE_SUCCESS;
 }
@@ -49,12 +52,12 @@ int RUNTIME_sequence_destroy(MORSE_context_t *morse, MORSE_sequence_t *sequence)
  **/
 int RUNTIME_sequence_wait(MORSE_context_t *morse, MORSE_sequence_t *sequence )
 {
-    dague_context_t    *dague = (dague_context_t *)morse->schedopt;
-    dague_dtd_handle_t *dague_dtd_handle = (dague_dtd_handle_t *) sequence->schedopt;
+    parsec_context_t  *parsec = (parsec_context_t *)morse->schedopt;
+    parsec_taskpool_t *parsec_dtd_tp = (parsec_taskpool_t *) sequence->schedopt;
 
-    assert( dague_dtd_handle );
+    assert( parsec_dtd_tp );
 
-    dague_dtd_handle_wait(dague, dague_dtd_handle);
+    parsec_dtd_taskpool_wait(parsec, parsec_dtd_tp);
 
     return MORSE_SUCCESS;
 }
@@ -64,7 +67,7 @@ int RUNTIME_sequence_wait(MORSE_context_t *morse, MORSE_sequence_t *sequence )
  **/
 void RUNTIME_sequence_flush(void *schedopt, MORSE_sequence_t *sequence, MORSE_request_t *request, int status)
 {
-    dague_context_t *dague = (dague_context_t *)schedopt;
+    parsec_context_t *parsec = (parsec_context_t *)schedopt;
     (void)schedopt;
     sequence->request = request;
     sequence->status = status;
diff --git a/runtime/parsec/control/runtime_control.c b/runtime/parsec/control/runtime_control.c
index 14527d2857b25ed2c0f42d014c7d580a06ed7d51..5efcbcde57db74cfa0208db8d757c3e75edaf177 100644
--- a/runtime/parsec/control/runtime_control.c
+++ b/runtime/parsec/control/runtime_control.c
@@ -11,6 +11,10 @@
 #include <stdlib.h>
 #include "chameleon_parsec.h"
 
+#if defined(CHAMELEON_USE_MPI)
+#include <mpi.h>
+#endif
+
 /*******************************************************************************
  * Thread rank.
  **/
@@ -28,13 +32,13 @@ int RUNTIME_init_scheduler(MORSE_context_t *morse, int nworkers, int ncudas, int
     int *argc = (int *)malloc(sizeof(int));
     *argc = 0;
 
-    /* Initializing dague context */
+    /* Initializing parsec context */
     if( 0 < nworkers ) {
         default_ncores = nworkers;
     }
     morse->parallel_enabled = MORSE_TRUE;
-    morse->schedopt = (void *)dague_init(default_ncores, argc, NULL);
-    dague_dtd_init();
+    morse->schedopt = (void *)parsec_init(default_ncores, argc, NULL);
+
     if(NULL != morse->schedopt) {
         morse->nworkers = nworkers;
         morse->nthreads_per_worker = nthreads_per_worker;
@@ -50,9 +54,8 @@ int RUNTIME_init_scheduler(MORSE_context_t *morse, int nworkers, int ncudas, int
  */
 void RUNTIME_finalize_scheduler(MORSE_context_t *morse)
 {
-    dague_context_t *dague = (dague_context_t*)morse->schedopt;
-    dague_dtd_fini();
-    dague_fini(&dague);
+    parsec_context_t *parsec = (parsec_context_t*)morse->schedopt;
+    parsec_fini(&parsec);
     return;
 }
 
@@ -61,9 +64,9 @@ void RUNTIME_finalize_scheduler(MORSE_context_t *morse)
  **/
 void RUNTIME_barrier(MORSE_context_t *morse)
 {
-    dague_context_t *dague = (dague_context_t*)morse->schedopt;
+    parsec_context_t *parsec = (parsec_context_t*)morse->schedopt;
     // This will be a problem with the fake tasks inserted to detect end of DTD algorithms
-    //dague_context_wait( dague );
+    //parsec_context_wait( parsec );
     return;
 }
 
@@ -131,5 +134,7 @@ void RUNTIME_comm_size( int *size )
  **/
 int RUNTIME_get_thread_nbr()
 {
-    return vpmap_get_nb_total_threads();
+    // TODO: fixme
+    //return vpmap_get_nb_total_threads();
+    return 0;
 }
diff --git a/runtime/parsec/control/runtime_descriptor.c b/runtime/parsec/control/runtime_descriptor.c
index 10f107ef070cd7251cb7808ba5bf69f1fdae1824..be513a3eabc39e37b9c7e68faa17646aad5af9ad 100644
--- a/runtime/parsec/control/runtime_descriptor.c
+++ b/runtime/parsec/control/runtime_descriptor.c
@@ -9,7 +9,11 @@
  **/
 #include <stdlib.h>
 #include "chameleon_parsec.h"
-#include <dague/data.h>
+#include <parsec/data.h>
+#include <parsec/datatype.h>
+#include <parsec/arena.h>
+
+static int parsec_global_arena_index = 0;
 
 void RUNTIME_user_tag_size(int user_tag_width, int user_tag_sep) {
   (void)user_tag_width;
@@ -29,16 +33,17 @@ void RUNTIME_mat_free( void *mat, size_t size)
 }
 
 struct morse_parsec_desc_s {
-    dague_ddesc_t  super;
+    parsec_data_collection_t  super;
     MORSE_desc_t  *desc;
-    dague_data_t **data_map;
+    parsec_data_t **data_map;
+    int arena_index;
 };
 
 static void
-morse_parsec_key_to_coordinates(dague_ddesc_t *ddesc, dague_data_key_t key,
+morse_parsec_key_to_coordinates(parsec_data_collection_t *data_collection, parsec_data_key_t key,
                                 int *m, int *n)
 {
-    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)ddesc;
+    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)data_collection;
     MORSE_desc_t *mdesc = pdesc->desc;
     int _m, _n;
 
@@ -48,16 +53,16 @@ morse_parsec_key_to_coordinates(dague_ddesc_t *ddesc, dague_data_key_t key,
     *n = _n - mdesc->j / mdesc->nb;
 }
 
-static dague_data_key_t
-morse_parsec_data_key(dague_ddesc_t *ddesc, ...)
+static parsec_data_key_t
+morse_parsec_data_key(parsec_data_collection_t *data_collection, ...)
 {
-    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)ddesc;
+    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)data_collection;
     MORSE_desc_t *mdesc = pdesc->desc;
     va_list ap;
     int m, n;
 
     /* Get coordinates */
-    va_start(ap, ddesc);
+    va_start(ap, data_collection);
     m = va_arg(ap, unsigned int);
     n = va_arg(ap, unsigned int);
     va_end(ap);
@@ -70,15 +75,15 @@ morse_parsec_data_key(dague_ddesc_t *ddesc, ...)
 }
 
 static uint32_t
-morse_parsec_rank_of(dague_ddesc_t *ddesc, ...)
+morse_parsec_rank_of(parsec_data_collection_t *data_collection, ...)
 {
-    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)ddesc;
+    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)data_collection;
     MORSE_desc_t *mdesc = pdesc->desc;
     va_list ap;
     int m, n;
 
     /* Get coordinates */
-    va_start(ap, ddesc);
+    va_start(ap, data_collection);
     m = va_arg(ap, unsigned int);
     n = va_arg(ap, unsigned int);
     va_end(ap);
@@ -91,37 +96,37 @@ morse_parsec_rank_of(dague_ddesc_t *ddesc, ...)
 }
 
 static uint32_t
-morse_parsec_rank_of_key(dague_ddesc_t *ddesc, dague_data_key_t key)
+morse_parsec_rank_of_key(parsec_data_collection_t *data_collection, parsec_data_key_t key)
 {
     int m, n;
-    morse_parsec_key_to_coordinates(ddesc, key, &m, &n);
-    return morse_parsec_rank_of(ddesc, m, n);
+    morse_parsec_key_to_coordinates(data_collection, key, &m, &n);
+    return morse_parsec_rank_of(data_collection, m, n);
 }
 
 static int32_t
-morse_parsec_vpid_of(dague_ddesc_t *ddesc, ...)
+morse_parsec_vpid_of(parsec_data_collection_t *data_collection, ...)
 {
     return 0;
 }
 
 static int32_t
-morse_parsec_vpid_of_key(dague_ddesc_t *ddesc, dague_data_key_t key)
+morse_parsec_vpid_of_key(parsec_data_collection_t *data_collection, parsec_data_key_t key)
 {
     int m, n;
-    morse_parsec_key_to_coordinates(ddesc, key, &m, &n);
-    return morse_parsec_vpid_of(ddesc, m, n);
+    morse_parsec_key_to_coordinates(data_collection, key, &m, &n);
+    return morse_parsec_vpid_of(data_collection, m, n);
 }
 
-static dague_data_t*
-morse_parsec_data_of(dague_ddesc_t *ddesc, ...)
+static parsec_data_t*
+morse_parsec_data_of(parsec_data_collection_t *data_collection, ...)
 {
-    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)ddesc;
+    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)data_collection;
     MORSE_desc_t *mdesc = pdesc->desc;
     va_list ap;
     int m, n;
 
     /* Get coordinates */
-    va_start(ap, ddesc);
+    va_start(ap, data_collection);
     m = va_arg(ap, unsigned int);
     n = va_arg(ap, unsigned int);
     va_end(ap);
@@ -132,39 +137,39 @@ morse_parsec_data_of(dague_ddesc_t *ddesc, ...)
 
 #if defined(CHAMELEON_USE_MPI)
     /* TODO: change displacement in data_map when in distributed */
-    assert( mdesc->nodes == 1 );
+    //assert( data_collection->nodes == 1 );
 #endif
-    return dague_data_create( pdesc->data_map + n * mdesc->lmt + m, ddesc,
-                              morse_parsec_data_key( ddesc, m, n ),
+    return parsec_data_create( pdesc->data_map + n * mdesc->lmt + m, data_collection,
+                              morse_parsec_data_key( data_collection, m, n ),
                               mdesc->get_blkaddr( mdesc, m, n ),
                               mdesc->bsiz * MORSE_Element_Size(mdesc->dtyp) );
 }
 
-static dague_data_t*
-morse_parsec_data_of_key(dague_ddesc_t *ddesc, dague_data_key_t key)
+static parsec_data_t*
+morse_parsec_data_of_key(parsec_data_collection_t *data_collection, parsec_data_key_t key)
 {
-    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)ddesc;
+    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)data_collection;
     MORSE_desc_t *mdesc = pdesc->desc;
     int m, n;
-    morse_parsec_key_to_coordinates(ddesc, key, &m, &n);
+    morse_parsec_key_to_coordinates(data_collection, key, &m, &n);
 
 #if defined(CHAMELEON_USE_MPI)
     /* TODO: change displacement in data_map when in distributed */
-    assert( mdesc->nodes == 1 );
+    //assert( data_collection->nodes == 1 );
 #endif
-    return dague_data_create( pdesc->data_map + key, ddesc, key,
+    return parsec_data_create( pdesc->data_map + key, data_collection, key,
                               mdesc->get_blkaddr( mdesc, m, n ),
                               mdesc->bsiz * MORSE_Element_Size(mdesc->dtyp) );
 }
 
-#ifdef DAGUE_PROF_TRACE
+#ifdef parsec_PROF_TRACE
 static int
-morse_parsec_key_to_string(dague_ddesc_t *ddesc, dague_data_key_t key, char * buffer, uint32_t buffer_size)
+morse_parsec_key_to_string(parsec_data_collection_t *data_collection, parsec_data_key_t key, char * buffer, uint32_t buffer_size)
 {
-    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)ddesc;
+    morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)data_collection;
     MORSE_desc_t *mdesc = pdesc->desc;
     int m, n, res;
-    morse_parsec_key_to_coordinates(ddesc, key, &m, &n);
+    morse_parsec_key_to_coordinates(data_collection, key, &m, &n);
     res = snprintf(buffer, buffer_size, "(%d, %d)", m, n);
     if (res < 0)
     {
@@ -182,42 +187,44 @@ void RUNTIME_desc_init( MORSE_desc_t *mdesc )
 
 void RUNTIME_desc_create( MORSE_desc_t *mdesc )
 {
-    dague_ddesc_t       *ddesc;
+    parsec_data_collection_t       *data_collection;
     morse_parsec_desc_t *pdesc;
     int comm_size;
 
     pdesc = malloc( sizeof(morse_parsec_desc_t) );
-    ddesc = (dague_ddesc_t*)pdesc;
+    data_collection = (parsec_data_collection_t*)pdesc;
 
     /* Super setup */
     RUNTIME_comm_size( &comm_size );
-    ddesc->nodes  = comm_size;
-    ddesc->myrank = mdesc->myrank;
-
-    ddesc->data_key    = morse_parsec_data_key;
-    ddesc->rank_of     = morse_parsec_rank_of;
-    ddesc->rank_of_key = morse_parsec_rank_of_key;
-    ddesc->data_of     = morse_parsec_data_of;
-    ddesc->data_of_key = morse_parsec_data_of_key;
-    ddesc->vpid_of     = morse_parsec_vpid_of;
-    ddesc->vpid_of_key = morse_parsec_vpid_of_key;
-#if defined(DAGUE_PROF_TRACE)
+    data_collection->nodes  = comm_size;
+    data_collection->myrank = mdesc->myrank;
+
+    data_collection->data_key    = morse_parsec_data_key;
+    data_collection->rank_of     = morse_parsec_rank_of;
+    data_collection->rank_of_key = morse_parsec_rank_of_key;
+    data_collection->data_of     = morse_parsec_data_of;
+    data_collection->data_of_key = morse_parsec_data_of_key;
+    data_collection->vpid_of     = morse_parsec_vpid_of;
+    data_collection->vpid_of_key = morse_parsec_vpid_of_key;
+#if defined(parsec_PROF_TRACE)
     {
         int rc;
-        ddesc->key_to_string = morse_parsec_key_to_string;
-        ddesc->key           = NULL;
-        rc = asprintf(&(ddesc->key_dim), "(%d, %d)", mdesc->lmt, mdesc->lnt);
+        data_collection->key_to_string = morse_parsec_key_to_string;
+        data_collection->key           = NULL;
+        rc = asprintf(&(data_collection->key_dim), "(%d, %d)", mdesc->lmt, mdesc->lnt);
         (void)rc;
     }
 #endif
-    ddesc->memory_registration_status = MEMORY_STATUS_UNREGISTERED;
+    data_collection->memory_registration_status = MEMORY_STATUS_UNREGISTERED;
 
-    pdesc->data_map = calloc( mdesc->lmt * mdesc->lnt, sizeof(dague_data_t*) );
+    pdesc->data_map = calloc( mdesc->lmt * mdesc->lnt, sizeof(parsec_data_t*) );
 
     /* Double linking */
     pdesc->desc     = mdesc;
     mdesc->schedopt = pdesc;
 
+    parsec_dtd_data_collection_init(data_collection);
+
     /* /\* Overwrite the leading dimensions to store the padding *\/ */
     /* mdesc->llm = mdesc->mb * mdesc->lmt; */
     /* mdesc->lln = mdesc->nb * mdesc->lnt; */
@@ -229,18 +236,21 @@ void RUNTIME_desc_destroy( MORSE_desc_t *mdesc )
     morse_parsec_desc_t *pdesc = (morse_parsec_desc_t*)(mdesc->schedopt);
 
     if ( pdesc->data_map != NULL ) {
-        dague_data_t **data = pdesc->data_map;
+        parsec_data_t **data = pdesc->data_map;
         int nb_local_tiles = mdesc->lmt * mdesc->lnt;
         int i;
 
         for(i=0; i<nb_local_tiles; i++, data++)
         {
-            dague_data_destroy( *data );
+            parsec_data_destroy( *data );
         }
 
         free( pdesc->data_map );
         pdesc->data_map = NULL;
     }
+
+    parsec_dtd_data_collection_fini( (parsec_data_collection_t *)pdesc );
+
     free(pdesc);
     return;
 }
diff --git a/runtime/parsec/include/chameleon_parsec.h b/runtime/parsec/include/chameleon_parsec.h
index 0967a72878a88def884ba43dd7563f4b3da59eb4..76f515905084369d2d597eda5ee143dfac04172f 100644
--- a/runtime/parsec/include/chameleon_parsec.h
+++ b/runtime/parsec/include/chameleon_parsec.h
@@ -22,7 +22,8 @@ typedef struct morse_parsec_desc_s morse_parsec_desc_t;
 /*
  * Access to block pointer and leading dimension
  */
-#define RTBLKADDR( desc, type, m, n ) ( dague_dtd_tile_of( DAGUE_dtd_handle, (desc)->schedopt, m, n ) )
+#define RTBLKADDR( desc, type, m, n ) ( parsec_dtd_tile_of( (parsec_data_collection_t *) ((desc)->schedopt),            \
+                                      ((parsec_data_collection_t *) (desc)->schedopt)->data_key((desc)->schedopt, m, n) ))
 
 #define RUNTIME_BEGIN_ACCESS_DECLARATION
 
diff --git a/testing/CTestLists.cmake b/testing/CTestLists.cmake
index 9a9ddf9806ef694691b5870da8259b54606af4d8..1638cf87f42b70d6e5a0d93617ae3af4959175d4 100644
--- a/testing/CTestLists.cmake
+++ b/testing/CTestLists.cmake
@@ -18,8 +18,8 @@ foreach(cat  ${TEST_CATEGORIES})
     string(TOUPPER ${prec} PREC)
 
     if (CHAMELEON_PREC_${PREC})
-        add_test(test_${cat}_${prec}gemm  ./${prec}${TEST_CMD_${cat}} GEMM  1.0 -2.0 600 500 550 650 625 700)
         add_test(test_${cat}_${prec}lange ./${prec}${TEST_CMD_${cat}} LANGE 600 500 600)
+        add_test(test_${cat}_${prec}gemm  ./${prec}${TEST_CMD_${cat}} GEMM  1.0 -2.0 600 500 550 650 625 700)
         add_test(test_${cat}_${prec}trsm  ./${prec}${TEST_CMD_${cat}} TRSM  -2.0 600 500 650 625)
         add_test(test_${cat}_${prec}trmm  ./${prec}${TEST_CMD_${cat}} TRMM  -2.0 600 500 650 625)
         add_test(test_${cat}_${prec}symm  ./${prec}${TEST_CMD_${cat}} SYMM  1.0 -2.0 600 500 650 625 700)