diff --git a/compute/pzlange.c b/compute/pzlange.c
index 576fa7bb6448e86c4c88b317e287396358b6f6b0..987b90b259b91475f0cf545379cffcefc01c3e4f 100644
--- a/compute/pzlange.c
+++ b/compute/pzlange.c
@@ -76,7 +76,7 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
                           workm, workn, 0, 0, workm, workn, A->p, A->q);
 
         MORSE_Desc_Create(&(VECNORMS_STEP2), NULL, MorseRealDouble, 1, A->nb, A->nb,
-                          1, workn, 0, 0, 1, workn, A->p, A->q);
+                          1,     workn, 0, 0, 1,     workn, A->p, A->q);
 
         MORSE_Desc_Create(&(RESULT), NULL, MorseRealDouble, 1, 1, 1,
                           1, 1, 0, 0, 1, 1, 1, 1);
diff --git a/compute/zplrnt.c b/compute/zplrnt.c
index 5cb826e20c3a12f781c4c97927893f7ea8085b25..b2d2d89cbf2f831a1e00cfb728758073ae964630 100644
--- a/compute/zplrnt.c
+++ b/compute/zplrnt.c
@@ -251,7 +251,7 @@ int MORSE_zplrnt_Tile_Async( MORSE_desc_t     *A,
     if (min( A->m, A->n ) == 0)
         return MORSE_SUCCESS;
 
-    morse_pzplrnt(A, seed, sequence,  request);
+    morse_pzplrnt(A, seed, sequence, request);
 
     return MORSE_SUCCESS;
 }
diff --git a/control/descriptor.c b/control/descriptor.c
index cb77b814bb33de4bf024e6da6aa4fec577d525cf..69ee99393f0d05a34a23919bb1c9c0e1a482fd18 100644
--- a/control/descriptor.c
+++ b/control/descriptor.c
@@ -497,23 +497,24 @@ int MORSE_Desc_Create(MORSE_desc_t **desc, void *mat, MORSE_enum dtyp, int mb, i
     if (mat == NULL) {
 
 #if defined(CHAMELEON_SIMULATION) && !defined(CHAMELEON_USE_MPI)
-        (**desc).mat = (void*) 1;
+        (*desc)->mat = (void*) 1;
 #else
         /* TODO: a call to morse_desc_mat_alloc should be made, but require to
         move the call to RUNTIME_desc_create within the function */
         size_t size = (size_t)((*desc)->llm) * (size_t)((*desc)->lln)
             * (size_t)MORSE_Element_Size((*desc)->dtyp);
 
-        if (((**desc).mat = malloc(size)) == NULL) {
+        if (((*desc)->mat = malloc(size)) == NULL) {
             morse_error("MORSE_Desc_Create", "malloc() failed");
             return MORSE_ERR_OUT_OF_RESOURCES;
         }
+        (*desc)->alloc_mat = 1;
 #endif
 
     } else {
-        (**desc).mat = mat;
+        (*desc)->mat = mat;
         /* memory of the matrix is handle by users */
-        (**desc).alloc_mat = 0;
+        (*desc)->alloc_mat = 0;
     }
 
     /* Create scheduler structure like registering data */
diff --git a/runtime/parsec/codelets/codelet_zasum.c b/runtime/parsec/codelets/codelet_zasum.c
index d939961a3913e3f8be4840d1c23cf2a3e5d73aa3..f0eaa9c4e0bc675ff11e798bd6dfdbe6a0172796 100644
--- a/runtime/parsec/codelets/codelet_zasum.c
+++ b/runtime/parsec/codelets/codelet_zasum.c
@@ -29,23 +29,20 @@ CORE_dzasum_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_enum *uplo;
     int *M;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gwork;
+    double *work;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &storev,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gwork
+                          UNPACK_DATA,  &work
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *work = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gwork);
-
     CORE_dzasum(*storev, *uplo, *M, *N, A, *lda, work);
 
     return 0;
@@ -65,6 +62,6 @@ void MORSE_TASK_dzasum(MORSE_option_t *options,
                              sizeof(int),           &N,                                VALUE,
                              PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
                              sizeof(int),           &lda,                              VALUE,
-                             PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INOUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     INOUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zaxpy.c b/runtime/parsec/codelets/codelet_zaxpy.c
index c8d77ac6c0b374d338098fb6f2b85dc8bbb62ad1..e85c6e128df2557d60eae58d6cd41ebcaf45542b 100644
--- a/runtime/parsec/codelets/codelet_zaxpy.c
+++ b/runtime/parsec/codelets/codelet_zaxpy.c
@@ -27,22 +27,20 @@ CORE_zaxpy_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
 {
     int *M;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *incA;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *incB;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &incA,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &incB
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
 
     CORE_zaxpy(*M, *alpha, A, *incA, B, *incB);
 
diff --git a/runtime/parsec/codelets/codelet_zgeadd.c b/runtime/parsec/codelets/codelet_zgeadd.c
index 9b994e2c9cd84d67d470b7c90230b68c69803477..c9a0da8cdb26a652c85c5ba27ce98ce64fdfc318 100644
--- a/runtime/parsec/codelets/codelet_zgeadd.c
+++ b/runtime/parsec/codelets/codelet_zgeadd.c
@@ -34,10 +34,10 @@ CORE_zgeadd_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *M;
     int *N;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
     MORSE_Complex64_t *beta;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *LDB;
 
     dague_dtd_unpack_args(this_task,
@@ -45,17 +45,13 @@ CORE_zgeadd_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &LDB
                         );
 
-
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
-
     CORE_zgeadd(*trans, *M, *N, *alpha, A, *LDA, *beta, B, *LDB);
 
     return 0;
diff --git a/runtime/parsec/codelets/codelet_zgelqt.c b/runtime/parsec/codelets/codelet_zgelqt.c
index a61c8f3856e9b9768da195499334f487836ac533..7879d250c52e721a6e4e36b6eef16438cbe7c682 100644
--- a/runtime/parsec/codelets/codelet_zgelqt.c
+++ b/runtime/parsec/codelets/codelet_zgelqt.c
@@ -84,14 +84,14 @@
  *
  ******************************************************************************/
 static int
-CORE_zgelqt_quark(dague_execution_unit_t *context, dague_execution_context_t *this_task)
+CORE_zgelqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
@@ -100,16 +100,14 @@ CORE_zgelqt_quark(dague_execution_unit_t *context, dague_execution_context_t *th
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &TAU,
                           UNPACK_SCRATCH, &WORK
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_zgelqt(*m, *n, *ib, A, *lda, T, *ldt, TAU, WORK);
 
@@ -123,7 +121,7 @@ void MORSE_TASK_zgelqt(MORSE_option_t *options,
 {
     dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
 
-    insert_task_generic_fptr(DAGUE_dtd_handle,      CORE_zgelqt_quark,  "gelqt",
+    insert_task_generic_fptr(DAGUE_dtd_handle,      CORE_zgelqt_parsec,  "gelqt",
                              sizeof(int),                        &m,     VALUE,
                              sizeof(int),                        &n,     VALUE,
                              sizeof(int),                        &ib,    VALUE,
diff --git a/runtime/parsec/codelets/codelet_zgemm.c b/runtime/parsec/codelets/codelet_zgemm.c
index d92575646058c83ee5e46300a3ae81d66343dc32..96620fd6ede98dc3b085e5241cc703f44521124a 100644
--- a/runtime/parsec/codelets/codelet_zgemm.c
+++ b/runtime/parsec/codelets/codelet_zgemm.c
@@ -36,12 +36,12 @@ CORE_zgemm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     int *n;
     int *k;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *ldb;
     MORSE_Complex64_t *beta;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *ldc;
 
     dague_dtd_unpack_args(this_task,
@@ -51,19 +51,15 @@ CORE_zgemm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &ldb,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &ldc
                           );
 
-    MORSE_Complex64_t *A = DAGUE_DATA_COPY_GET_PTR(gA);
-    MORSE_Complex64_t *B = DAGUE_DATA_COPY_GET_PTR(gB);
-    MORSE_Complex64_t *C = DAGUE_DATA_COPY_GET_PTR(gC);
-
     CORE_zgemm(*transA, *transB, *m, *n, *k,
                *alpha, A, *lda,
                        B, *ldb,
diff --git a/runtime/parsec/codelets/codelet_zgeqrt.c b/runtime/parsec/codelets/codelet_zgeqrt.c
index d8df563efc8f2c2538b8ea73cb5d812b7b2b0465..1a4af26cfc226149b598bc4a71048cd4463c191e 100644
--- a/runtime/parsec/codelets/codelet_zgeqrt.c
+++ b/runtime/parsec/codelets/codelet_zgeqrt.c
@@ -90,9 +90,9 @@ CORE_zgeqrt_parsec (dague_execution_unit_t *context, dague_execution_context_t *
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *A;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *T;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
@@ -109,10 +109,8 @@ CORE_zgeqrt_parsec (dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_SCRATCH, &WORK
                           );
 
-    void *AA = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)A);
-    void *TT = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)T);
 
-    CORE_zgeqrt(*m, *n, *ib, AA, *lda, TT, *ldt, TAU, WORK);
+    CORE_zgeqrt(*m, *n, *ib, A, *lda, T, *ldt, TAU, WORK);
 
     return 0;
 }
diff --git a/runtime/parsec/codelets/codelet_zgessm.c b/runtime/parsec/codelets/codelet_zgessm.c
index cf1174ef31b4c20b29469893ff975dccaf44cba7..0e0f5921ba86393ea1f0234bb01a5a2b72d40861 100644
--- a/runtime/parsec/codelets/codelet_zgessm.c
+++ b/runtime/parsec/codelets/codelet_zgessm.c
@@ -75,11 +75,11 @@ CORE_zgessm_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *k;
     int *ib;
     int *IPIV;
-    dague_data_copy_t *gL;
+    MORSE_Complex64_t *L;
     int *ldl;
-    dague_data_copy_t *gD;
+    MORSE_Complex64_t *D;
     int *ldd;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
 
     dague_dtd_unpack_args(this_task,
@@ -88,17 +88,14 @@ CORE_zgessm_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &ib,
                           UNPACK_SCRATCH, &IPIV,
-                          UNPACK_DATA,  &gL,
+                          UNPACK_DATA,  &L,
                           UNPACK_VALUE, &ldl,
-                          UNPACK_DATA,  &gD,
+                          UNPACK_DATA,  &D,
                           UNPACK_VALUE, &ldd,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda
                           );
 
-    //MORSE_Complex64_t *L = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gL);
-    MORSE_Complex64_t *D = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gD);
-    MORSE_Complex64_t *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_zgessm(*m, *n, *k, *ib, IPIV, D, *ldd, A, *lda);
 
diff --git a/runtime/parsec/codelets/codelet_zgessq.c b/runtime/parsec/codelets/codelet_zgessq.c
index bb0a463874309691912f8e1606f58c62b4fb6034..58a3cd509f13329ae8f24999fbc794066296a909 100644
--- a/runtime/parsec/codelets/codelet_zgessq.c
+++ b/runtime/parsec/codelets/codelet_zgessq.c
@@ -27,21 +27,18 @@ CORE_zgessq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 {
     int *m;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gSCALESUMSQ;
+    double *SCALESUMSQ;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gSCALESUMSQ
+                          UNPACK_DATA,  &SCALESUMSQ
                         );
 
-    MORSE_Complex64_t *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    double *SCALESUMSQ = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gSCALESUMSQ);
-
     CORE_zgessq( *m, *n, A, *lda, SCALESUMSQ, SCALESUMSQ+1);
 
     return 0;
@@ -59,6 +56,6 @@ void MORSE_TASK_zgessq( MORSE_option_t *options,
                              sizeof(int),                     &n,            VALUE,
                              PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                            INPUT | REGION_FULL,
                              sizeof(int),                     &lda,          VALUE,
-                             PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, MORSE_Complex64_t, SCALESUMSQm, SCALESUMSQn ), INOUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ), INOUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zgetrf.c b/runtime/parsec/codelets/codelet_zgetrf.c
index 5d11f67a170c86be29585092227413a1d2517bbd..d5ff29af3dcee753c3bcc6959d270b1a36ec9952 100644
--- a/runtime/parsec/codelets/codelet_zgetrf.c
+++ b/runtime/parsec/codelets/codelet_zgetrf.c
@@ -27,11 +27,9 @@ CORE_zgetrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 {
     int *m;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
     int *IPIV;
-    MORSE_sequence_t *sequence;
-    MORSE_request_t *request;
     MORSE_bool *check_info;
     int *iinfo;
     int info;
@@ -39,16 +37,13 @@ CORE_zgetrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
                           UNPACK_SCRATCH, &IPIV,
-                          UNPACK_VALUE, &sequence,
-                          UNPACK_VALUE, &request,
                           UNPACK_VALUE, &check_info,
                           UNPACK_VALUE, &iinfo
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_zgetrf( *m, *n, A, *lda, IPIV, &info );
 
@@ -69,8 +64,6 @@ void MORSE_TASK_zgetrf(MORSE_option_t *options,
                              PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INOUT | REGION_FULL,
                              sizeof(int),           &lda,                        VALUE,
                              sizeof(int)*nb,        IPIV,                        SCRATCH,
-                             sizeof(MORSE_sequence_t*), &(options->sequence),    VALUE,
-                             sizeof(MORSE_request_t*),  &(options->request),     VALUE,
                              sizeof(MORSE_bool),    &check_info,                 VALUE,
                              sizeof(int),           &iinfo,                      VALUE,
                              0);
diff --git a/runtime/parsec/codelets/codelet_zgetrf_incpiv.c b/runtime/parsec/codelets/codelet_zgetrf_incpiv.c
index 82bd466832ee889eab4131627d3d3548e8bf84b9..54b9e20f43de237fa1c83bf77c9b3e3e8e8588b7 100644
--- a/runtime/parsec/codelets/codelet_zgetrf_incpiv.c
+++ b/runtime/parsec/codelets/codelet_zgetrf_incpiv.c
@@ -82,7 +82,7 @@ CORE_zgetrf_incpiv_parsec(dague_execution_unit_t *context, dague_execution_conte
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
     int *IPIV;
     MORSE_bool *check_info;
@@ -94,7 +94,7 @@ CORE_zgetrf_incpiv_parsec(dague_execution_unit_t *context, dague_execution_conte
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
                           UNPACK_SCRATCH, &IPIV,
                           UNPACK_VALUE, &check_info,
@@ -102,7 +102,6 @@ CORE_zgetrf_incpiv_parsec(dague_execution_unit_t *context, dague_execution_conte
                           );
 
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_zgetrf_incpiv(*m, *n, *ib, A, *lda, IPIV, &info);
 
diff --git a/runtime/parsec/codelets/codelet_zgetrf_nopiv.c b/runtime/parsec/codelets/codelet_zgetrf_nopiv.c
index 141d018755ff77fba564d7c1a6f56a31ff728509..030d9c8adee2a488e011f2ad3788242ffca150b9 100644
--- a/runtime/parsec/codelets/codelet_zgetrf_nopiv.c
+++ b/runtime/parsec/codelets/codelet_zgetrf_nopiv.c
@@ -75,10 +75,8 @@ CORE_zgetrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_contex
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    MORSE_sequence_t *sequence;
-    MORSE_request_t *request;
     int *iinfo;
     int info;
 
@@ -86,14 +84,11 @@ CORE_zgetrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_contex
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_VALUE, &sequence,
-                          UNPACK_VALUE, &request,
                           UNPACK_VALUE, &iinfo
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_zgetrf_nopiv(*m, *n, *ib, A, *lda, &info);
 
@@ -111,10 +106,8 @@ void MORSE_TASK_zgetrf_nopiv(MORSE_option_t *options,
                              sizeof(int),           &m,                          VALUE,
                              sizeof(int),           &n,                          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 ),     INOUT | REGION_FULL,
                              sizeof(int),           &lda,                        VALUE,
-                             sizeof(MORSE_sequence_t*), &(options->sequence),    VALUE,
-                             sizeof(MORSE_request_t*),  &(options->request),     VALUE,
                              sizeof(int),           &iinfo,                      VALUE,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zhemm.c b/runtime/parsec/codelets/codelet_zhemm.c
index 171a1ace5507deb9e07be6f4375f8135b6890871..358af227fc3da979cf9f20e32ef4ef021de12ea1 100644
--- a/runtime/parsec/codelets/codelet_zhemm.c
+++ b/runtime/parsec/codelets/codelet_zhemm.c
@@ -35,12 +35,12 @@ CORE_zhemm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     int *M;
     int *N;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *LDB;
     MORSE_Complex64_t *beta;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *LDC;
 
     dague_dtd_unpack_args(this_task,
@@ -49,18 +49,15 @@ CORE_zhemm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &LDB,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &LDC
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
-    void *C = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gC);
 
     CORE_zhemm(*side, *uplo, *M, *N,
                *alpha, A, *LDA,
diff --git a/runtime/parsec/codelets/codelet_zher2k.c b/runtime/parsec/codelets/codelet_zher2k.c
index 836bcee6f33d08138d7a1ddc601b0a6844f1b898..bb99e318870fedd2e850ccb7ad4f8e785661365c 100644
--- a/runtime/parsec/codelets/codelet_zher2k.c
+++ b/runtime/parsec/codelets/codelet_zher2k.c
@@ -35,12 +35,12 @@ CORE_zher2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *n;
     int *k;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *ldb;
     double *beta;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *ldc;
 
     dague_dtd_unpack_args(this_task,
@@ -49,18 +49,15 @@ CORE_zher2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &ldb,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &ldc
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
-    void *C = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gC);
 
     CORE_zher2k(*uplo, *trans, *n, *k,
                 *alpha, A, *lda,
@@ -94,4 +91,3 @@ void MORSE_TASK_zher2k(MORSE_option_t *options,
                              sizeof(int),                        &ldc,      VALUE,
                              0);
 }
-
diff --git a/runtime/parsec/codelets/codelet_zherk.c b/runtime/parsec/codelets/codelet_zherk.c
index 13e71a52fe096d31131aa308560edb29481922e0..fbe2e2a5398db23f546c60f688f0d88530f65862 100644
--- a/runtime/parsec/codelets/codelet_zherk.c
+++ b/runtime/parsec/codelets/codelet_zherk.c
@@ -36,10 +36,10 @@ CORE_zherk_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
     int *n;
     int *k;
     double *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
     double *beta;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *ldc;
 
     dague_dtd_unpack_args(this_task,
@@ -48,15 +48,13 @@ CORE_zherk_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &ldc
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR(gA);
-    void *C = DAGUE_DATA_COPY_GET_PTR(gC);
 
     CORE_zherk(*uplo, *trans, *n, *k,
                *alpha, A, *lda,
diff --git a/runtime/parsec/codelets/codelet_zhessq.c b/runtime/parsec/codelets/codelet_zhessq.c
index 21f46d6fe45e00258702393d27aec76d2dd44eba..e1517df70357ba57fa8b0fbb6ab487a0290292ae 100644
--- a/runtime/parsec/codelets/codelet_zhessq.c
+++ b/runtime/parsec/codelets/codelet_zhessq.c
@@ -27,21 +27,18 @@ CORE_zhessq_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 {
     MORSE_enum *uplo;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gSCALESUMSQ;
+    double *SCALESUMSQ;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gSCALESUMSQ
+                          UNPACK_DATA,  &SCALESUMSQ
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *SCALESUMSQ = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gSCALESUMSQ);
-
     CORE_zhessq( *uplo, *n, A, *lda, &SCALESUMSQ[0], &SCALESUMSQ[1]);
 
     return 0;
@@ -57,8 +54,8 @@ void MORSE_TASK_zhessq( MORSE_option_t *options,
     insert_task_generic_fptr(DAGUE_dtd_handle,      CORE_zhessq_parsec, "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 | REGION_FULL,
                              sizeof(int),           &lda,                VALUE,
-                             PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, MORSE_Complex64_t, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlacpy.c b/runtime/parsec/codelets/codelet_zlacpy.c
index ac6c30a75162d14f792aed9d5fc68efb1c7c5ccb..359e9baa79278e78f11df61b40157aaf8743c452 100644
--- a/runtime/parsec/codelets/codelet_zlacpy.c
+++ b/runtime/parsec/codelets/codelet_zlacpy.c
@@ -33,23 +33,21 @@ CORE_zlacpy_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     MORSE_enum *uplo;
     int *M;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *LDB;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &LDB
                         );
 
-    MORSE_Complex64_t *A = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    MORSE_Complex64_t *B = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
 
     CORE_zlacpy(*uplo, *M, *N, A, *LDA, B, *LDB);
 
diff --git a/runtime/parsec/codelets/codelet_zlag2c.c b/runtime/parsec/codelets/codelet_zlag2c.c
index 7acfcfc23be746f836bb1a6caefd6f13b919c5c4..d521c853e280387d17adaa9d5be572a9100490a4 100644
--- a/runtime/parsec/codelets/codelet_zlag2c.c
+++ b/runtime/parsec/codelets/codelet_zlag2c.c
@@ -32,24 +32,21 @@ CORE_zlag2c_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 {
     int *m;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gB;
+    MORSE_Complex32_t *B;
     int *ldb;
     int info;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &ldb,
                           );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
-
     CORE_zlag2c( *m, *n, A, *lda, B, *ldb);
 
     return 0;
@@ -67,7 +64,7 @@ void MORSE_TASK_zlag2c(MORSE_option_t *options,
         sizeof(int),                        &n,         VALUE,
         PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
         sizeof(int),                        &lda,       VALUE,
-        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     OUTPUT | REGION_FULL,
+        PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex32_t, Bm, Bn ),     OUTPUT | REGION_FULL,
         sizeof(int),                        &ldb,       VALUE,
         0);
 }
@@ -82,22 +79,20 @@ CORE_clag2z_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 {
     int *m;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex32_t *A;
     int *lda;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *ldb;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &ldb,
                           );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
 
     CORE_clag2z( *m, *n, A, *lda, B, *ldb );
 
@@ -114,7 +109,7 @@ void MORSE_TASK_clag2z(MORSE_option_t *options,
     insert_task_generic_fptr(DAGUE_dtd_handle,      CORE_clag2z_parsec,               "lag2z",
         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_Complex32_t, Am, An ),     INPUT | REGION_FULL,
         sizeof(int),                        &lda,       VALUE,
         PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INOUT | REGION_FULL,
         sizeof(int),                        &ldb,       VALUE,
diff --git a/runtime/parsec/codelets/codelet_zlange.c b/runtime/parsec/codelets/codelet_zlange.c
index 7bd331d2f28f031a43d3b0b61e50ca69bef66b07..70e008803a00076dca85181b54262d8f876d580c 100644
--- a/runtime/parsec/codelets/codelet_zlange.c
+++ b/runtime/parsec/codelets/codelet_zlange.c
@@ -25,28 +25,26 @@
 static int
 CORE_zlange_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
-    dague_data_copy_t *gnormA;
     MORSE_enum *norm;
     int *M;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
     double *work;
+    double *normA;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &norm,
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
                           UNPACK_SCRATCH, &work,
-                          UNPACK_DATA,  &gnormA
+                          UNPACK_DATA,  &normA
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *normA = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gnormA);
 
-    CORE_zlange( *norm, *M, *N, A, *LDA, work, normA);
+    CORE_zlange( *norm, *M, *N, A, *LDA, work, normA );
 
     return 0;
 }
@@ -67,26 +65,25 @@ void MORSE_TASK_zlange(MORSE_option_t *options,
                              PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
                              sizeof(int),                   &LDA,           VALUE,
                              sizeof(double)*szeW,           NULL,           SCRATCH,
-                             PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     OUTPUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
                              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)
 {
-    dague_data_copy_t *gA;
-    dague_data_copy_t *gnormA;
+    double *A;
+    double *normA;
 
     dague_dtd_unpack_args(this_task,
-                          UNPACK_DATA,  &gA,
-                          UNPACK_DATA,  &gnormA
+                          UNPACK_DATA,  &A,
+                          UNPACK_DATA,  &normA
                         );
 
-    double *A = (double *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    double *normA = (double *) DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gnormA);
 
-        if ( A[0] > *normA )
-                *normA = A[0];
+    if ( *A > *normA )
+        *normA = *A;
 
     return 0;
 }
@@ -98,7 +95,9 @@ void MORSE_TASK_zlange_max(MORSE_option_t *options,
     dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
 
     insert_task_generic_fptr(DAGUE_dtd_handle,      CORE_zlange_max_parsec,               "lange_max",
-                             PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
-                             PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     OUTPUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( A, double, Am, An ), INPUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ), OUTPUT | REGION_FULL,
                              0);
 }
+
+#endif /* defined(PRECISION_d) || defined(PRECISION_s) */
diff --git a/runtime/parsec/codelets/codelet_zlanhe.c b/runtime/parsec/codelets/codelet_zlanhe.c
index 46c501f423449884dcffdf841fcfc39fc458eda9..b519547bd071e671166046ebf8c07acfdeac6bea 100644
--- a/runtime/parsec/codelets/codelet_zlanhe.c
+++ b/runtime/parsec/codelets/codelet_zlanhe.c
@@ -25,27 +25,24 @@
 static int
 CORE_zlanhe_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
-    double *gnormA;
     MORSE_enum *norm;
     MORSE_enum *uplo;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
     double *work;
+    double *normA;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &norm,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
                           UNPACK_SCRATCH, &work,
-                          UNPACK_DATA,  &gnormA
+                          UNPACK_DATA,  &normA
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *normA = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gnormA);
-
     CORE_zlanhe( *norm, *uplo, *N, A, *LDA, work, normA);
 
     return 0;
@@ -67,6 +64,6 @@ void MORSE_TASK_zlanhe(MORSE_option_t *options,
                              PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
                              sizeof(int),                   &LDA,           VALUE,
                              sizeof(double)*szeW,           NULL,           SCRATCH,
-                             PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     OUTPUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlansy.c b/runtime/parsec/codelets/codelet_zlansy.c
index 15b06e796e6b61473bfaf8a759367a7191b81610..a98c2cd7ddfeb0834c1694aed40af9838463bda7 100644
--- a/runtime/parsec/codelets/codelet_zlansy.c
+++ b/runtime/parsec/codelets/codelet_zlansy.c
@@ -25,26 +25,24 @@
 static int
 CORE_zlansy_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
-    double *gnormA;
     int *norm;
     MORSE_enum *uplo;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
     double *work;
+    double *normA;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &norm,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
                           UNPACK_SCRATCH, &work,
-                          UNPACK_DATA,  &gnormA
+                          UNPACK_DATA,  &normA
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *normA = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gnormA);
 
     CORE_zlansy( *norm, *uplo, *N, A, *LDA, work, normA);
 
@@ -67,6 +65,6 @@ void MORSE_TASK_zlansy(MORSE_option_t *options,
                              PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
                              sizeof(int),                   &LDA,           VALUE,
                              sizeof(double)*szeW,           NULL,           SCRATCH,
-                             PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     OUTPUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlantr.c b/runtime/parsec/codelets/codelet_zlantr.c
index d4df9e57f6d366dcb0ac589f9688471c55b3171c..2978eedbb46e4f7fe5f916680a72270d9b18544a 100644
--- a/runtime/parsec/codelets/codelet_zlantr.c
+++ b/runtime/parsec/codelets/codelet_zlantr.c
@@ -25,13 +25,13 @@
 static int
 CORE_zlantr_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
-    dague_data_copy_t *gnormA;
     MORSE_enum *norm, *uplo, *diag;
     int *M;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
     double *work;
+    double *normA;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &norm,
@@ -39,15 +39,12 @@ CORE_zlantr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &diag,
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
                           UNPACK_SCRATCH, &work,
-                          UNPACK_DATA,  &gnormA
+                          UNPACK_DATA,  &normA
                           );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *normA = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gnormA);
-
     CORE_zlantr( *norm, *uplo, *diag, *M, *N, A, *LDA, work, normA);
 
     return 0;
@@ -72,6 +69,6 @@ void MORSE_TASK_zlantr(MORSE_option_t *options,
                              PASSED_BY_REF,         RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
                              sizeof(int),                   &LDA,           VALUE,
                              sizeof(double)*szeW,           NULL,           SCRATCH,
-                             PASSED_BY_REF,         RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     OUTPUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( B, double, Bm, Bn ),     OUTPUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zlaset.c b/runtime/parsec/codelets/codelet_zlaset.c
index 53c09389a11880dd16acb33daa1f5bf667c0248a..e628198753584f2d03c68372d3f127d6e12d2d74 100644
--- a/runtime/parsec/codelets/codelet_zlaset.c
+++ b/runtime/parsec/codelets/codelet_zlaset.c
@@ -65,7 +65,7 @@ CORE_zlaset_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *N;
     MORSE_Complex64_t *alpha;
     MORSE_Complex64_t *beta;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
 
     dague_dtd_unpack_args(this_task,
@@ -74,12 +74,11 @@ CORE_zlaset_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &alpha,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA
                         );
 
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_zlaset(*uplo, *M, *N, *alpha, *beta, A, *LDA);
 
diff --git a/runtime/parsec/codelets/codelet_zlaset2.c b/runtime/parsec/codelets/codelet_zlaset2.c
index 4284ace9c8cce4081f600bc77ad2c49bb56fadb9..70db4115f149a138adcedd86771f62d6bb1c30bd 100644
--- a/runtime/parsec/codelets/codelet_zlaset2.c
+++ b/runtime/parsec/codelets/codelet_zlaset2.c
@@ -56,13 +56,13 @@
  *
  **/
 static int
-CORE_zlaset2_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zlaset2_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *uplo;
     int *M;
     int *N;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
 
     dague_dtd_unpack_args(this_task,
@@ -70,11 +70,10 @@ CORE_zlaset2_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
     CORE_zlaset2(*uplo, *M, *N, *alpha, A, *LDA);
 
     return 0;
diff --git a/runtime/parsec/codelets/codelet_zlauum.c b/runtime/parsec/codelets/codelet_zlauum.c
index 415dd5b842b30fd5309b92fae2b974cc0a367400..d8a8f2c7219c4f1c0950fca79eea3592e36ddf26 100644
--- a/runtime/parsec/codelets/codelet_zlauum.c
+++ b/runtime/parsec/codelets/codelet_zlauum.c
@@ -32,17 +32,16 @@ CORE_zlauum_parsec(dague_execution_unit_t *context, dague_execution_context_t *
 {
     MORSE_enum *uplo;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA
                           );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_zlauum(*uplo, *N, A, *LDA);
 
diff --git a/runtime/parsec/codelets/codelet_zpamm.c b/runtime/parsec/codelets/codelet_zpamm.c
index 68b5a645734b2755dc7e81cba536fa25276a57c1..dc16959b413d88da2387071bea37ab029a1205bb 100644
--- a/runtime/parsec/codelets/codelet_zpamm.c
+++ b/runtime/parsec/codelets/codelet_zpamm.c
@@ -176,13 +176,13 @@ CORE_zpamm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
     int *N;
     int *K;
     int *L;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *LDA1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *LDA2;
-    dague_data_copy_t *gV;
+    MORSE_Complex64_t *V;
     int *LDV;
-    dague_data_copy_t *gW;
+    MORSE_Complex64_t *W;
     int *LDW;
 
     dague_dtd_unpack_args(this_task,
@@ -193,21 +193,16 @@ CORE_zpamm_parsec(dague_execution_unit_t *context, dague_execution_context_t *th
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &K,
                           UNPACK_VALUE, &L,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &LDA1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &LDA2,
-                          UNPACK_DATA,  &gV,
+                          UNPACK_DATA,  &V,
                           UNPACK_VALUE, &LDV,
-                          UNPACK_DATA,  &gW,
+                          UNPACK_DATA,  &W,
                           UNPACK_VALUE, &LDW
                           );
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *V  = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gV);
-    void *W  = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gW);
-
     CORE_zpamm( *op, *side, *storev, *M, *N, *K, *L, A1, *LDA1, A2, *LDA2, V, *LDV, W, *LDW);
 
     return 0;
diff --git a/runtime/parsec/codelets/codelet_zplghe.c b/runtime/parsec/codelets/codelet_zplghe.c
index ef6a375f4e690b83f1f874183336e454f9c4bbee..37c3c56690886eaa33d74b14c0ffd1430b914a17 100644
--- a/runtime/parsec/codelets/codelet_zplghe.c
+++ b/runtime/parsec/codelets/codelet_zplghe.c
@@ -28,7 +28,7 @@ CORE_zplghe_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     double *bump;
     int *m;
     int *n;
-    dague_data_copy_t *A;
+    MORSE_Complex64_t *A;
     int *lda;
     int *bigM;
     int *m0;
@@ -48,8 +48,7 @@ CORE_zplghe_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                         );
 
 
-    MORSE_Complex64_t *T = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)A);
-    CORE_zplghe( *bump, *m, *n, T, *lda, *bigM, *m0, *n0, *seed );
+    CORE_zplghe( *bump, *m, *n, A, *lda, *bigM, *m0, *n0, *seed );
 
     return 0;
 }
diff --git a/runtime/parsec/codelets/codelet_zplgsy.c b/runtime/parsec/codelets/codelet_zplgsy.c
index 85257f691b8d0d53d4b97b95493d014c7db0ca57..a410497cbb108e30f1acf71d11d674fd94103e77 100644
--- a/runtime/parsec/codelets/codelet_zplgsy.c
+++ b/runtime/parsec/codelets/codelet_zplgsy.c
@@ -28,7 +28,7 @@ CORE_zplgsy_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     MORSE_Complex64_t *bump;
     int *m;
     int *n;
-    dague_data_copy_t *A;
+    MORSE_Complex64_t *A;
     int *lda;
     int *bigM;
     int *m0;
@@ -47,9 +47,7 @@ CORE_zplgsy_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &seed
                         );
 
-    MORSE_Complex64_t *T = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)A);
-
-    CORE_zplgsy( *bump, *m, *n, T, *lda, *bigM, *m0, *n0, *seed );
+    CORE_zplgsy( *bump, *m, *n, A, *lda, *bigM, *m0, *n0, *seed );
 
     return 0;
 }
diff --git a/runtime/parsec/codelets/codelet_zplrnt.c b/runtime/parsec/codelets/codelet_zplrnt.c
index c6ba8dc6000a4f9048dbaca8fa5022b4d8b5a9a7..4ff6d1fe2b955182435be8a124d4918eef0fcbb9 100644
--- a/runtime/parsec/codelets/codelet_zplrnt.c
+++ b/runtime/parsec/codelets/codelet_zplrnt.c
@@ -27,7 +27,7 @@ CORE_zplrnt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 {
     int *m;
     int *n;
-    dague_data_copy_t *A;
+    MORSE_Complex64_t *A;
     int *lda;
     int *bigM;
     int *m0;
@@ -45,9 +45,8 @@ CORE_zplrnt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &seed
                         );
 
-    MORSE_Complex64_t *T = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)A);
 
-    CORE_zplrnt( *m, *n, T, *lda, *bigM, *m0, *n0, *seed );
+    CORE_zplrnt( *m, *n, A, *lda, *bigM, *m0, *n0, *seed );
 
     return 0;
 }
diff --git a/runtime/parsec/codelets/codelet_zplssq.c b/runtime/parsec/codelets/codelet_zplssq.c
index c457839de2dbcbdc5439b516a2bd35f8401efe33..1ad495420d98b114b371385d190968f977c1c569 100644
--- a/runtime/parsec/codelets/codelet_zplssq.c
+++ b/runtime/parsec/codelets/codelet_zplssq.c
@@ -57,18 +57,14 @@
 static int
 CORE_zplssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
-    dague_data_copy_t *gSCALESUMSQ;
-    dague_data_copy_t *gSCLSSQ;
+    double *SCALESUMSQ;
+    double *SCLSSQ;
 
     dague_dtd_unpack_args(this_task,
-                          UNPACK_DATA,  &gSCALESUMSQ,
-                          UNPACK_DATA,  &gSCLSSQ
+                          UNPACK_DATA,  &SCALESUMSQ,
+                          UNPACK_DATA,  &SCLSSQ
                           );
 
-
-    double *SCALESUMSQ = (double *) DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gSCALESUMSQ);
-    double *SCLSSQ     = (double *) DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gSCLSSQ);
-
     if( SCLSSQ[0] < SCALESUMSQ[0] ) {
         SCLSSQ[1] = SCALESUMSQ[1] + (SCLSSQ[1]     * (( SCLSSQ[0] / SCALESUMSQ[0] ) * ( SCLSSQ[0] / SCALESUMSQ[0] )));
         SCLSSQ[0] = SCALESUMSQ[0];
@@ -86,21 +82,20 @@ void MORSE_TASK_zplssq( MORSE_option_t *options,
     dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
 
     insert_task_generic_fptr(DAGUE_dtd_handle,      CORE_zplssq_parsec,               "plssq",
-                             PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, MORSE_Complex64_t, SCALESUMSQm, SCALESUMSQn ),    INPUT | REGION_FULL,
-                             PASSED_BY_REF,         RTBLKADDR( SCLSSQ, MORSE_Complex64_t, SCLSSQm, SCLSSQn ),                INOUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INPUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( SCLSSQ, double, SCLSSQm, SCLSSQn ),                INOUT | REGION_FULL,
                              0);
 }
 
 static int
 CORE_zplssq2_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
-    dague_data_copy_t *gRESULT;
+    double *RESULT;
 
     dague_dtd_unpack_args(this_task,
-                          UNPACK_DATA,  &gRESULT
+                          UNPACK_DATA,  &RESULT
                           );
 
-    double *RESULT = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gRESULT);
 
     RESULT[0] = RESULT[0] * sqrt( RESULT[1] );
 
@@ -113,6 +108,6 @@ void MORSE_TASK_zplssq2( MORSE_option_t *options,
     dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
 
     insert_task_generic_fptr(DAGUE_dtd_handle,      CORE_zplssq2_parsec,               "plssq2",
-                             PASSED_BY_REF,         RTBLKADDR( RESULT, MORSE_Complex64_t, RESULTm, RESULTn ),     INOUT | REGION_FULL,
+                             PASSED_BY_REF,         RTBLKADDR( RESULT, double, RESULTm, RESULTn ),     INOUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zpotrf.c b/runtime/parsec/codelets/codelet_zpotrf.c
index a09c3685f0594bc2de25cc11ef59709185fdcde4..c9121d188d821edcf1c16411b646e5d049109efa 100644
--- a/runtime/parsec/codelets/codelet_zpotrf.c
+++ b/runtime/parsec/codelets/codelet_zpotrf.c
@@ -32,19 +32,18 @@ CORE_zpotrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
 {
     MORSE_enum *uplo;
     int *tempkm, *ldak, *iinfo;
-    dague_data_copy_t *data;
+    MORSE_Complex64_t *A;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &tempkm,
-                          UNPACK_DATA,  &data,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &ldak,
                           UNPACK_VALUE, &iinfo
                         );
 
-    void *TT = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)data);
 
-    CORE_zpotrf(*uplo, *tempkm, TT, *ldak, iinfo);
+    CORE_zpotrf(*uplo, *tempkm, A, *ldak, iinfo);
 
     return 0;
 }
diff --git a/runtime/parsec/codelets/codelet_zssssm.c b/runtime/parsec/codelets/codelet_zssssm.c
index 2786c05bcf7e9369a9b3cb0c94ca6b3ba35a1182..c3fbc8ea0151186c2ffdb39a9fc30aca8bc68e98 100644
--- a/runtime/parsec/codelets/codelet_zssssm.c
+++ b/runtime/parsec/codelets/codelet_zssssm.c
@@ -31,13 +31,13 @@ CORE_zssssm_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *n2;
     int *k;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gL1;
+    MORSE_Complex64_t *L1;
     int *ldl1;
-    dague_data_copy_t *gL2;
+    MORSE_Complex64_t *L2;
     int *ldl2;
     int *IPIV;
 
@@ -48,21 +48,17 @@ CORE_zssssm_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &n2,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gL1,
+                          UNPACK_DATA,  &L1,
                           UNPACK_VALUE, &ldl1,
-                          UNPACK_DATA,  &gL2,
+                          UNPACK_DATA,  &L2,
                           UNPACK_VALUE, &ldl2,
                           UNPACK_SCRATCH, &IPIV
                           );
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *L1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gL1);
-    void *L2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gL2);
 
     CORE_zssssm(*m1, *n1, *m2, *n2, *k, *ib, A1, *lda1, A2, *lda2, L1, *ldl1, L2, *ldl2, IPIV);
 
diff --git a/runtime/parsec/codelets/codelet_zsymm.c b/runtime/parsec/codelets/codelet_zsymm.c
index dfb20d9e621cc09867af2ef2103d273e0bc4d0c8..9092522f7a87a3c387fcacc526388c28b2096316 100644
--- a/runtime/parsec/codelets/codelet_zsymm.c
+++ b/runtime/parsec/codelets/codelet_zsymm.c
@@ -30,12 +30,12 @@ CORE_zsymm_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
     int *M;
     int *N;
     MORSE_Complex64_t *alpha;
-    MORSE_Complex64_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
-    MORSE_Complex64_t *gB;
+    MORSE_Complex64_t *B;
     int *LDB;
     MORSE_Complex64_t *beta;
-    MORSE_Complex64_t *gC;
+    MORSE_Complex64_t *C;
     int *LDC;
 
     dague_dtd_unpack_args(this_task,
@@ -44,19 +44,16 @@ CORE_zsymm_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &LDB,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &LDC
                         );
 
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
-    void *C = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gC);
 
     CORE_zsymm(*side, *uplo, *M, *N,
                 *alpha, A, *LDA,
@@ -86,7 +83,7 @@ void MORSE_TASK_zsymm(MORSE_option_t *options,
                             sizeof(int),            &lda,               VALUE,
                             PASSED_BY_REF,          RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | REGION_FULL,
                             sizeof(int),            &ldb,               VALUE,
-                            sizeof(double),         &beta,              VALUE,
+                            sizeof(MORSE_Complex64_t),  &beta,          VALUE,
                             PASSED_BY_REF,          RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | REGION_FULL,
                             sizeof(int),            &ldc,               VALUE,
                              0);
diff --git a/runtime/parsec/codelets/codelet_zsyr2k.c b/runtime/parsec/codelets/codelet_zsyr2k.c
index 35cac24ff16ddb3d19d09659e09a81a1ba1efd20..3d1c18d2cda769cc15e23362012e23c5f5955bee 100644
--- a/runtime/parsec/codelets/codelet_zsyr2k.c
+++ b/runtime/parsec/codelets/codelet_zsyr2k.c
@@ -23,19 +23,19 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_zsyr2k_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zsyr2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
     int *n;
     int *k;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *ldb;
     MORSE_Complex64_t *beta;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *ldc;
 
     dague_dtd_unpack_args(this_task,
@@ -44,18 +44,15 @@ CORE_zsyr2k_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &ldb,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &ldc
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
-    void *C = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gC);
 
     CORE_zsyr2k(*uplo, *trans, *n, *k,
                 *alpha, A, *lda,
@@ -84,7 +81,7 @@ void MORSE_TASK_zsyr2k(MORSE_option_t *options,
                             sizeof(int),            &lda,                   VALUE,
                             PASSED_BY_REF,          RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INPUT | REGION_FULL,
                             sizeof(int),            &ldb,                   VALUE,
-                            sizeof(double),         &beta,                  VALUE,
+                            sizeof(MORSE_Complex64_t), &beta,               VALUE,
                             PASSED_BY_REF,          RTBLKADDR( C, MORSE_Complex64_t, Cm, Cn ),     INOUT | REGION_FULL,
                             sizeof(int),            &ldc,                   VALUE,
                              0);
diff --git a/runtime/parsec/codelets/codelet_zsyrk.c b/runtime/parsec/codelets/codelet_zsyrk.c
index 07cc9b0facaf18bbac3f485a4b8e016c5fe25aba..08e9b414f480be30ba8fdd83576be03707bd5fa2 100644
--- a/runtime/parsec/codelets/codelet_zsyrk.c
+++ b/runtime/parsec/codelets/codelet_zsyrk.c
@@ -23,17 +23,17 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_zsyrk_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zsyrk_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *trans;
     int *n;
     int *k;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
     MORSE_Complex64_t *beta;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *ldc;
 
     dague_dtd_unpack_args(this_task,
@@ -42,15 +42,13 @@ CORE_zsyrk_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &ldc
                         );
 
-    MORSE_Complex64_t *A = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    MORSE_Complex64_t *C = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gC);
 
     CORE_zsyrk(*uplo, *trans, *n, *k,
                *alpha, A, *lda,
diff --git a/runtime/parsec/codelets/codelet_zsyssq.c b/runtime/parsec/codelets/codelet_zsyssq.c
index 81a2cd8734595f0e77f869b61ad1561557ce4bff..a319b1d24330be1df99688f34238b488125ce829 100644
--- a/runtime/parsec/codelets/codelet_zsyssq.c
+++ b/runtime/parsec/codelets/codelet_zsyssq.c
@@ -23,24 +23,22 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_zsyssq_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zsyssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *uplo;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gSCALESUMSQ;
+    double *SCALESUMSQ;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gSCALESUMSQ
+                          UNPACK_DATA,  &SCALESUMSQ
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    double *SCALESUMSQ = (double *) DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gSCALESUMSQ);
 
     CORE_zsyssq( *uplo, *n, A, *lda, &SCALESUMSQ[0], &SCALESUMSQ[1]);
 
@@ -59,6 +57,6 @@ void MORSE_TASK_zsyssq( MORSE_option_t *options,
                             sizeof(int),            &n,                     VALUE,
                             PASSED_BY_REF,          RTBLKADDR( A, MORSE_Complex64_t, Am, An ),                               INPUT | REGION_FULL,
                             sizeof(int),            &lda,                   VALUE,
-                            PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, MORSE_Complex64_t, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
+                            PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_zsytrf_nopiv.c b/runtime/parsec/codelets/codelet_zsytrf_nopiv.c
index 431bf72c21b3105bfc26b05de3575164e4bbb1c8..d3ac36381a36ecca46cb7ff23ec4db3e87dd63cd 100644
--- a/runtime/parsec/codelets/codelet_zsytrf_nopiv.c
+++ b/runtime/parsec/codelets/codelet_zsytrf_nopiv.c
@@ -27,7 +27,7 @@ CORE_zsytrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_contex
 {
     MORSE_enum *uplo;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
     int *iinfo;
     int info;
@@ -35,12 +35,11 @@ CORE_zsytrf_nopiv_parsec(dague_execution_unit_t *context, dague_execution_contex
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
                           UNPACK_VALUE, &iinfo
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_zsytf2_nopiv(*uplo, *n, A, *lda);
 
diff --git a/runtime/parsec/codelets/codelet_ztile_zero.c b/runtime/parsec/codelets/codelet_ztile_zero.c
index fcde76c574e6711f503a56f77eebfb0b4c8a1652..5088ad699b559ed1bbb9d4ad15b5e125a0135118 100644
--- a/runtime/parsec/codelets/codelet_ztile_zero.c
+++ b/runtime/parsec/codelets/codelet_ztile_zero.c
@@ -23,14 +23,14 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztile_zero_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztile_zero_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     int *X1;
     int *X2;
     int *Y1;
     int *Y2;
-    dague_data_copy_t *A;
-    int lda;
+    MORSE_Complex64_t *A;
+    int *lda;
     int x, y;
 
     dague_dtd_unpack_args(this_task,
@@ -42,11 +42,9 @@ CORE_ztile_zero_parsec(dague_execution_unit_t *context, dague_execution_context_
                           UNPACK_VALUE, &lda
                         );
 
-    MORSE_Complex64_t *T = (MORSE_Complex64_t *)DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)A);
-
     for (x = *X1; x < *X2; x++)
         for (y = *Y1; y < *Y2; y++)
-            T[lda*x+y] = 0.0;
+            A[*lda*x+y] = 0.0;
 
     return 0;
 }
diff --git a/runtime/parsec/codelets/codelet_ztradd.c b/runtime/parsec/codelets/codelet_ztradd.c
index de304f3bed4c695ef6d1060cef55a68c16987032..778a35a2b2bd23929690f8f6b82433bdddd39946 100644
--- a/runtime/parsec/codelets/codelet_ztradd.c
+++ b/runtime/parsec/codelets/codelet_ztradd.c
@@ -34,10 +34,10 @@ CORE_ztradd_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *M;
     int *N;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
     MORSE_Complex64_t *beta;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *LDB;
 
     dague_dtd_unpack_args(this_task,
@@ -46,16 +46,14 @@ CORE_ztradd_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
                           UNPACK_VALUE, &beta,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &LDB
                         );
 
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
 
     CORE_ztradd(*uplo, *trans, *M, *N, *alpha, A, *LDA, *beta, B, *LDB);
 
diff --git a/runtime/parsec/codelets/codelet_ztrasm.c b/runtime/parsec/codelets/codelet_ztrasm.c
index 8ca823adabaa521a533ebac559fdca2f8ac12b05..d2e9bb9e067cd14b5679f1c565f69012812e5eca 100644
--- a/runtime/parsec/codelets/codelet_ztrasm.c
+++ b/runtime/parsec/codelets/codelet_ztrasm.c
@@ -23,16 +23,16 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztrasm_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztrasm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *storev;
     MORSE_enum *uplo;
     MORSE_enum *diag;
     int *M;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gwork;
+    double *work;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &storev,
@@ -40,15 +40,11 @@ CORE_ztrasm_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &diag,
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gwork
+                          UNPACK_DATA,  &work
                         );
 
-
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *work = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gwork);
-
     CORE_ztrasm(*storev, *uplo, *diag, *M, *N, A, *lda, work);
 
     return 0;
@@ -69,6 +65,6 @@ void MORSE_TASK_ztrasm(MORSE_option_t *options,
                             sizeof(int),            &N,                     VALUE,
                             PASSED_BY_REF,          RTBLKADDR( A, MORSE_Complex64_t, Am, An ),     INPUT | REGION_FULL,
                             sizeof(int),            &lda,                   VALUE,
-                            PASSED_BY_REF,          RTBLKADDR( B, MORSE_Complex64_t, Bm, Bn ),     INOUT | REGION_FULL,
+                            PASSED_BY_REF,          RTBLKADDR( B, double, Bm, Bn ),     INOUT | REGION_FULL,
                              0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrmm.c b/runtime/parsec/codelets/codelet_ztrmm.c
index b0b584e094384b7e22a76da028f02e7ca2340a34..0d30bb046ca190ad5a02e86602e45ce48e2e30c5 100644
--- a/runtime/parsec/codelets/codelet_ztrmm.c
+++ b/runtime/parsec/codelets/codelet_ztrmm.c
@@ -23,7 +23,7 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztrmm_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztrmm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *uplo;
@@ -32,9 +32,9 @@ CORE_ztrmm_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
     int *M;
     int *N;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
-    dague_data_copy_t *gB;
+    MORSE_Complex64_t *B;
     int *LDB;
 
     dague_dtd_unpack_args(this_task,
@@ -45,14 +45,12 @@ CORE_ztrmm_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
                           UNPACK_VALUE, &M,
                           UNPACK_VALUE, &N,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
-                          UNPACK_DATA,  &gB,
+                          UNPACK_DATA,  &B,
                           UNPACK_VALUE, &LDB
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *B = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gB);
 
     CORE_ztrmm(*side, *uplo,
         *transA, *diag,
diff --git a/runtime/parsec/codelets/codelet_ztrsm.c b/runtime/parsec/codelets/codelet_ztrsm.c
index e2c994b840f7f27186a3a027dd4302b2d37fc7ad..926e9ad58e1f52c1011ac91374ef3807dd823234 100644
--- a/runtime/parsec/codelets/codelet_ztrsm.c
+++ b/runtime/parsec/codelets/codelet_ztrsm.c
@@ -23,13 +23,13 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztrsm_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztrsm_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *side, *uplo, *trans, *diag;
     int  *tempmm, *nb, *ldak, *ldam;
     MORSE_Complex64_t *alpha;
-    dague_data_copy_t *gT;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *T;
+    MORSE_Complex64_t *C;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &side,
@@ -39,17 +39,12 @@ CORE_ztrsm_parsec(dague_execution_unit_t *context, dague_execution_context_t * t
                           UNPACK_VALUE, &tempmm,
                           UNPACK_VALUE, &nb,
                           UNPACK_VALUE, &alpha,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldak,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &ldam
                         );
 
-    void *T = DAGUE_DATA_COPY_GET_PTR(gT);
-    void *C = DAGUE_DATA_COPY_GET_PTR(gC);
-    (void) T;
-    (void) C;
-
     CORE_ztrsm(*side, *uplo, *trans, *diag,
            *tempmm, *nb, *alpha, T, *ldak,
            C, *ldam);
diff --git a/runtime/parsec/codelets/codelet_ztrssq.c b/runtime/parsec/codelets/codelet_ztrssq.c
index 3632c3843733cf1649aaa2368fbea93f2d21edf9..99ecba0f9f75f8ee5dae3ddba2f542277ab05d66 100644
--- a/runtime/parsec/codelets/codelet_ztrssq.c
+++ b/runtime/parsec/codelets/codelet_ztrssq.c
@@ -23,28 +23,26 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztrssq_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztrssq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *diag;
     int *m;
     int *n;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gSCALESUMSQ;
+    double *SCALESUMSQ;
 
     dague_dtd_unpack_args(this_task,
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &diag,
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gSCALESUMSQ
+                          UNPACK_DATA,  &SCALESUMSQ
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    double *SCALESUMSQ = (double *) DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gSCALESUMSQ);
 
     CORE_ztrssq( *uplo, *diag, *m, *n, A, *lda, &SCALESUMSQ[0], &SCALESUMSQ[1]);
 
@@ -64,8 +62,8 @@ void MORSE_TASK_ztrssq( MORSE_option_t *options,
                             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 | REGION_FULL,
                             sizeof(int),            &lda,                   VALUE,
-                            PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, MORSE_Complex64_t, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
+                            PASSED_BY_REF,          RTBLKADDR( SCALESUMSQ, double, SCALESUMSQm, SCALESUMSQn ),    INOUT | REGION_FULL,
                             0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztrtri.c b/runtime/parsec/codelets/codelet_ztrtri.c
index 532065827e99acd547a9670641201f604de55089..d3c0b651d46a35160671fe9ccb158281699fd96c 100644
--- a/runtime/parsec/codelets/codelet_ztrtri.c
+++ b/runtime/parsec/codelets/codelet_ztrtri.c
@@ -23,15 +23,13 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztrtri_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztrtri_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *uplo;
     MORSE_enum *diag;
     int *N;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *LDA;
-    MORSE_sequence_t *sequence;
-    MORSE_request_t *request;
     int *iinfo;
     int info;
 
@@ -39,14 +37,11 @@ CORE_ztrtri_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &uplo,
                           UNPACK_VALUE, &diag,
                           UNPACK_VALUE, &N,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &LDA,
-                          UNPACK_VALUE, &sequence,
-                          UNPACK_VALUE, &request,
                           UNPACK_VALUE, &iinfo
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
 
     CORE_ztrtri(*uplo, *diag, *N, A, *LDA, &info);
 
@@ -67,8 +62,6 @@ void MORSE_TASK_ztrtri(MORSE_option_t *options,
                             sizeof(int),                &n,                     VALUE,
                             PASSED_BY_REF,              RTBLKADDR( A, MORSE_Complex64_t, Am, An ),   INOUT | REGION_FULL,
                             sizeof(int),                &lda,                   VALUE,
-                            sizeof(MORSE_sequence_t*),  &(options->sequence),   VALUE,
-                            sizeof(MORSE_request_t*),   &(options->request),    VALUE,
                             sizeof(int),                &iinfo,                 VALUE,
                             0);
 }
diff --git a/runtime/parsec/codelets/codelet_ztslqt.c b/runtime/parsec/codelets/codelet_ztslqt.c
index 5a6b464a736d5b758da10681a295518f2b7131ea..4748395b6df9ae85ad247850fe5eb42528a37307 100644
--- a/runtime/parsec/codelets/codelet_ztslqt.c
+++ b/runtime/parsec/codelets/codelet_ztslqt.c
@@ -23,16 +23,16 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztslqt_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztslqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
@@ -41,19 +41,16 @@ CORE_ztslqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &TAU,
                           UNPACK_SCRATCH, &WORK
                         );
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_ztslqt(*m, *n, *ib, A1, *lda1, A2, *lda2, T, *ldt, TAU, WORK);
 
diff --git a/runtime/parsec/codelets/codelet_ztsmlq.c b/runtime/parsec/codelets/codelet_ztsmlq.c
index 01373a97d030f7d1e7dd4d0ecfb7eb6f77e649ba..6ef8e10ad855f01008985d7ad8ee6f87956e85f3 100644
--- a/runtime/parsec/codelets/codelet_ztsmlq.c
+++ b/runtime/parsec/codelets/codelet_ztsmlq.c
@@ -23,7 +23,7 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztsmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztsmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -33,13 +33,13 @@ CORE_ztsmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *n2;
     int *k;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gV;
+    MORSE_Complex64_t *V;
     int *ldv;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *WORK;
     int *ldwork;
@@ -53,13 +53,13 @@ CORE_ztsmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &n2,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gV,
+                          UNPACK_DATA,  &V,
                           UNPACK_VALUE, &ldv,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &WORK,
                           UNPACK_VALUE, &ldwork
@@ -67,10 +67,6 @@ CORE_ztsmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
 
 
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *V = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gV);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_ztsmlq(*side, *trans, *m1, *n1, *m2, *n2, *k, *ib,
                 A1, *lda1, A2, *lda2, V, *ldv, T, *ldt, WORK, *ldwork);
diff --git a/runtime/parsec/codelets/codelet_ztsmqr.c b/runtime/parsec/codelets/codelet_ztsmqr.c
index 4134ca1c92e8a9c074eb74e7db5dbf4fdc6ab101..20bbacb0fd2d944eb3599eaea8dc11cbe5437802 100644
--- a/runtime/parsec/codelets/codelet_ztsmqr.c
+++ b/runtime/parsec/codelets/codelet_ztsmqr.c
@@ -33,13 +33,13 @@ CORE_ztsmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *n2;
     int *k;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gV;
+    MORSE_Complex64_t *V;
     int *ldv;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *WORK;
     int *ldwork;
@@ -53,22 +53,18 @@ CORE_ztsmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &n2,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gV,
+                          UNPACK_DATA,  &V,
                           UNPACK_VALUE, &ldv,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &WORK,
                           UNPACK_VALUE, &ldwork
                         );
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *V = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gV);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_ztsmqr(*side, *trans, *m1, *n1, *m2, *n2, *k, *ib,
                 A1, *lda1, A2, *lda2, V, *ldv, T, *ldt, WORK, *ldwork);
diff --git a/runtime/parsec/codelets/codelet_ztsqrt.c b/runtime/parsec/codelets/codelet_ztsqrt.c
index c31c667ba01811f512b3ac0b018d26763a5b1e83..53adf1ab3c71489e0a2c0306ee835d3a88e6632d 100644
--- a/runtime/parsec/codelets/codelet_ztsqrt.c
+++ b/runtime/parsec/codelets/codelet_ztsqrt.c
@@ -28,11 +28,11 @@ CORE_ztsqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
@@ -41,19 +41,16 @@ CORE_ztsqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &TAU,
                           UNPACK_SCRATCH, &WORK
                         );
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_ztsqrt(*m, *n, *ib, A1, *lda1, A2, *lda2, T, *ldt, TAU, WORK);
 
diff --git a/runtime/parsec/codelets/codelet_ztstrf.c b/runtime/parsec/codelets/codelet_ztstrf.c
index fbc14b603dea74bb955e5fc6d46c81acc1657a61..5df8b0581a5642bf6348103696c11ba70160e3d9 100644
--- a/runtime/parsec/codelets/codelet_ztstrf.c
+++ b/runtime/parsec/codelets/codelet_ztstrf.c
@@ -23,17 +23,17 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_ztstrf_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_ztstrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     int *m;
     int *n;
     int *ib;
     int *nb;
-    dague_data_copy_t *gU;
+    MORSE_Complex64_t *U;
     int *ldu;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gL;
+    MORSE_Complex64_t *L;
     int *ldl;
     int *IPIV;
     MORSE_Complex64_t *WORK;
@@ -48,11 +48,11 @@ CORE_ztstrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &ib,
                           UNPACK_VALUE, &nb,
-                          UNPACK_DATA,  &gU,
+                          UNPACK_DATA,  &U,
                           UNPACK_VALUE, &ldu,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gL,
+                          UNPACK_DATA,  &L,
                           UNPACK_VALUE, &ldl,
                           UNPACK_SCRATCH, &IPIV,
                           UNPACK_SCRATCH, &WORK,
@@ -61,9 +61,6 @@ CORE_ztstrf_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &iinfo
                         );
 
-    void *U = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gU);
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *L = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gL);
 
     CORE_ztstrf(*m, *n, *ib, *nb, U, *ldu, A, *lda, L, *ldl, IPIV, WORK, *ldwork, &info);
 
diff --git a/runtime/parsec/codelets/codelet_zttlqt.c b/runtime/parsec/codelets/codelet_zttlqt.c
index 10caf29248eb362ce9955f89aedcc3a9d35e2830..14f65a18b71687f5337bd17f8238e0985ba4b3aa 100644
--- a/runtime/parsec/codelets/codelet_zttlqt.c
+++ b/runtime/parsec/codelets/codelet_zttlqt.c
@@ -23,16 +23,16 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_zttlqt_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zttlqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
@@ -41,19 +41,16 @@ CORE_zttlqt_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE,   &m,
                           UNPACK_VALUE,   &n,
                           UNPACK_VALUE,   &ib,
-                          UNPACK_DATA,    &gA1,
+                          UNPACK_DATA,    &A1,
                           UNPACK_VALUE,   &lda1,
-                          UNPACK_DATA,    &gA2,
+                          UNPACK_DATA,    &A2,
                           UNPACK_VALUE,   &lda2,
-                          UNPACK_DATA,    &gT,
+                          UNPACK_DATA,    &T,
                           UNPACK_VALUE,   &ldt,
                           UNPACK_SCRATCH, &TAU,
                           UNPACK_SCRATCH, &WORK
                         );
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_zttlqt(*m, *n, *ib, A1, *lda1, A2, *lda2, T, *ldt, TAU, WORK);
 
diff --git a/runtime/parsec/codelets/codelet_zttmlq.c b/runtime/parsec/codelets/codelet_zttmlq.c
index be11155fb07d5b73dd213b51ca6914a89da2a116..3fc05fbfc17f426f0c33838007beedd7cde7cf90 100644
--- a/runtime/parsec/codelets/codelet_zttmlq.c
+++ b/runtime/parsec/codelets/codelet_zttmlq.c
@@ -33,13 +33,13 @@ CORE_zttmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *n2;
     int *k;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gV;
+    MORSE_Complex64_t *V;
     int *ldv;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *WORK;
     int *ldwork;
@@ -53,21 +53,17 @@ CORE_zttmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &n2,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gV,
+                          UNPACK_DATA,  &V,
                           UNPACK_VALUE, &ldv,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &WORK,
                           UNPACK_VALUE, &ldwork
                         );
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *V = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gV);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_zttmlq(*side, *trans, *m1, *n1, *m2, *n2, *k, *ib, A1, *lda1,
                 A2, *lda2, V, *ldv, T, *ldt, WORK, *ldwork);
diff --git a/runtime/parsec/codelets/codelet_zttmqr.c b/runtime/parsec/codelets/codelet_zttmqr.c
index c9260b20927707797aca5b13dfb00217d2e6497f..02a3f2367ca753497576ee2e7fe086eb8807e2b0 100644
--- a/runtime/parsec/codelets/codelet_zttmqr.c
+++ b/runtime/parsec/codelets/codelet_zttmqr.c
@@ -33,13 +33,13 @@ CORE_zttmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *n2;
     int *k;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gV;
+    MORSE_Complex64_t *V;
     int *ldv;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *WORK;
     int *ldwork;
@@ -53,22 +53,18 @@ CORE_zttmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &n2,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gV,
+                          UNPACK_DATA,  &V,
                           UNPACK_VALUE, &ldv,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &WORK,
                           UNPACK_VALUE, &ldwork
                         );
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *V = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gV);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_zttmqr(*side, *trans, *m1, *n1, *m2, *n2, *k, *ib,
                 A1, *lda1, A2, *lda2, V, *ldv, T, *ldt, WORK, *ldwork);
diff --git a/runtime/parsec/codelets/codelet_zttqrt.c b/runtime/parsec/codelets/codelet_zttqrt.c
index fc607fac1d84458af870eb5b740e710edd009526..b4650256e8ff981a43b9e6902f3218afe0daf098 100644
--- a/runtime/parsec/codelets/codelet_zttqrt.c
+++ b/runtime/parsec/codelets/codelet_zttqrt.c
@@ -28,11 +28,11 @@ CORE_zttqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *m;
     int *n;
     int *ib;
-    dague_data_copy_t *gA1;
+    MORSE_Complex64_t *A1;
     int *lda1;
-    dague_data_copy_t *gA2;
+    MORSE_Complex64_t *A2;
     int *lda2;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
     MORSE_Complex64_t *TAU;
     MORSE_Complex64_t *WORK;
@@ -41,20 +41,17 @@ CORE_zttqrt_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &m,
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA1,
+                          UNPACK_DATA,  &A1,
                           UNPACK_VALUE, &lda1,
-                          UNPACK_DATA,  &gA2,
+                          UNPACK_DATA,  &A2,
                           UNPACK_VALUE, &lda2,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
                           UNPACK_SCRATCH, &TAU,
                           UNPACK_SCRATCH, &WORK
                         );
 
 
-    void *A1 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA1);
-    void *A2 = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA2);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
 
     CORE_zttqrt(*m, *n, *ib, A1, *lda1, A2, *lda2, T, *ldt, TAU, WORK);
 
diff --git a/runtime/parsec/codelets/codelet_zunmlq.c b/runtime/parsec/codelets/codelet_zunmlq.c
index 8880376d3f62a3c21d054453e0ba9fb594f1cf3b..0fc8ba5d82b214a0b6e537a79238d6b607dcaa6b 100644
--- a/runtime/parsec/codelets/codelet_zunmlq.c
+++ b/runtime/parsec/codelets/codelet_zunmlq.c
@@ -23,7 +23,7 @@
 #include "runtime/parsec/include/morse_parsec.h"
 
 static int
-CORE_zunmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t * this_task)
+CORE_zunmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *this_task)
 {
     MORSE_enum *side;
     MORSE_enum *trans;
@@ -31,11 +31,11 @@ CORE_zunmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
     int *n;
     int *k;
     int *ib;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *ldc;
     MORSE_Complex64_t *WORK;
     int *ldwork;
@@ -47,19 +47,16 @@ CORE_zunmlq_parsec(dague_execution_unit_t *context, dague_execution_context_t *
                           UNPACK_VALUE, &n,
                           UNPACK_VALUE, &k,
                           UNPACK_VALUE, &ib,
-                          UNPACK_DATA,  &gA,
+                          UNPACK_DATA,  &A,
                           UNPACK_VALUE, &lda,
-                          UNPACK_DATA,  &gT,
+                          UNPACK_DATA,  &T,
                           UNPACK_VALUE, &ldt,
-                          UNPACK_DATA,  &gC,
+                          UNPACK_DATA,  &C,
                           UNPACK_VALUE, &ldc,
                           UNPACK_SCRATCH, &WORK,
                           UNPACK_VALUE, &ldwork
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gA);
-    void *T = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gT);
-    void *C = DAGUE_DATA_COPY_GET_PTR((dague_data_copy_t *)gC);
 
     CORE_zunmlq(*side, *trans, *m, *n, *k, *ib,
                 A, *lda, T, *ldt, C, *ldc, WORK, *ldwork);
@@ -74,7 +71,6 @@ void MORSE_TASK_zunmlq(MORSE_option_t *options,
                        MORSE_desc_t *T, int Tm, int Tn, int ldt,
                        MORSE_desc_t *C, int Cm, int Cn, int ldc)
 {
-
     dague_dtd_handle_t* DAGUE_dtd_handle = (dague_dtd_handle_t *)(options->sequence->schedopt);
 
 
diff --git a/runtime/parsec/codelets/codelet_zunmqr.c b/runtime/parsec/codelets/codelet_zunmqr.c
index a41dce55148f1251c24eddcf5f2917eda21b979b..4c0d33b28986b0b352c01e4b6db7c16704f4c1a3 100644
--- a/runtime/parsec/codelets/codelet_zunmqr.c
+++ b/runtime/parsec/codelets/codelet_zunmqr.c
@@ -31,11 +31,11 @@ CORE_zunmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
     int *n;
     int *k;
     int *ib;
-    dague_data_copy_t *gA;
+    MORSE_Complex64_t *A;
     int *lda;
-    dague_data_copy_t *gT;
+    MORSE_Complex64_t *T;
     int *ldt;
-    dague_data_copy_t *gC;
+    MORSE_Complex64_t *C;
     int *ldc;
     MORSE_Complex64_t *WORK;
     int *ldwork;
@@ -47,19 +47,16 @@ CORE_zunmqr_parsec(dague_execution_unit_t *context, dague_execution_context_t *t
                           UNPACK_VALUE,   &n,
                           UNPACK_VALUE,   &k,
                           UNPACK_VALUE,   &ib,
-                          UNPACK_DATA,    &gA,
+                          UNPACK_DATA,    &A,
                           UNPACK_VALUE,   &lda,
-                          UNPACK_DATA,    &gT,
+                          UNPACK_DATA,    &T,
                           UNPACK_VALUE,   &ldt,
-                          UNPACK_DATA,    &gC,
+                          UNPACK_DATA,    &C,
                           UNPACK_VALUE,   &ldc,
                           UNPACK_SCRATCH, &WORK,
                           UNPACK_VALUE,   &ldwork
                         );
 
-    void *A = DAGUE_DATA_COPY_GET_PTR(gA);
-    void *T = DAGUE_DATA_COPY_GET_PTR(gT);
-    void *C = DAGUE_DATA_COPY_GET_PTR(gC);
 
     CORE_zunmqr(*side, *trans, *m, *n, *k, *ib,
                 A, *lda, T, *ldt, C, *ldc, WORK, *ldwork);
diff --git a/runtime/parsec/control/runtime_async.c b/runtime/parsec/control/runtime_async.c
index b888daf6012d0857066da470ef2ac28c710adf1a..ddb77532cc5a4b0379c8c9169f879e7ae6725d2c 100644
--- a/runtime/parsec/control/runtime_async.c
+++ b/runtime/parsec/control/runtime_async.c
@@ -32,11 +32,13 @@ 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;
     (void)morse;
 
     assert( dague_dtd_handle );
 
+    dague_dtd_context_wait_on_handle(dague, dague_dtd_handle);
     dague_dtd_handle_destruct(dague_dtd_handle);
     sequence->schedopt = NULL;
     return MORSE_SUCCESS;
diff --git a/runtime/parsec/control/runtime_descriptor.c b/runtime/parsec/control/runtime_descriptor.c
index ea7b6958378c5e51a3482bb34d2a9168fd5f064a..a68af492aecfcd07720bf950009d8954e6ff7484 100644
--- a/runtime/parsec/control/runtime_descriptor.c
+++ b/runtime/parsec/control/runtime_descriptor.c
@@ -9,6 +9,7 @@
  **/
 #include <stdlib.h>
 #include "runtime/parsec/include/morse_parsec.h"
+#include <dague/data.h>
 
 struct morse_parsec_desc_s {
     dague_ddesc_t  super;
@@ -116,10 +117,10 @@ morse_parsec_data_of(dague_ddesc_t *ddesc, ...)
     /* TODO: change displacement in data_map when in distributed */
     assert( mdesc->nodes == 1 );
 #endif
-    return dague_data_get( pdesc->data_map + n * mdesc->lmt + m, ddesc,
-                           morse_parsec_data_key( ddesc, m, n ),
-                           mdesc->get_blkaddr( mdesc, m, n ),
-                           mdesc->bsiz * MORSE_Element_Size(mdesc->dtyp) );
+    return dague_data_create( pdesc->data_map + n * mdesc->lmt + m, ddesc,
+                              morse_parsec_data_key( ddesc, m, n ),
+                              mdesc->get_blkaddr( mdesc, m, n ),
+                              mdesc->bsiz * MORSE_Element_Size(mdesc->dtyp) );
 }
 
 static dague_data_t*
@@ -134,9 +135,9 @@ morse_parsec_data_of_key(dague_ddesc_t *ddesc, dague_data_key_t key)
     /* TODO: change displacement in data_map when in distributed */
     assert( mdesc->nodes == 1 );
 #endif
-    return dague_data_get( pdesc->data_map + key, ddesc, key,
-                           mdesc->get_blkaddr( mdesc, m, n ),
-                           mdesc->bsiz * MORSE_Element_Size(mdesc->dtyp) );
+    return dague_data_create( pdesc->data_map + key, ddesc, key,
+                              mdesc->get_blkaddr( mdesc, m, n ),
+                              mdesc->bsiz * MORSE_Element_Size(mdesc->dtyp) );
 }
 
 #ifdef DAGUE_PROF_TRACE
@@ -194,7 +195,7 @@ void RUNTIME_desc_create( MORSE_desc_t *mdesc )
 #endif
     ddesc->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(dague_data_t*) );
 
     /* Double linking */
     pdesc->desc     = mdesc;
@@ -217,23 +218,13 @@ void RUNTIME_desc_destroy( MORSE_desc_t *mdesc )
 
         for(i=0; i<nb_local_tiles; i++, data++)
         {
-            if (*data != NULL)
-            {
-                /*
-                 * Need to call destruct before release due to circular
-                 * dependency between the dague_data_copy_t and the dague_data_t
-                 */
-                OBJ_DESTRUCT(*data);
-#if defined(DAGUE_DEBUG_ENABLE)
-                ((dague_object_t *) (*data))->obj_magic_id = DAGUE_OBJ_MAGIC_ID;
-#endif
-                OBJ_RELEASE(*data);
-            }
+            dague_data_destroy( *data );
         }
 
         free( pdesc->data_map );
         pdesc->data_map = NULL;
     }
+    free(pdesc);
     return;
 }
 
diff --git a/runtime/parsec/include/morse_parsec.h b/runtime/parsec/include/morse_parsec.h
index f1ebf7e57a4e1eb57a1563d481ca8494b3533731..00acf344e789a31b773c2c253c006f1470a67db7 100644
--- a/runtime/parsec/include/morse_parsec.h
+++ b/runtime/parsec/include/morse_parsec.h
@@ -13,8 +13,6 @@
 
 #include <dague.h>
 #include <dague/insert_function.h>
-#include <dague/data_internal.h>
-#include <dague/profiling.h>
 
 #include "control/common.h"
 
@@ -24,7 +22,6 @@ typedef struct morse_parsec_desc_s morse_parsec_desc_t;
 /*
  * Access to block pointer and leading dimension
  */
-//#define RTBLKADDR( desc, type, m, n ) ( (type*)RUNTIME_desc_getaddr( desc, m, n ) )
-#define RTBLKADDR( desc, type, m, n ) ( tile_manage( DAGUE_dtd_handle, (desc)->schedopt, m, n ) )
+#define RTBLKADDR( desc, type, m, n ) ( dague_dtd_tile_of( DAGUE_dtd_handle, (desc)->schedopt, m, n ) )
 
 #endif /* _MORSE_PARSEC_H_ */
diff --git a/testing/testing_zlange.c b/testing/testing_zlange.c
index ad5929f114662b44e6f7c6c9175701e1477d24c6..93031b164e7a58bbc4706bcfc65cf213e5e7a98d 100644
--- a/testing/testing_zlange.c
+++ b/testing/testing_zlange.c
@@ -60,7 +60,7 @@ int testing_zlange(int argc, char **argv)
     /* Allocate Data */
     MORSE_Complex64_t *A    = (MORSE_Complex64_t *)malloc(LDAxN*sizeof(MORSE_Complex64_t));
     double            *work = (double*) malloc(max(M,N)*sizeof(double));
-    double normmorse=0, normlapack, result;
+    double normmorse, normlapack, result;
 
     eps = LAPACKE_dlamch_work('e');