diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index 7672a718551612edfc705c5750121155916b3c2a..d97fe0da810d2317619828601e64bffe2f711947 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -9,8 +9,8 @@
 #
 ###
 #
-#  @project MORSE
-#  MORSE is a software package provided by:
+#  @project CHAMELEON
+#  CHAMELEON is a software package provided by:
 #     Inria Bordeaux - Sud-Ouest,
 #     Univ. of Tennessee,
 #     King Abdullah Univesity of Science and Technology
@@ -26,14 +26,14 @@
 #
 ###
 
-# Generate the morse headers for all possible precisions
-# ------------------------------------------------------
+# Generate the chameleon headers for all possible precisions
+# ----------------------------------------------------------
 set(CHAMELEON_HDRS_GENERATED "")
 set(ZHDR
-    chameleon/morse_z.h
-    chameleon/morse_zc.h
-    chameleon/morse_tasks_z.h
-    chameleon/morse_tasks_zc.h
+    chameleon/chameleon_z.h
+    chameleon/chameleon_zc.h
+    chameleon/chameleon_tasks_z.h
+    chameleon/chameleon_tasks_zc.h
 )
 
 precisions_rules_py(CHAMELEON_HDRS_GENERATED "${ZHDR}"
@@ -48,14 +48,15 @@ configure_file("chameleon/chameleon_config.h.in"
 # --------------------------
 set(CHAMELEON_HDRS
   ${CMAKE_CURRENT_BINARY_DIR}/chameleon/chameleon_config.h
-  ${CMAKE_CURRENT_BINARY_DIR}/chameleon/morse_mangling.h
-  chameleon/morse_constants.h
-  chameleon/morse_kernels.h
-  chameleon/morse_runtime.h
-  chameleon/morse_simulate.h
-  chameleon/morse_struct.h
-  chameleon/morse_tasks.h
-  chameleon/morse_types.h
+  ${CMAKE_CURRENT_BINARY_DIR}/chameleon/chameleon_mangling.h
+  chameleon/chameleon_constants.h
+  chameleon/chameleon_kernels.h
+  chameleon/chameleon_simulate.h
+  chameleon/chameleon_struct.h
+  chameleon/chameleon_tasks.h
+  chameleon/chameleon_types.h
+  chameleon/runtime.h
+  chameleon/runtime_struct.h
   )
 
 # Add generated headers
@@ -67,12 +68,12 @@ endforeach()
 # Force generation of headers
 # ---------------------------
 add_custom_target(chameleon_include
-  ALL SOURCES morse.h ${CHAMELEON_HDRS} )
+  ALL SOURCES chameleon.h ${CHAMELEON_HDRS} )
 set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};chameleon_include" CACHE INTERNAL "List of targets of sources")
 
 # Installation
 # ------------
-install( FILES morse.h
+install( FILES chameleon.h
          DESTINATION include )
 
 install( FILES ${CHAMELEON_HDRS}
diff --git a/include/morse.h b/include/chameleon.h
similarity index 100%
rename from include/morse.h
rename to include/chameleon.h
diff --git a/include/chameleon/chameleon_constants.h b/include/chameleon/chameleon_constants.h
new file mode 100644
index 0000000000000000000000000000000000000000..c498c9c2b4debb4033ce4d76eab19cd2a1c4549a
--- /dev/null
+++ b/include/chameleon/chameleon_constants.h
@@ -0,0 +1,157 @@
+/**
+ *
+ * @file chameleon_constants.h
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation. All rights reserved.
+ * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon global constants
+ *
+ * @version 1.0.0
+ * @author Cedric Augonnet
+ * @author Mathieu Faverge
+ * @author Cedric Castagnede
+ * @date 2011-06-01
+ *
+ */
+#ifndef _chameleon_constants_h_
+#define _chameleon_constants_h_
+
+/**
+ *
+ * @brief Chameleon constants - CBLAS & LAPACK
+ *  The naming and numbering is consistent with:
+ *
+ *    1) CBLAS from Netlib (http://www.netlib.org/blas/blast-forum/cblas.tgz),
+ *    2) C Interface to LAPACK from Netlib (http://www.netlib.org/lapack/lapwrapc/).
+ *
+ */
+#define ChameleonByte              0
+#define ChameleonInteger           1
+#define ChameleonRealFloat         2
+#define ChameleonRealDouble        3
+#define ChameleonComplexFloat      4
+#define ChameleonComplexDouble     5
+
+#define ChameleonCM              101
+#define ChameleonRM              102
+#define ChameleonCCRB            103
+#define ChameleonCRRB            104
+#define ChameleonRCRB            105
+#define ChameleonRRRB            106
+
+#define ChameleonNoTrans         111
+#define ChameleonTrans           112
+#define ChameleonConjTrans       113
+
+#define ChameleonUpper           121
+#define ChameleonLower           122
+#define ChameleonUpperLower      123
+
+#define ChameleonNonUnit         131
+#define ChameleonUnit            132
+
+#define ChameleonLeft            141
+#define ChameleonRight           142
+
+#define ChameleonOneNorm         171
+#define ChameleonRealOneNorm     172
+#define ChameleonTwoNorm         173
+#define ChameleonFrobeniusNorm   174
+#define ChameleonInfNorm         175
+#define ChameleonRealInfNorm     176
+#define ChameleonMaxNorm         177
+#define ChameleonRealMaxNorm     178
+
+#define ChameleonDistUniform     201
+#define ChameleonDistSymmetric   202
+#define ChameleonDistNormal      203
+
+#define ChameleonHermGeev        241
+#define ChameleonHermPoev        242
+#define ChameleonNonsymPosv      243
+#define ChameleonSymPosv         244
+
+#define ChameleonNoPacking       291
+#define ChameleonPackSubdiag     292
+#define ChameleonPackSupdiag     293
+#define ChameleonPackColumn      294
+#define ChameleonPackRow         295
+#define ChameleonPackLowerBand   296
+#define ChameleonPackUpeprBand   297
+#define ChameleonPackAll         298
+
+#define ChameleonNoVec           301
+#define ChameleonVec             302
+#define ChameleonIvec            303
+
+#define ChameleonForward         391
+#define ChameleonBackward        392
+
+#define ChameleonColumnwise      401
+#define ChameleonRowwise         402
+#define ChameleonTrd            1001
+#define ChameleonBrd            1002
+
+#define ChameleonW               501
+#define ChameleonA2              502
+
+/**
+ *  CHAMELEON constants - boolean
+ */
+#define CHAMELEON_FALSE  0
+#define CHAMELEON_TRUE   1
+
+#define CHAMELEON_CPU    ((1ULL)<<1)
+#define CHAMELEON_CUDA   ((1ULL)<<3)
+
+/**
+ *  State machine switches
+ */
+#define CHAMELEON_WARNINGS        1
+#define CHAMELEON_ERRORS          2
+#define CHAMELEON_AUTOTUNING      3
+#define CHAMELEON_DAG             4
+#define CHAMELEON_PROFILING_MODE  5
+#define CHAMELEON_PARALLEL_MODE   6
+#define CHAMELEON_BOUND           7
+#define CHAMELEON_PROGRESS        8
+#define CHAMELEON_GEMM3M          9
+
+/**
+ *  CHAMELEON constants - configuration parameters
+ */
+#define CHAMELEON_CONCURRENCY       1
+#define CHAMELEON_TILE_SIZE         2
+#define CHAMELEON_INNER_BLOCK_SIZE  3
+#define CHAMELEON_HOUSEHOLDER_MODE  5
+#define CHAMELEON_HOUSEHOLDER_SIZE  6
+#define CHAMELEON_TRANSLATION_MODE  7
+
+#define CHAMELEON_FLAT_HOUSEHOLDER  1
+#define CHAMELEON_TREE_HOUSEHOLDER  2
+
+#define CHAMELEON_INPLACE           1
+#define CHAMELEON_OUTOFPLACE        2
+
+/**
+ *  CHAMELEON constants - success & error codes
+ */
+#define CHAMELEON_SUCCESS                 0
+#define CHAMELEON_ERR_NOT_INITIALIZED  -101
+#define CHAMELEON_ERR_REINITIALIZED    -102
+#define CHAMELEON_ERR_NOT_SUPPORTED    -103
+#define CHAMELEON_ERR_ILLEGAL_VALUE    -104
+#define CHAMELEON_ERR_NOT_FOUND        -105
+#define CHAMELEON_ERR_OUT_OF_RESOURCES -106
+#define CHAMELEON_ERR_INTERNAL_LIMIT   -107
+#define CHAMELEON_ERR_UNALLOCATED      -108
+#define CHAMELEON_ERR_FILESYSTEM       -109
+#define CHAMELEON_ERR_UNEXPECTED       -110
+#define CHAMELEON_ERR_SEQUENCE_FLUSHED -111
+
+#endif
diff --git a/include/chameleon/morse_fortran.h b/include/chameleon/chameleon_fortran.h
similarity index 100%
rename from include/chameleon/morse_fortran.h
rename to include/chameleon/chameleon_fortran.h
diff --git a/include/chameleon/morse_simulate.h b/include/chameleon/chameleon_simulate.h
similarity index 88%
rename from include/chameleon/morse_simulate.h
rename to include/chameleon/chameleon_simulate.h
index 66e13b429e909d175052c058f77af8781c55b3f2..5e0631b0483ecbd2d75748e9eb520ab7a8b144f8 100644
--- a/include/chameleon/morse_simulate.h
+++ b/include/chameleon/chameleon_simulate.h
@@ -1,6 +1,6 @@
 /**
  *
- * @file morse_simulate.h
+ * @file chameleon_simulate.h
  *
  * @copyright 2009-2014 The University of Tennessee and The University of
  *                      Tennessee Research Foundation. All rights reserved.
@@ -16,8 +16,8 @@
  * @date 2014-10-02
  *
  */
-#ifndef _MORSE_SIMULATE_H_
-#define _MORSE_SIMULATE_H_
+#ifndef _chameleon_simulate_h_
+#define _chameleon_simulate_h_
 
 #include "chameleon/chameleon_config.h"
 
diff --git a/include/chameleon/morse_struct.h b/include/chameleon/chameleon_struct.h
similarity index 65%
rename from include/chameleon/morse_struct.h
rename to include/chameleon/chameleon_struct.h
index 32fcfbb46f53496520810e5925f58f4610c37722..b981bcd6ce77b71e456155e6e7ccf45da7cda063 100644
--- a/include/chameleon/morse_struct.h
+++ b/include/chameleon/chameleon_struct.h
@@ -1,6 +1,6 @@
 /**
  *
- * @file morse_struct.h
+ * @file chameleon_struct.h
  *
  * @copyright 2009-2014 The University of Tennessee and The University of
  *                      Tennessee Research Foundation. All rights reserved.
@@ -18,28 +18,14 @@
  * @date 2011-06-01
  *
  */
-#ifndef _MORSE_STRUCT_H_
-#define _MORSE_STRUCT_H_
+#ifndef _CHAMELEON_STRUCT_H_
+#define _CHAMELEON_STRUCT_H_
 
 #include "chameleon/chameleon_config.h"
-#include "chameleon/morse_types.h"
-#include "chameleon/morse_kernels.h"
+#include "chameleon/chameleon_types.h"
 
 BEGIN_C_DECLS
 
-/**
- * RUNTIME headers to include types of :
- *         - QUARK
- *         - PaRSEC
- *         - StarPU
- */
-typedef enum morse_sched_e {
-  RUNTIME_SCHED_QUARK,
-  RUNTIME_SCHED_PARSEC,
-  RUNTIME_SCHED_STARPU,
-} MORSE_sched_t;
-
-
 /**
  *  Tile matrix descriptor
  *
@@ -58,22 +44,22 @@ typedef enum morse_sched_e {
  *      +----------+---+
  *
  */
-struct morse_desc_s;
-typedef struct morse_desc_s MORSE_desc_t;
+struct matrix_desc_s;
+typedef struct matrix_desc_s MATRIX_desc_t;
 
-struct morse_desc_s {
+struct matrix_desc_s {
     // function to get matrix tiles address
-    void *(*get_blkaddr)( const MORSE_desc_t*, int, int );
+    void *(*get_blkaddr)( const MATRIX_desc_t*, int, int );
     // function to get matrix tiles leading dimension
-    int   (*get_blkldd )( const MORSE_desc_t*, int );
+    int   (*get_blkldd )( const MATRIX_desc_t*, int );
     // function to get matrix tiles MPI rank
-    int   (*get_rankof) ( const MORSE_desc_t*, int, int );
+    int   (*get_rankof) ( const MATRIX_desc_t*, int, int );
     void *mat;        // pointer to the beginning of the matrix
     size_t A21;       // pointer to the beginning of the matrix A21
     size_t A12;       // pointer to the beginning of the matrix A12
     size_t A22;       // pointer to the beginning of the matrix A22
-    MORSE_enum styp;  // storage layout of the matrix
-    MORSE_enum dtyp;  // precision of the matrix
+    CHAMELEON_enum styp;  // storage layout of the matrix
+    CHAMELEON_enum dtyp;  // precision of the matrix
     int mb;           // number of rows in a tile
     int nb;           // number of columns in a tile
     int bsiz;         // size in elements including padding
@@ -110,10 +96,10 @@ struct morse_desc_s {
 
 
 /**
- *  MORSE request uniquely identifies each asynchronous function call.
+ *  CHAMELEON request uniquely identifies each asynchronous function call.
  */
-typedef struct morse_context_s {
-    MORSE_sched_t      scheduler;
+typedef struct chameleon_context_s {
+    RUNTIME_id_t       scheduler;
     int                nworkers;
     int                ncudas;
     int                nthreads_per_worker;
@@ -125,14 +111,14 @@ typedef struct morse_context_s {
     int                group_size;
 
     /* Boolean flags */
-    MORSE_bool         warnings_enabled;
-    MORSE_bool         autotuning_enabled;
-    MORSE_bool         parallel_enabled;
-    MORSE_bool         profiling_enabled;
-    MORSE_bool         progress_enabled;
+    CHAMELEON_bool         warnings_enabled;
+    CHAMELEON_bool         autotuning_enabled;
+    CHAMELEON_bool         parallel_enabled;
+    CHAMELEON_bool         profiling_enabled;
+    CHAMELEON_bool         progress_enabled;
 
-    MORSE_enum         householder;        // "domino" (flat) or tree-based (reduction) Householder
-    MORSE_enum         translation;        // In place or Out of place layout conversion
+    CHAMELEON_enum         householder;        // "domino" (flat) or tree-based (reduction) Householder
+    CHAMELEON_enum         translation;        // In place or Out of place layout conversion
 
     int                nb;
     int                ib;
@@ -141,45 +127,8 @@ typedef struct morse_context_s {
     int                rhblock;            // block size for tree-based (reduction) Householder
     void              *schedopt;           // structure for runtimes
     int                mpi_outer_init;     // MPI has been initialized outside our functions
-} MORSE_context_t;
-
-
-/**
- *  MORSE request uniquely identifies each asynchronous function call.
- */
-typedef struct morse_request_s {
-    MORSE_enum status; // MORSE_SUCCESS or appropriate error code
-} MORSE_request_t;
-
-
-/**
- *  MORSE sequence uniquely identifies a set of asynchronous function calls
- *  sharing common exception handling.
- */
-typedef struct morse_sequence_s {
-    MORSE_bool       status;    /* MORSE_SUCCESS or appropriate error code */
-    MORSE_request_t *request;   /* failed request                          */
-    void            *schedopt;
-} MORSE_sequence_t;
-
-
-/**
- *  MORSE options
- */
-typedef struct morse_option_s {
-    MORSE_sequence_t *sequence;
-    MORSE_request_t  *request;
-    int               profiling;
-    int               parallel;
-    int               priority;
-    int               nb;
-    size_t            ws_wsize;
-    size_t            ws_hsize;
-    void             *ws_worker;  /*> Workspace located on the worker        */
-    void             *ws_host;    /*> Workspace *always* located on the host */
-    void             *schedopt;
-} MORSE_option_t;
+} CHAMELEON_context_t;
 
 END_C_DECLS
 
-#endif /* __CHAMELEON_H__ */
+#endif /* _chameleon_struct_h_ */
diff --git a/include/chameleon/chameleon_tasks.h b/include/chameleon/chameleon_tasks.h
new file mode 100644
index 0000000000000000000000000000000000000000..8c4828793c6a25dd831ad7a4eb39da0b162a9c60
--- /dev/null
+++ b/include/chameleon/chameleon_tasks.h
@@ -0,0 +1,98 @@
+/**
+ *
+ * @file chameleon_tasks.h
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation. All rights reserved.
+ * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon elementary tasks main header
+ *
+ * @version 1.0.0
+ * @author Mathieu Faverge
+ * @author Cedric Augonnet
+ * @date 2011-06-01
+ *
+ */
+#ifndef _chameleon_tasks_h_
+#define _chameleon_tasks_h_
+
+#include "chameleon/chameleon_config.h"
+
+BEGIN_C_DECLS
+
+/**
+ * @brief Kernel enum
+ *
+ * Those enums are Used to apply operations on specific kernels, and or for
+ * tracing/profiling.
+ */
+typedef enum chameleon_tasktype_e {
+
+  TASK_GEMM,
+  TASK_HEMM,
+  TASK_HER2K,
+  TASK_HERK,
+  TASK_SYTRF_NOPIV,
+  TASK_SYMM,
+  TASK_SYR2K,
+  TASK_SYRK,
+  TASK_TRSM,
+  TASK_TRMM,
+
+  TASK_GELQT,
+  TASK_GEQRT,
+  TASK_GESSM,
+  TASK_GETRF,
+  TASK_GETRF_INCPIV,
+  TASK_GETRF_NOPIV,
+  TASK_LAUUM,
+  TASK_ORMLQ,
+  TASK_ORMQR,
+  TASK_POTRF,
+  TASK_SSSSM,
+  TASK_TRTRI,
+  TASK_TSLQT,
+  TASK_TSMLQ,
+  TASK_TSMQR,
+  TASK_TSQRT,
+  TASK_TSTRF,
+  TASK_TTLQT,
+  TASK_TTMLQ,
+  TASK_TTMQR,
+  TASK_TTQRT,
+  TASK_UNMLQ,
+  TASK_UNMQR,
+
+  TASK_GEADD,
+  TASK_LASCAL,
+  TASK_LACPY,
+  TASK_LAG2C,
+  TASK_LAG2Z,
+  TASK_LANGE,
+  TASK_LANHE,
+  TASK_LANSY,
+  TASK_LASET,
+  TASK_LASET2,
+  TASK_PEMV,
+  TASK_PLGHE,
+  TASK_PLGSY,
+  TASK_PLRNT,
+  TASK_TILE_ZERO,
+
+  TASK_NBKERNELS
+} chameleon_tasktype_t;
+
+#include "chameleon/chameleon_tasks_z.h"
+#include "chameleon/chameleon_tasks_d.h"
+#include "chameleon/chameleon_tasks_c.h"
+#include "chameleon/chameleon_tasks_s.h"
+#include "chameleon/chameleon_tasks_zc.h"
+#include "chameleon/chameleon_tasks_ds.h"
+
+END_C_DECLS
+
+#endif /* _chameleon_tasks_h_ */
diff --git a/include/chameleon/chameleon_tasks_z.h b/include/chameleon/chameleon_tasks_z.h
new file mode 100644
index 0000000000000000000000000000000000000000..f404348b6489b03564a2d377b4057ec4e4e1f30b
--- /dev/null
+++ b/include/chameleon/chameleon_tasks_z.h
@@ -0,0 +1,467 @@
+/**
+ *
+ * @file chameleon_tasks_z.h
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation. All rights reserved.
+ * @copyright 2012-2016 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon CHAMELEON_Complex64_t elementary tasks header
+ *
+ * @version 1.0.0
+ * @comment This file has been automatically generated
+ *          from Plasma 2.5.0 for CHAMELEON 1.0.0
+ * @author Jakub Kurzak
+ * @author Hatem Ltaief
+ * @author Azzam Haidar
+ * @author Mathieu Faverge
+ * @author Emmanuel Agullo
+ * @author Cedric Castagnede
+ * @date 2010-11-15
+ * @precisions normal z -> c d s
+ *
+ */
+#ifndef _chameleon_tasks_z_h_
+#define _chameleon_tasks_z_h_
+
+/**
+ *  Declarations of QUARK wrappers (called by CHAMELEON) - alphabetical order
+ */
+void InsertTask_dzasum( const RUNTIME_option_t *options,
+                        MORSE_enum storev, MORSE_enum uplo, int M, int N,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn );
+void InsertTask_zgeadd( const RUNTIME_option_t *options,
+                        MORSE_enum trans, int m, int n, int nb,
+                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                        MORSE_Complex64_t beta,  const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_zlascal( const RUNTIME_option_t *options,
+                         MORSE_enum uplo,
+                         int m, int n, int nb,
+                         MORSE_Complex64_t alpha,
+                         const MORSE_desc_t *A, int Am, int An, int lda );
+void InsertTask_zbrdalg( const RUNTIME_option_t *options,
+                         MORSE_enum uplo,
+                         int N, int NB,
+                         const MORSE_desc_t *A,
+                         const MORSE_desc_t *C, int Cm, int Cn,
+                         const MORSE_desc_t *S, int Sm, int Sn,
+                         int i, int j, int m, int grsiz, int BAND,
+                         int *PCOL, int *ACOL, int *MCOL );
+void InsertTask_zgelqt( const RUNTIME_option_t *options,
+                        int m, int n, int ib, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_zgemm( const RUNTIME_option_t *options,
+                       MORSE_enum transA, MORSE_enum transB,
+                       int m, int n, int k, int nb,
+                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                       const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zgemm2( const RUNTIME_option_t *options,
+                        MORSE_enum transA, MORSE_enum transB,
+                        int m, int n, int k, int nb,
+                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                        MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zgemm_f2( const RUNTIME_option_t *options,
+                          MORSE_enum transA, MORSE_enum transB,
+                          int m, int n, int k, int nb,
+                          MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                          const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                          MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc,
+                          const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1,
+                          const MORSE_desc_t *fake2, int fake2m, int fake2n, int szefake2, int flag2 );
+void InsertTask_zgemm_p2( const RUNTIME_option_t *options,
+                          MORSE_enum transA, MORSE_enum transB,
+                          int m, int n, int k, int nb,
+                          MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                          const MORSE_Complex64_t **B, int ldb,
+                          MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zgemm_p2f1( const RUNTIME_option_t *options,
+                            MORSE_enum transA, MORSE_enum transB,
+                            int m, int n, int k, int nb,
+                            MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                            const MORSE_Complex64_t **B, int ldb,
+                            MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc,
+                            const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1 );
+void InsertTask_zgemm_p3( const RUNTIME_option_t *options,
+                          MORSE_enum transA, MORSE_enum transB,
+                          int m, int n, int k, int nb,
+                          MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                          const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                          MORSE_Complex64_t beta, MORSE_Complex64_t **C, int ldc );
+void InsertTask_zgeqrt( const RUNTIME_option_t *options,
+                        int m, int n, int ib, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_zgessm( const RUNTIME_option_t *options,
+                        int m, int n, int k, int ib, int nb,
+                        int *IPIV,
+                        const MORSE_desc_t *L, int Lm, int Ln, int ldl,
+                        const MORSE_desc_t *D, int Dm, int Dn, int ldd,
+                        const MORSE_desc_t *A, int Am, int An, int lda );
+void InsertTask_zgessq( const RUNTIME_option_t *options,
+                        int m, int n,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn );
+void InsertTask_zgetrf( const RUNTIME_option_t *options,
+                        int m, int n, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        int *IPIV,
+
+                        MORSE_bool check_info, int iinfo );
+void InsertTask_zgetrf_incpiv( const RUNTIME_option_t *options,
+                               int m, int n, int ib, int nb,
+                               const MORSE_desc_t *A, int Am, int An, int lda,
+                               const MORSE_desc_t *L, int Lm, int Ln, int ldl,
+                               int *IPIV,
+                               MORSE_bool check_info, int iinfo );
+void InsertTask_zgetrf_nopiv( const RUNTIME_option_t *options,
+                              int m, int n, int ib, int nb,
+                              const MORSE_desc_t *A, int Am, int An, int lda, int iinfo );
+void InsertTask_zgetrf_reclap( const RUNTIME_option_t *options,
+                               int m, int n, int nb,
+                               const MORSE_desc_t *A, int Am, int An, int lda,
+                               int *IPIV,
+
+                               MORSE_bool check_info, int iinfo,
+                               int nbthread );
+void InsertTask_zgetrf_rectil( const RUNTIME_option_t *options,
+                               const MORSE_desc_t A, const MORSE_desc_t *Amn, int Amnm, int Amnn, int size,
+                               int *IPIV,
+
+                               MORSE_bool check_info, int iinfo,
+                               int nbthread );
+void InsertTask_zgetrip( const RUNTIME_option_t *options,
+                         int m, int n, const MORSE_desc_t *A, int Am, int An, int szeA );
+void InsertTask_zgetrip_f1( const RUNTIME_option_t *options,
+                            int m, int n, const MORSE_desc_t *A, int Am, int An, int szeA,
+                            const MORSE_desc_t *fake, int fakem, int faken, int szeF, int paramF );
+void InsertTask_zgetrip_f2( const RUNTIME_option_t *options,
+                            int m, int n, const MORSE_desc_t *A, int Am, int An, int szeA,
+                            const MORSE_desc_t *fake1, int fake1m, int fake1n, int szeF1, int paramF1,
+                            const MORSE_desc_t *fake2, int fake2m, int fake2n, int szeF2, int paramF2 );
+void InsertTask_zhe2ge( const RUNTIME_option_t *options,
+                        MORSE_enum uplo,
+                        int m, int n, int mb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_zhemm( const RUNTIME_option_t *options,
+                       MORSE_enum side, MORSE_enum uplo,
+                       int m, int n, int nb,
+                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                       const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zhegst( const RUNTIME_option_t *options,
+                        int itype, MORSE_enum uplo, int N,
+                        const MORSE_desc_t *A, int Am, int An, int LDA,
+                        const MORSE_desc_t *B, int Bm, int Bn, int LDB,
+                        int iinfo );
+void InsertTask_zherk( const RUNTIME_option_t *options,
+                       MORSE_enum uplo, MORSE_enum trans,
+                       int n, int k, int nb,
+                       double alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                       double beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zher2k( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, MORSE_enum trans,
+                        int n, int k, int nb,
+                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int LDB,
+                        double beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zherfb( const RUNTIME_option_t *options,
+                        MORSE_enum uplo,
+                        int n, int k, int ib, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt,
+                        const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zlacpy( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, int m, int n, int mb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_zlacpyx( const RUNTIME_option_t *options,
+                         MORSE_enum uplo, int m, int n, int mb,
+                         int displA, const MORSE_desc_t *A, int Am, int An, int lda,
+                         int displB, const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_zlange( const RUNTIME_option_t *options,
+                        MORSE_enum norm, int M, int N, int NB,
+                        const MORSE_desc_t *A, int Am, int An, int LDA,
+                        const MORSE_desc_t *B, int Bm, int Bn );
+void InsertTask_zlange_max( const RUNTIME_option_t *options,
+                            const MORSE_desc_t *A, int Am, int An,
+                            const MORSE_desc_t *B, int Bm, int Bn );
+void InsertTask_zhessq( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, int n,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn );
+void InsertTask_zlanhe( const RUNTIME_option_t *options,
+                        MORSE_enum norm, MORSE_enum uplo, int N, int NB,
+                        const MORSE_desc_t *A, int Am, int An, int LDA,
+                        const MORSE_desc_t *B, int Bm, int Bn );
+void InsertTask_zlansy( const RUNTIME_option_t *options,
+                        MORSE_enum norm, MORSE_enum uplo, int N, int NB,
+                        const MORSE_desc_t *A, int Am, int An, int LDA,
+                        const MORSE_desc_t *B, int Bm, int Bn );
+void InsertTask_zlantr( const RUNTIME_option_t *options,
+                        MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
+                        int M, int N, int NB,
+                        const MORSE_desc_t *A, int Am, int An, int LDA,
+                        const MORSE_desc_t *B, int Bm, int Bn );
+void InsertTask_zlaset( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, int n1, int n2, MORSE_Complex64_t alpha,
+                        MORSE_Complex64_t beta, const MORSE_desc_t *tileA, int tileAm, int tileAn, int ldtilea );
+void InsertTask_zlaset2( const RUNTIME_option_t *options,
+                         MORSE_enum uplo, int n1, int n2, MORSE_Complex64_t alpha,
+                         const MORSE_desc_t *tileA, int tileAm, int tileAn, int ldtilea );
+void InsertTask_zlaswp( const RUNTIME_option_t *options,
+                        int n, const MORSE_desc_t *A, int Am, int An, int lda,
+                        int i1,  int i2, int *ipiv, int inc );
+void InsertTask_zlaswp_f2( const RUNTIME_option_t *options,
+                           int n, const MORSE_desc_t *A, int Am, int An, int lda,
+                           int i1,  int i2, int *ipiv, int inc,
+                           const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1,
+                           const MORSE_desc_t *fake2, int fake2m, int fake2n, int szefake2, int flag2 );
+void InsertTask_zlaswp_ontile( const RUNTIME_option_t *options,
+                               const MORSE_desc_t descA, const MORSE_desc_t *A, int Am, int An,
+                               int i1,  int i2, int *ipiv, int inc, MORSE_Complex64_t *fakepanel );
+void InsertTask_zlaswp_ontile_f2( const RUNTIME_option_t *options,
+                                  const MORSE_desc_t descA, const MORSE_desc_t *A, int Am, int An,
+                                  int i1,  int i2, int *ipiv, int inc,
+                                  const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1,
+                                  const MORSE_desc_t *fake2, int fake2m, int fake2n, int szefake2, int flag2 );
+void InsertTask_zlaswpc_ontile( const RUNTIME_option_t *options,
+                                const MORSE_desc_t descA, const MORSE_desc_t *A, int Am, int An,
+                                int i1,  int i2, int *ipiv, int inc, MORSE_Complex64_t *fakepanel );
+void InsertTask_zlatro( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, MORSE_enum trans, int m, int n, int mb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_zlauum( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, int n, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda );
+void InsertTask_zplghe( const RUNTIME_option_t *options,
+                        double bump, int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
+                        int bigM, int m0, int n0, unsigned long long int seed );
+void InsertTask_zplgsy( const RUNTIME_option_t *options,
+                        MORSE_Complex64_t bump, int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
+                        int bigM, int m0, int n0, unsigned long long int seed );
+void InsertTask_zplrnt( const RUNTIME_option_t *options,
+                        int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
+                        int bigM, int m0, int n0, unsigned long long int seed );
+void InsertTask_zpotrf( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, int n, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+
+                        int iinfo );
+void InsertTask_zshift( const RUNTIME_option_t *options,
+                        int s, int m, int n, int L,
+                        MORSE_Complex64_t *A );
+void InsertTask_zshiftw( const RUNTIME_option_t *options,
+                         int s, int cl, int m, int n, int L,
+                         const MORSE_desc_t *A, int Am, int An, MORSE_Complex64_t *W );
+void InsertTask_zssssm( const RUNTIME_option_t *options,
+                        int m1, int n1, int m2, int n2, int k, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *L1, int L1m, int L1n, int ldl1,
+                        const MORSE_desc_t *L2, int L2m, int L2n, int ldl2,
+                        const int *IPIV );
+void InsertTask_zsymm( const RUNTIME_option_t *options,
+                       MORSE_enum side, MORSE_enum uplo,
+                       int m, int n, int nb,
+                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                       const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zsyrk( const RUNTIME_option_t *options,
+                       MORSE_enum uplo, MORSE_enum trans,
+                       int n, int k, int nb,
+                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zsyr2k( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, MORSE_enum trans,
+                        int n, int k, int nb,
+                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int LDB,
+                        MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zsyssq( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, int n,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn );
+void InsertTask_zsytrf_nopiv( const RUNTIME_option_t *options,
+                              MORSE_enum uplo, int n, int nb,
+                              const MORSE_desc_t *A, int Am, int An, int lda,
+                              int iinfo );
+void InsertTask_zswpab( const RUNTIME_option_t *options,
+                        int i, int n1, int n2,
+                        const MORSE_desc_t *A, int Am, int An, int szeA );
+void InsertTask_zswptr_ontile( const RUNTIME_option_t *options,
+                               const MORSE_desc_t descA, const MORSE_desc_t *Aij, int Aijm, int Aijn,
+                               int i1,  int i2, int *ipiv, int inc,
+                               const MORSE_desc_t *Akk, int Akkm, int Akkn, int ldak );
+void InsertTask_ztplqt( const RUNTIME_option_t *options,
+                        int m, int n, int l, int ib, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztpmlqt( const RUNTIME_option_t *options,
+                         MORSE_enum side, MORSE_enum trans,
+                         int M, int N, int K, int L, int ib, int nb,
+                         const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                         const MORSE_desc_t *T, int Tm, int Tn, int ldt,
+                         const MORSE_desc_t *A, int Am, int An, int lda,
+                         const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_ztpmqrt( const RUNTIME_option_t *options,
+                         MORSE_enum side, MORSE_enum trans,
+                         int m, int n, int k, int l, int ib, int nb,
+                         const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                         const MORSE_desc_t *T, int Tm, int Tn, int ldt,
+                         const MORSE_desc_t *A, int Am, int An, int lda,
+                         const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_ztpqrt( const RUNTIME_option_t *options,
+                        int m, int n, int l, int ib, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn, int ldb,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztrdalg( const RUNTIME_option_t *options,
+                         MORSE_enum uplo,
+                         int N, int NB,
+                         const MORSE_desc_t *A,
+                         const MORSE_desc_t *C, int Cm, int Cn,
+                         const MORSE_desc_t *S, int Sm, int Sn,
+                         int i, int j, int m, int grsiz, int BAND,
+                         int *PCOL, int *ACOL, int *MCOL );
+void InsertTask_ztradd( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, MORSE_enum trans, int m, int n, int nb,
+                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                        MORSE_Complex64_t beta,  const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_ztrasm( const RUNTIME_option_t *options,
+                        MORSE_enum storev, MORSE_enum uplo, MORSE_enum diag, int M, int N,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *B, int Bm, int Bn );
+void InsertTask_ztrmm( const RUNTIME_option_t *options,
+                       MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag,
+                       int m, int n, int nb,
+                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                       const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_ztrmm_p2( const RUNTIME_option_t *options,
+                          MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag,
+                          int m, int n, int nb,
+                          MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                          MORSE_Complex64_t **B, int ldb );
+void InsertTask_ztrsm( const RUNTIME_option_t *options,
+                       MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag,
+                       int m, int n, int nb,
+                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
+                       const MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_ztrssq( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, MORSE_enum diag,
+                        int m, int n,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn );
+void InsertTask_ztrtri( const RUNTIME_option_t *options,
+                        MORSE_enum uplo, MORSE_enum diag, int n, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+
+                        int iinfo );
+void InsertTask_ztslqt( const RUNTIME_option_t *options,
+                        int m, int n, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztsmlq( const RUNTIME_option_t *options,
+                        MORSE_enum side, MORSE_enum trans,
+                        int m1, int n1, int m2, int n2, int k, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztsmlq_hetra1( const RUNTIME_option_t *options,
+                               MORSE_enum side, MORSE_enum trans,
+                               int m1, int n1, int m2, int n2, int k, int ib, int nb,
+                               const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                               const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                               const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                               const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztsmqr( const RUNTIME_option_t *options,
+                        MORSE_enum side, MORSE_enum trans,
+                        int m1, int n1, int m2, int n2, int k, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztsmqr_hetra1( const RUNTIME_option_t *options,
+                               MORSE_enum side, MORSE_enum trans,
+                               int m1, int n1, int m2, int n2, int k, int ib, int nb,
+                               const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                               const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                               const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                               const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztsqrt( const RUNTIME_option_t *options,
+                        int m, int n, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_ztstrf( const RUNTIME_option_t *options,
+                        int m, int n, int ib, int nb,
+                        const MORSE_desc_t *U, int Um, int Un, int ldu,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *L, int Lm, int Ln, int ldl,
+                        int *IPIV,
+
+                        MORSE_bool check_info, int iinfo );
+void InsertTask_zttmqr( const RUNTIME_option_t *options,
+                        MORSE_enum side, MORSE_enum trans,
+                        int m1, int n1, int m2, int n2, int k, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_zttqrt( const RUNTIME_option_t *options,
+                        int m, int n, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_zttmlq( const RUNTIME_option_t *options,
+                        MORSE_enum side, MORSE_enum trans,
+                        int m1, int n1, int m2, int n2, int k, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_zttlqt( const RUNTIME_option_t *options,
+                        int m, int n, int ib, int nb,
+                        const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                        const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt );
+void InsertTask_zpamm( const RUNTIME_option_t *options,
+                       int op, MORSE_enum side, MORSE_enum storev,
+                       int m, int n, int k, int l,
+                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
+                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
+                       const MORSE_desc_t *V, int Vm, int Vn, int ldv,
+                       const MORSE_desc_t *W, int Wm, int Wn, int ldw );
+void InsertTask_zplssq( const RUNTIME_option_t *options,
+                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn,
+                        const MORSE_desc_t *SCLSSQ,     int SCLSSQm,     int SCLSSQn );
+void InsertTask_zplssq2( const RUNTIME_option_t *options,
+                         const MORSE_desc_t *RESULT, int RESULTm, int RESULTn );
+void InsertTask_zunmlq( const RUNTIME_option_t *options,
+                        MORSE_enum side, MORSE_enum trans,
+                        int m, int n, int ib,  int nb, int k,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt,
+                        const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zunmqr( const RUNTIME_option_t *options,
+                        MORSE_enum side, MORSE_enum trans,
+                        int m, int n, int k, int ib, int nb,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        const MORSE_desc_t *T, int Tm, int Tn, int ldt,
+                        const MORSE_desc_t *C, int Cm, int Cn, int ldc );
+void InsertTask_zbuild( const RUNTIME_option_t *options,
+                        const MORSE_desc_t *A, int Am, int An, int lda,
+                        void *user_data, void* user_build_callback );
+
+#endif
diff --git a/include/chameleon/chameleon_tasks_zc.h b/include/chameleon/chameleon_tasks_zc.h
new file mode 100644
index 0000000000000000000000000000000000000000..3864cddaffd353b5e0bb8639a14a08ecd757e9e4
--- /dev/null
+++ b/include/chameleon/chameleon_tasks_zc.h
@@ -0,0 +1,41 @@
+/**
+ *
+ * @file chameleon_tasks_zc.h
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation. All rights reserved.
+ * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon complex mixed precision elementary tasks header
+ *
+ * @version 1.0.0
+ * @comment This file has been automatically generated
+ *          from Plasma 2.5.0 for CHAMELEON 1.0.0
+ * @author Jakub Kurzak
+ * @author Hatem Ltaief
+ * @author Mathieu Faverge
+ * @author Emmanuel Agullo
+ * @author Cedric Castagnede
+ * @date 2010-11-15
+ * @precisions mixed zc -> ds
+ *
+ */
+#ifndef _chameleon_tasks_zc_h_
+#define _chameleon_tasks_zc_h_
+
+/**
+ *  Declarations of QUARK wrappers (called by CHAMELEON) - alphabetical order
+ */
+void InsertTask_clag2z( const RUNTIME_option_t *options,
+                        int m, int n, int nb,
+                        MORSE_desc_t *A, int Am, int An, int lda,
+                        MORSE_desc_t *B, int Bm, int Bn, int ldb );
+void InsertTask_zlag2c( const RUNTIME_option_t *options,
+                        int m, int n, int nb,
+                        MORSE_desc_t *A, int Am, int An, int lda,
+                        MORSE_desc_t *B, int Bm, int Bn, int ldb );
+
+#endif
diff --git a/include/chameleon/morse_types.h b/include/chameleon/chameleon_types.h
similarity index 70%
rename from include/chameleon/morse_types.h
rename to include/chameleon/chameleon_types.h
index cc490bb96384c8713ae0ed8e538574783f9c431d..e6fbbbb46badcb93cb83e204c55066b09f4c2824 100644
--- a/include/chameleon/morse_types.h
+++ b/include/chameleon/chameleon_types.h
@@ -1,6 +1,6 @@
 /**
  *
- * @file morse_types.h
+ * @file chameleon_types.h
  *
  * @copyright 2009-2014 The University of Tennessee and The University of
  *                      Tennessee Research Foundation. All rights reserved.
@@ -18,8 +18,8 @@
  * @date 2011-06-01
  *
  */
-#ifndef _MORSE_TYPES_H_
-#define _MORSE_TYPES_H_
+#ifndef _chameleon_types_h_
+#define _chameleon_types_h_
 
 #include "chameleon/chameleon_config.h"
 
@@ -38,18 +38,18 @@
 
 
 /**
- *  MORSE types
+ *  CHAMELEON types
  */
-typedef int  MORSE_enum;
-typedef int  MORSE_bool;
-typedef long MORSE_index;
-typedef long MORSE_size;
+typedef int  CHAMELEON_enum;
+typedef int  CHAMELEON_bool;
+typedef long CHAMELEON_index;
+typedef long CHAMELEON_size;
 
 
 /**
- * MORSE Complex numbers
+ * CHAMELEON Complex numbers
  */
-#define MORSE_HAS_COMPLEX_H 1
+#define CHAMELEON_HAS_COMPLEX_H 1
 
 #if defined(_WIN32)
 # include <float.h>
@@ -61,8 +61,8 @@ typedef long MORSE_size;
     #undef _Complex
     #undef complex
 # elif defined(_MSC_VER) && !defined(__INTEL_COMPILER)
-    #undef  MORSE_COMPLEX_CPP
-    #define MORSE_COMPLEX_CPP
+    #undef  CHAMELEON_COMPLEX_CPP
+    #define CHAMELEON_COMPLEX_CPP
 # else
     #error "Supported compilers on WIN32 are MSVC and Intel Compiler."
 # endif /* __INTEL_COMPILER */
@@ -73,43 +73,43 @@ typedef long MORSE_size;
 
 /* Sun doesn't ship the complex.h header. Sun Studio doesn't have it and older GCC compilers don't have it either. */
 #if defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(sun) || defined(__sun)
-#undef MORSE_HAS_COMPLEX_H
+#undef CHAMELEON_HAS_COMPLEX_H
 #endif /* __SUNPRO_C */
 
 #ifndef __cplusplus
-    #undef MORSE_COMPLEX_CPP
+    #undef CHAMELEON_COMPLEX_CPP
 #endif
 
-#if defined(MORSE_COMPLEX_CPP)
+#if defined(CHAMELEON_COMPLEX_CPP)
     #ifndef LAPACK_COMPLEX_CPP
     # define LAPACK_COMPLEX_CPP
-    # warning "MORSE_COMPLEX_CPP was defined, but not LAPACK_COMPLEX_CPP. Maybe you want to set both."
+    # warning "CHAMELEON_COMPLEX_CPP was defined, but not LAPACK_COMPLEX_CPP. Maybe you want to set both."
     #endif
     #include <complex> // needed for std::complex declaration
-    #define MORSE_Complex32_t std::complex<float>
-    #define MORSE_Complex64_t std::complex<double>
-#else /* MORSE_COMPLEX_CPP */
+    #define CHAMELEON_Complex32_t std::complex<float>
+    #define CHAMELEON_Complex64_t std::complex<double>
+#else /* CHAMELEON_COMPLEX_CPP */
       /* not using cplusplus complex type: */
 
     #if defined(__STDC_NO_COMPLEX__)
     # error "Compiler support for complex number is required."
     #endif
 
-    #define MORSE_Complex32_t float  _Complex
-    #define MORSE_Complex64_t double _Complex
+    #define CHAMELEON_Complex32_t float  _Complex
+    #define CHAMELEON_Complex64_t double _Complex
 
-    #if MORSE_HAS_COMPLEX_H
+    #if CHAMELEON_HAS_COMPLEX_H
     # include <complex.h>
     #endif
-#endif /* MORSE_COMPLEX_CPP */
+#endif /* CHAMELEON_COMPLEX_CPP */
 
 /**
- *  MORSE Deprecated attribute
+ *  CHAMELEON Deprecated attribute
  */
 #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
-#define MORSE_DEPRECATED  __attribute__((__deprecated__))
+#define CHAMELEON_DEPRECATED  __attribute__((__deprecated__))
 #else
-#define MORSE_DEPRECATED
+#define CHAMELEON_DEPRECATED
 #endif /* __GNUC__ */
 
 BEGIN_C_DECLS
diff --git a/include/chameleon/chameleon_z.h b/include/chameleon/chameleon_z.h
new file mode 100644
index 0000000000000000000000000000000000000000..fb84df2562fcb9b2178e46d248e54ee5ee5fae6b
--- /dev/null
+++ b/include/chameleon/chameleon_z.h
@@ -0,0 +1,336 @@
+/**
+ *
+ * @file chameleon_z.h
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation. All rights reserved.
+ * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon CHAMELEON_complex64_t wrappers
+ *
+ * @version 1.0.0
+ * @comment This file has been automatically generated
+ *          from Plasma 2.5.0 for CHAMELEON 1.0.0
+ * @author Jakub Kurzak
+ * @author Hatem Ltaief
+ * @author Azzam Haidar
+ * @author Mathieu Faverge
+ * @author Emmanuel Agullo
+ * @author Cedric Castagnede
+ * @date 2010-11-15
+ * @precisions normal z -> c d s
+ *
+ */
+#ifndef _chameleon_z_h_
+#define _chameleon_z_h_
+
+BEGIN_C_DECLS
+
+/**
+ *  Declarations of math functions (LAPACK layout) - alphabetical order
+ */
+int CHAMELEON_zgeadd(CHAMELEON_enum trans, int M, int N, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *B, int LDB);
+//int CHAMELEON_zgebrd(int M, int N, CHAMELEON_Complex64_t *A, int LDA, double *D, double *E, CHAMELEON_desc_t *descT);
+//int CHAMELEON_zgecon(CHAMELEON_enum norm, int N, CHAMELEON_Complex64_t *A, int LDA, double anorm, double *rcond);
+//int CHAMELEON_zpocon(CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, double anorm, double *rcond);
+int CHAMELEON_zgelqf(int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT);
+int CHAMELEON_zgelqs(int M, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgels(CHAMELEON_enum trans, int M, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgemm(CHAMELEON_enum transA, CHAMELEON_enum transB, int M, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *C, int LDC);
+int CHAMELEON_zgeqrf(int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT);
+int CHAMELEON_zgeqrs(int M, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *B, int LDB);
+//int CHAMELEON_zgesv(int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, int *IPIV, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgesv_incpiv(int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descL, int *IPIV, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgesv_nopiv(int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgesvd(CHAMELEON_enum jobu, CHAMELEON_enum jobvt, int M, int N, CHAMELEON_Complex64_t *A, int LDA, double *S, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *U, int LDU, CHAMELEON_Complex64_t *VT, int LDVT);
+//int CHAMELEON_zgetrf(int M, int N, CHAMELEON_Complex64_t *A, int LDA, int *IPIV);
+int CHAMELEON_zgetrf_incpiv(int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descL, int *IPIV);
+int CHAMELEON_zgetrf_nopiv(int M, int N, CHAMELEON_Complex64_t *A, int LDA);
+//int CHAMELEON_zgetri(int N, CHAMELEON_Complex64_t *A, int LDA, int *IPIV);
+//int CHAMELEON_zgetrs(CHAMELEON_enum trans, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, int *IPIV, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgetrs_incpiv(CHAMELEON_enum trans, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descL, int *IPIV, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgetrs_nopiv(CHAMELEON_enum trans, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zhemm(CHAMELEON_enum side, CHAMELEON_enum uplo, int M, int N, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *C, int LDC);
+int CHAMELEON_zherk(CHAMELEON_enum uplo, CHAMELEON_enum trans, int N, int K, double alpha, CHAMELEON_Complex64_t *A, int LDA, double beta, CHAMELEON_Complex64_t *C, int LDC);
+int CHAMELEON_zher2k(CHAMELEON_enum uplo, CHAMELEON_enum trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, double beta, CHAMELEON_Complex64_t *C, int LDC);
+//int CHAMELEON_zheev(CHAMELEON_enum jobz, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, double *W, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *Q, int LDQ);
+int CHAMELEON_zheevd(CHAMELEON_enum jobz, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, double *W, CHAMELEON_desc_t *descT);
+//int CHAMELEON_zhegv(CHAMELEON_enum itype, CHAMELEON_enum jobz, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, double *W, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *Q, int LDQ);
+//int CHAMELEON_zhegvd(CHAMELEON_enum itype, CHAMELEON_enum jobz, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, double *W, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *Q, int LDQ);
+//int CHAMELEON_zhegst(CHAMELEON_enum itype, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zhetrd(CHAMELEON_enum jobz, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, double *D, double *E, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *Q, int LDQ);
+int CHAMELEON_zlacpy(CHAMELEON_enum uplo, int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+double CHAMELEON_zlange(CHAMELEON_enum norm, int M, int N, CHAMELEON_Complex64_t *A, int LDA);
+double CHAMELEON_zlanhe(CHAMELEON_enum norm, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA);
+double CHAMELEON_zlansy(CHAMELEON_enum norm, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA);
+double CHAMELEON_zlantr(CHAMELEON_enum norm, CHAMELEON_enum uplo, CHAMELEON_enum diag, int M, int N, CHAMELEON_Complex64_t *A, int LDA);
+int CHAMELEON_zlascal(CHAMELEON_enum uplo, int M, int N, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA);
+int CHAMELEON_zlaset(CHAMELEON_enum uplo, int M, int N, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *A, int LDA);
+//int CHAMELEON_zlaswp(int N, CHAMELEON_Complex64_t *A, int LDA, int K1, int K2, int *IPIV, int INCX);
+//int CHAMELEON_zlaswpc(int N, CHAMELEON_Complex64_t *A, int LDA, int K1, int K2, int *IPIV, int INCX);
+int CHAMELEON_zlauum(CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA);
+int CHAMELEON_zplghe( double bump, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, unsigned long long int seed );
+int CHAMELEON_zplgsy( CHAMELEON_Complex64_t bump, CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, unsigned long long int seed );
+int CHAMELEON_zplrnt( int M, int N, CHAMELEON_Complex64_t *A, int LDA, unsigned long long int seed );
+int CHAMELEON_zposv(CHAMELEON_enum uplo, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zpotrf(CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA);
+int CHAMELEON_zsytrf(CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA);
+int CHAMELEON_zpotri(CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA);
+int CHAMELEON_zpotrimm(CHAMELEON_enum uplo, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t *C, int LDC);
+int CHAMELEON_zpotrs(CHAMELEON_enum uplo, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zsymm(CHAMELEON_enum side, CHAMELEON_enum uplo, int M, int N, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *C, int LDC);
+int CHAMELEON_zsyrk(CHAMELEON_enum uplo, CHAMELEON_enum trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *C, int LDC);
+int CHAMELEON_zsyr2k(CHAMELEON_enum uplo, CHAMELEON_enum trans, int N, int K, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *C, int LDC);
+int CHAMELEON_zsysv(CHAMELEON_enum uplo, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zsytrs(CHAMELEON_enum uplo, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_ztpgqrt( int M, int N, int K, int L, CHAMELEON_Complex64_t *V1, int LDV1, CHAMELEON_desc_t *descT1, CHAMELEON_Complex64_t *V2, int LDV2, CHAMELEON_desc_t *descT2, CHAMELEON_Complex64_t *Q1, int LDQ1, CHAMELEON_Complex64_t *Q2, int LDQ2 );
+int CHAMELEON_ztpqrt( int M, int N, int L, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_desc_t *descT );
+int CHAMELEON_ztradd(CHAMELEON_enum uplo, CHAMELEON_enum trans, int M, int N, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t beta, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_ztrmm(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, int N, int NRHS, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_ztrsm(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, int N, int NRHS, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_ztrsmpl(int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descL, int *IPIV, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_ztrsmrv(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, int N, int NRHS, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_ztrtri(CHAMELEON_enum uplo, CHAMELEON_enum diag, int N, CHAMELEON_Complex64_t *A, int LDA);
+int CHAMELEON_zunglq(int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zungqr(int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zunmlq(CHAMELEON_enum side, CHAMELEON_enum trans, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zunmqr(CHAMELEON_enum side, CHAMELEON_enum trans, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_Complex64_t *B, int LDB);
+
+//int CHAMELEON_zgecfi(int m, int n, CHAMELEON_Complex64_t *A, CHAMELEON_enum fin, int imb, int inb, CHAMELEON_enum fout, int omb, int onb);
+//int CHAMELEON_zgetmi(int m, int n, CHAMELEON_Complex64_t *A, CHAMELEON_enum fin, int mb,  int nb);
+
+/**
+ *  Declarations of math functions (tile layout) - alphabetical order
+ */
+int CHAMELEON_zgeadd_Tile(CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *B);
+//int CHAMELEON_zgebrd_Tile(CHAMELEON_desc_t *A, double *D, double *E, CHAMELEON_desc_t *T);
+//int CHAMELEON_zgecon_Tile(CHAMELEON_enum norm, CHAMELEON_desc_t *A, double anorm, double *rcond);
+//int CHAMELEON_zpocon_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double anorm, double *rcond);
+int CHAMELEON_zgelqf_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T);
+int CHAMELEON_zgelqs_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B);
+int CHAMELEON_zgels_Tile(CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B);
+int CHAMELEON_zgemm_Tile(CHAMELEON_enum transA, CHAMELEON_enum transB, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C);
+int CHAMELEON_zgeqrf_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T);
+int CHAMELEON_zgeqrs_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B);
+//int CHAMELEON_zgesv_Tile(CHAMELEON_desc_t *A, int *IPIV, CHAMELEON_desc_t *B);
+int CHAMELEON_zgesv_incpiv_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV, CHAMELEON_desc_t *B);
+int CHAMELEON_zgesv_nopiv_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_zgesvd_Tile(CHAMELEON_enum jobu, CHAMELEON_enum jobvt, CHAMELEON_desc_t *A, double *S, CHAMELEON_desc_t *T, CHAMELEON_Complex64_t *U, int LDU, CHAMELEON_Complex64_t *VT, int LDVT);
+//int CHAMELEON_zgetrf_Tile(CHAMELEON_desc_t *A, int *IPIV);
+int CHAMELEON_zgetrf_incpiv_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV);
+int CHAMELEON_zgetrf_nopiv_Tile(CHAMELEON_desc_t *A);
+//int CHAMELEON_zgetri_Tile(CHAMELEON_desc_t *A, int *IPIV);
+//int CHAMELEON_zgetrs_Tile(CHAMELEON_enum trans, CHAMELEON_desc_t *A, int *IPIV, CHAMELEON_desc_t *B);
+int CHAMELEON_zgetrs_incpiv_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV, CHAMELEON_desc_t *B);
+int CHAMELEON_zgetrs_nopiv_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_zhemm_Tile(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C);
+int CHAMELEON_zherk_Tile(CHAMELEON_enum uplo, CHAMELEON_enum trans, double alpha, CHAMELEON_desc_t *A, double beta, CHAMELEON_desc_t *C);
+int CHAMELEON_zher2k_Tile(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, double beta, CHAMELEON_desc_t *C);
+//int CHAMELEON_zheev_Tile(CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *W, CHAMELEON_desc_t *T, CHAMELEON_Complex64_t *Q, int LDQ);
+int CHAMELEON_zheevd_Tile(CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *W, CHAMELEON_desc_t *T);
+//int CHAMELEON_zhegv_Tile( CHAMELEON_enum itype, CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, double *W, CHAMELEON_desc_t *T, CHAMELEON_desc_t *Q);
+//int CHAMELEON_zhegvd_Tile(CHAMELEON_enum itype, CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, double *W, CHAMELEON_desc_t *T, CHAMELEON_desc_t *Q);
+//int CHAMELEON_zhegst_Tile(CHAMELEON_enum itype, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_zhetrd_Tile(CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *D, double *E, CHAMELEON_desc_t *T, CHAMELEON_Complex64_t *Q, int LDQ);
+int CHAMELEON_zlacpy_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+double CHAMELEON_zlange_Tile(CHAMELEON_enum norm, CHAMELEON_desc_t *A);
+double CHAMELEON_zlanhe_Tile(CHAMELEON_enum norm, CHAMELEON_enum uplo, CHAMELEON_desc_t *A);
+double CHAMELEON_zlansy_Tile(CHAMELEON_enum norm, CHAMELEON_enum uplo, CHAMELEON_desc_t *A);
+double CHAMELEON_zlantr_Tile(CHAMELEON_enum norm, CHAMELEON_enum uplo, CHAMELEON_enum diag, CHAMELEON_desc_t *A);
+int CHAMELEON_zlascal_Tile(CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A);
+int CHAMELEON_zlaset_Tile(CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *A);
+//int CHAMELEON_zlaswp_Tile(CHAMELEON_desc_t *A, int K1, int K2, int *IPIV, int INCX);
+//int CHAMELEON_zlaswpc_Tile(CHAMELEON_desc_t *A, int K1, int K2, int *IPIV, int INCX);
+int CHAMELEON_zlauum_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A);
+int CHAMELEON_zplghe_Tile(double bump, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, unsigned long long int seed );
+int CHAMELEON_zplgsy_Tile(CHAMELEON_Complex64_t bump, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, unsigned long long int seed );
+int CHAMELEON_zplrnt_Tile(CHAMELEON_desc_t *A, unsigned long long int seed );
+int CHAMELEON_zposv_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_zpotrf_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A);
+int CHAMELEON_zsytrf_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A);
+int CHAMELEON_zpotri_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A);
+int CHAMELEON_zpotrimm_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_desc_t *C);
+int CHAMELEON_zpotrs_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_zsymm_Tile(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C);
+int CHAMELEON_zsyrk_Tile(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C);
+int CHAMELEON_zsyr2k_Tile(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C);
+int CHAMELEON_zsysv_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_zsytrs_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_ztpgqrt_Tile( int L, CHAMELEON_desc_t *V1, CHAMELEON_desc_t *T1, CHAMELEON_desc_t *V2, CHAMELEON_desc_t *T2, CHAMELEON_desc_t *Q1, CHAMELEON_desc_t *Q2 );
+int CHAMELEON_ztpqrt_Tile( int L, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_desc_t *T );
+int CHAMELEON_ztradd_Tile(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *B);
+int CHAMELEON_ztrmm_Tile(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_ztrsm_Tile(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_ztrsmpl_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV, CHAMELEON_desc_t *B);
+int CHAMELEON_ztrsmrv_Tile(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B);
+int CHAMELEON_ztrtri_Tile(CHAMELEON_enum uplo, CHAMELEON_enum diag, CHAMELEON_desc_t *A);
+int CHAMELEON_zunglq_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B);
+int CHAMELEON_zungqr_Tile(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B);
+int CHAMELEON_zunmlq_Tile(CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B);
+int CHAMELEON_zunmqr_Tile(CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B);
+
+/**
+ *  Declarations of math functions (tile layout, asynchronous execution) - alphabetical order
+ */
+int CHAMELEON_zgeadd_Tile_Async(CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zgebrd_Tile_Async(CHAMELEON_desc_t *A, double *D, double *E, CHAMELEON_desc_t *T, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zgecon_Tile_Async(CHAMELEON_enum norm, CHAMELEON_desc_t *A, double anorm, double *rcond, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zpocon_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double anorm, double *rcond, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgelqf_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgelqs_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgels_Tile_Async(CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgemm_Tile_Async(CHAMELEON_enum transA, CHAMELEON_enum transB, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgeqrf_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgeqrs_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zgesv_Tile_Async(CHAMELEON_desc_t *A, int *IPIV, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgesv_incpiv_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgesv_nopiv_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgesvd_Tile_Async(CHAMELEON_enum jobu, CHAMELEON_enum jobvt, CHAMELEON_desc_t *A, double *S, CHAMELEON_desc_t *T, CHAMELEON_Complex64_t *U, int LDU, CHAMELEON_Complex64_t *VT, int LDVT, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zgetrf_Tile_Async(CHAMELEON_desc_t *A, int *IPIV, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgetrf_incpiv_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgetrf_nopiv_Tile_Async(CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zgetri_Tile_Async(CHAMELEON_desc_t *A, int *IPIV, CHAMELEON_desc_t *W, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zgetrs_Tile_Async(CHAMELEON_enum trans, CHAMELEON_desc_t *A, int *IPIV, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgetrs_incpiv_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgetrs_nopiv_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zhemm_Tile_Async(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zherk_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_enum trans, double alpha, CHAMELEON_desc_t *A, double beta, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zher2k_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, double beta, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zheev_Tile_Async(CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *W, CHAMELEON_desc_t *T, CHAMELEON_Complex64_t *Q, int LDQ, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zheevd_Tile_Async(CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *W, CHAMELEON_desc_t *T, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zhegv_Tile_Async( CHAMELEON_enum itype, CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, double *W, CHAMELEON_desc_t *T, CHAMELEON_desc_t *Q, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zhegvd_Tile_Async(CHAMELEON_enum itype, CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, double *W, CHAMELEON_desc_t *T, CHAMELEON_desc_t *Q, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zhegst_Tile_Async(CHAMELEON_enum itype, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zhetrd_Tile_Async(CHAMELEON_enum jobz, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *D, double *E, CHAMELEON_desc_t *T, CHAMELEON_Complex64_t *Q, int LDQ, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlacpy_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlange_Tile_Async(CHAMELEON_enum norm, CHAMELEON_desc_t *A, double *value, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlanhe_Tile_Async(CHAMELEON_enum norm, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *value, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlansy_Tile_Async(CHAMELEON_enum norm, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, double *value, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlantr_Tile_Async(CHAMELEON_enum norm, CHAMELEON_enum uplo, CHAMELEON_enum diag, CHAMELEON_desc_t *A, double *value, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlascal_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlaset_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zlaswp_Tile_Async(CHAMELEON_desc_t *A, int K1, int K2, int *IPIV, int INCX, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zlaswpc_Tile_Async(CHAMELEON_desc_t *A, int K1, int K2, int *IPIV, int INCX, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zlauum_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zplghe_Tile_Async(double bump, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request );
+int CHAMELEON_zplgsy_Tile_Async(CHAMELEON_Complex64_t bump, CHAMELEON_enum uplo, CHAMELEON_desc_t *A, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request );
+int CHAMELEON_zplrnt_Tile_Async(CHAMELEON_desc_t *A, unsigned long long int seed, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request );
+int CHAMELEON_zposv_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zpotrf_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zsytrf_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zpotri_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zpotrimm_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zpotrs_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zsysv_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zsytrs_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zsymm_Tile_Async(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zsyrk_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zsyr2k_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *C, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_ztpgqrt_Tile_Async( int L, CHAMELEON_desc_t *V1, CHAMELEON_desc_t *T1, CHAMELEON_desc_t *V2, CHAMELEON_desc_t *T2, CHAMELEON_desc_t *Q1, CHAMELEON_desc_t *Q2, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request );
+int CHAMELEON_ztpqrt_Tile_Async( int L, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_desc_t *T, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request );
+int CHAMELEON_ztradd_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_enum trans, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_Complex64_t beta, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_ztrmm_Tile_Async(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_ztrsm_Tile_Async(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_ztrsmpl_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *L, int *IPIV, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_ztrsmrv_Tile_Async(CHAMELEON_enum side, CHAMELEON_enum uplo, CHAMELEON_enum transA, CHAMELEON_enum diag, CHAMELEON_Complex64_t alpha, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_ztrtri_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_enum diag, CHAMELEON_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zunglq_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zungqr_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zunmlq_Tile_Async(CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zunmqr_Tile_Async(CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+
+//int CHAMELEON_zgecfi_Async(int m, int n, CHAMELEON_Complex64_t *A, CHAMELEON_enum f_in, int imb, int inb, CHAMELEON_enum f_out, int omb, int onb, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zgetmi_Async(int m, int n, CHAMELEON_Complex64_t *A, CHAMELEON_enum f_in, int mb,  int inb, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+
+/**
+ *  Declarations of libhqr dependent functions.
+ */
+/**
+ *  Declarations of math functions (LAPACK layout) - alphabetical order
+ */
+int CHAMELEON_zgels_param(const libhqr_tree_t *qrtree, CHAMELEON_enum trans, int M, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *descTT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgelqf_param(const libhqr_tree_t *qrtree, int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *descTT);
+int CHAMELEON_zgelqs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *descTT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zgeqrf_param(const libhqr_tree_t *qrtree, int M, int N, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *descTT);
+int CHAMELEON_zgeqrs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *TT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zunglq_param(const libhqr_tree_t *qrtree, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *TT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zungqr_param(const libhqr_tree_t *qrtree, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *descTT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zunmlq_param(const libhqr_tree_t *qrtree, CHAMELEON_enum side, CHAMELEON_enum trans, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_desc_t *TT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zunmlq_param(const libhqr_tree_t *qrtree, CHAMELEON_enum side, CHAMELEON_enum trans, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descT, CHAMELEON_desc_t *TT, CHAMELEON_Complex64_t *B, int LDB);
+int CHAMELEON_zunmqr_param(const libhqr_tree_t *qrtree, CHAMELEON_enum side, CHAMELEON_enum trans, int M, int N, int K, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_desc_t *descTS, CHAMELEON_desc_t *TT, CHAMELEON_Complex64_t *B, int LDB);
+/**
+ *  Declarations of math functions (tile layout) - alphabetical order
+ */
+int CHAMELEON_zgels_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+int CHAMELEON_zgelqf_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT);
+int CHAMELEON_zgelqs_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+int CHAMELEON_zgeqrf_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT);
+int CHAMELEON_zgeqrs_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+int CHAMELEON_zunglq_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+int CHAMELEON_zungqr_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+int CHAMELEON_zungqr_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+int CHAMELEON_zunmlq_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+int CHAMELEON_zunmqr_param_Tile(const libhqr_tree_t *qrtree, CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B);
+/**
+ *  Declarations of math functions (tile layout, asynchronous execution) - alphabetical order
+ */
+int CHAMELEON_zgels_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgelqf_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgelqs_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgeqrf_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zgeqrs_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zunglq_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zungqr_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zunmlq_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+int CHAMELEON_zunmqr_param_Tile_Async(const libhqr_tree_t *qrtree, CHAMELEON_enum side, CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *TS, CHAMELEON_desc_t *TT, CHAMELEON_desc_t *B, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+
+/**
+ *  Declarations of workspace allocation functions (tile layout) - alphabetical order
+ */
+int CHAMELEON_Alloc_Workspace_zgesv_incpiv(        int N, CHAMELEON_desc_t **descL, int **IPIV, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgetrf_incpiv(int M, int N, CHAMELEON_desc_t **descL, int **IPIV, int p, int q);
+
+int CHAMELEON_Alloc_Workspace_zgebrd(int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgeev( int N,        CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgehrd(int N,        CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgelqf(int M, int N, CHAMELEON_desc_t **T, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgels( int M, int N, CHAMELEON_desc_t **T, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgeqrf(int M, int N, CHAMELEON_desc_t **T, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgesvd(int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zheev( int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zheevd( int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zhegv( int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zhegvd( int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zhetrd(int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+
+/**
+ *  Declarations of workspace allocation functions (tile layout, asynchronous execution) - alphabetical order
+ */
+int CHAMELEON_Alloc_Workspace_zgetri_Tile_Async(CHAMELEON_desc_t *A, CHAMELEON_desc_t *W);
+
+/* Warning: Those functions are deprecated */
+int CHAMELEON_Alloc_Workspace_zgelqf_Tile(int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgels_Tile( int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgeqrf_Tile(int M, int N, CHAMELEON_desc_t **descT, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgesv_incpiv_Tile (int N, CHAMELEON_desc_t **descL, int **IPIV, int p, int q);
+int CHAMELEON_Alloc_Workspace_zgetrf_incpiv_Tile(int N, CHAMELEON_desc_t **descL, int **IPIV, int p, int q);
+
+/**
+ *  Auxiliary function prototypes
+ */
+int CHAMELEON_zLapack_to_Tile(CHAMELEON_Complex64_t *Af77, int LDA, CHAMELEON_desc_t *A);
+int CHAMELEON_zTile_to_Lapack(CHAMELEON_desc_t *A, CHAMELEON_Complex64_t *Af77, int LDA);
+
+/**
+ *  User Builder function prototypes
+ */
+int CHAMELEON_zbuild(CHAMELEON_enum uplo, int M, int N, CHAMELEON_Complex64_t *A, int LDA, void *user_data, void* user_build_callback);
+int CHAMELEON_zbuild_Tile(CHAMELEON_enum uplo,  CHAMELEON_desc_t *A, void *user_data, void* user_build_callback );
+int CHAMELEON_zbuild_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, void *user_data, void* user_build_callback, RUNTIME_sequence_t *sequence, RUNTIME_request_t  *request);
+
+END_C_DECLS
+
+#endif
diff --git a/include/chameleon/chameleon_zc.h b/include/chameleon/chameleon_zc.h
new file mode 100644
index 0000000000000000000000000000000000000000..ba0051c4b0fe8b69e66fa14cf5f4bdf45bef2e58
--- /dev/null
+++ b/include/chameleon/chameleon_zc.h
@@ -0,0 +1,55 @@
+/**
+ *
+ * @file chameleon_zc.h
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation. All rights reserved.
+ * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon mixed precision wrappers header
+ *
+ * @version 1.0.0
+ * @comment This file has been automatically generated
+ *          from Plasma 2.5.0 for CHAMELEON 1.0.0
+ * @author Mathieu Faverge
+ * @author Emmanuel Agullo
+ * @author Cedric Castagnede
+ * @date 2010-11-15
+ * @precisions mixed zc -> ds
+ *
+ */
+#ifndef _CHAMELEON_ZC_H_
+#define _CHAMELEON_ZC_H_
+
+BEGIN_C_DECLS
+
+/**
+ *  Declarations of math functions (LAPACK layout) - alphabetical order
+ */
+//int CHAMELEON_zcgesv(int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, int * IPIV, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t *X, int LDX, int *ITER);
+//int CHAMELEON_zcposv(CHAMELEON_enum uplo, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t *X, int LDX, int *ITER);
+//int CHAMELEON_zcgels(CHAMELEON_enum trans, int M, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t *X, int LDX, int *ITER);
+//int CHAMELEON_zcungesv(CHAMELEON_enum trans, int N, int NRHS, CHAMELEON_Complex64_t *A, int LDA, CHAMELEON_Complex64_t *B, int LDB, CHAMELEON_Complex64_t *X, int LDX, int *ITER);
+
+/**
+ *  Declarations of math functions (tile layout) - alphabetical order
+ */
+//int CHAMELEON_zcgesv_Tile(CHAMELEON_desc_t *A, int *IPIV, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER);
+//int CHAMELEON_zcposv_Tile(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER);
+/* int CHAMELEON_zcgels_Tile(CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER); */
+//int CHAMELEON_zcungesv_Tile(CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER);
+
+/**
+ *  Declarations of math functions (tile layout, asynchronous execution) - alphabetical order
+ */
+//int CHAMELEON_zcgesv_Tile_Async(CHAMELEON_desc_t *A, int *IPIV, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zcposv_Tile_Async(CHAMELEON_enum uplo, CHAMELEON_desc_t *A, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zcgels_Tile_Async(CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+//int CHAMELEON_zcungesv_Tile_Async(CHAMELEON_enum trans, CHAMELEON_desc_t *A, CHAMELEON_desc_t *T, CHAMELEON_desc_t *B, CHAMELEON_desc_t *X, int *ITER, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request);
+
+END_C_DECLS
+
+#endif
diff --git a/include/chameleon/morse_constants.h b/include/chameleon/morse_constants.h
deleted file mode 100644
index acc7c4fac10037e3362932a800106010151c758c..0000000000000000000000000000000000000000
--- a/include/chameleon/morse_constants.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- *
- * @file morse_constants.h
- *
- * @copyright 2009-2014 The University of Tennessee and The University of
- *                      Tennessee Research Foundation. All rights reserved.
- * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
- *                      Univ. Bordeaux. All rights reserved.
- *
- ***
- *
- * @brief Chameleon global constants
- *
- * @version 1.0.0
- * @author Cedric Augonnet
- * @author Mathieu Faverge
- * @author Cedric Castagnede
- * @date 2011-06-01
- *
- */
-#ifndef _MORSE_CONSTANTS_H_
-#define _MORSE_CONSTANTS_H_
-
-/**
- *
- * @brief Chameleon constants - CBLAS & LAPACK
- *  The naming and numbering is consistent with:
- *
- *    1) CBLAS from Netlib (http://www.netlib.org/blas/blast-forum/cblas.tgz),
- *    2) C Interface to LAPACK from Netlib (http://www.netlib.org/lapack/lapwrapc/).
- *
- */
-#define MorseByte              0
-#define MorseInteger           1
-#define MorseRealFloat         2
-#define MorseRealDouble        3
-#define MorseComplexFloat      4
-#define MorseComplexDouble     5
-
-#define MorseCM              101
-#define MorseRM              102
-#define MorseCCRB            103
-#define MorseCRRB            104
-#define MorseRCRB            105
-#define MorseRRRB            106
-
-#define MorseNoTrans         111
-#define MorseTrans           112
-#define MorseConjTrans       113
-
-#define MorseUpper           121
-#define MorseLower           122
-#define MorseUpperLower      123
-
-#define MorseNonUnit         131
-#define MorseUnit            132
-
-#define MorseLeft            141
-#define MorseRight           142
-
-#define MorseOneNorm         171
-#define MorseRealOneNorm     172
-#define MorseTwoNorm         173
-#define MorseFrobeniusNorm   174
-#define MorseInfNorm         175
-#define MorseRealInfNorm     176
-#define MorseMaxNorm         177
-#define MorseRealMaxNorm     178
-
-#define MorseDistUniform     201
-#define MorseDistSymmetric   202
-#define MorseDistNormal      203
-
-#define MorseHermGeev        241
-#define MorseHermPoev        242
-#define MorseNonsymPosv      243
-#define MorseSymPosv         244
-
-#define MorseNoPacking       291
-#define MorsePackSubdiag     292
-#define MorsePackSupdiag     293
-#define MorsePackColumn      294
-#define MorsePackRow         295
-#define MorsePackLowerBand   296
-#define MorsePackUpeprBand   297
-#define MorsePackAll         298
-
-#define MorseNoVec           301
-#define MorseVec             302
-#define MorseIvec            303
-
-#define MorseForward         391
-#define MorseBackward        392
-
-#define MorseColumnwise      401
-#define MorseRowwise         402
-#define MorseTrd            1001
-#define MorseBrd            1002
-
-#define MorseW               501
-#define MorseA2              502
-
-#define morse_const_neg(const) (((const-1)^0x01)+1)
-
-/**
- *  MORSE constants - boolean
- */
-#define MORSE_FALSE  0
-#define MORSE_TRUE   1
-
-#define MORSE_CPU    ((1ULL)<<1)
-#define MORSE_CUDA   ((1ULL)<<3)
-
-/**
- *  State machine switches
- */
-#define MORSE_WARNINGS        1
-#define MORSE_ERRORS          2
-#define MORSE_AUTOTUNING      3
-#define MORSE_DAG             4
-#define MORSE_PROFILING_MODE  5
-#define MORSE_PARALLEL_MODE   6
-#define MORSE_BOUND           7
-#define MORSE_PROGRESS        8
-#define MORSE_GEMM3M          9
-
-/**
- *  MORSE constants - configuration parameters
- */
-#define MORSE_CONCURRENCY       1
-#define MORSE_TILE_SIZE         2
-#define MORSE_INNER_BLOCK_SIZE  3
-#define MORSE_HOUSEHOLDER_MODE  5
-#define MORSE_HOUSEHOLDER_SIZE  6
-#define MORSE_TRANSLATION_MODE  7
-
-#define MORSE_FLAT_HOUSEHOLDER  1
-#define MORSE_TREE_HOUSEHOLDER  2
-
-#define MORSE_INPLACE           1
-#define MORSE_OUTOFPLACE        2
-
-/**
- *  MORSE constants - success & error codes
- */
-#define MORSE_SUCCESS                 0
-#define MORSE_ERR_NOT_INITIALIZED  -101
-#define MORSE_ERR_REINITIALIZED    -102
-#define MORSE_ERR_NOT_SUPPORTED    -103
-#define MORSE_ERR_ILLEGAL_VALUE    -104
-#define MORSE_ERR_NOT_FOUND        -105
-#define MORSE_ERR_OUT_OF_RESOURCES -106
-#define MORSE_ERR_INTERNAL_LIMIT   -107
-#define MORSE_ERR_UNALLOCATED      -108
-#define MORSE_ERR_FILESYSTEM       -109
-#define MORSE_ERR_UNEXPECTED       -110
-#define MORSE_ERR_SEQUENCE_FLUSHED -111
-
-/**
- * Kernels options
- */
-#define MORSE_PRIORITY_MIN  0
-#define MORSE_PRIORITY_MAX  INT_MAX
-
-
-/**
- *  Scheduler properties
- */
-#define PRIORITY        16
-#define CALLBACK        17
-#define REDUX           18
-
-/**
- *  MORSE ???
- */
-#define MORSE_REQUEST_INITIALIZER {MORSE_SUCCESS}
-
-#endif
diff --git a/include/chameleon/morse_kernels.h b/include/chameleon/morse_kernels.h
deleted file mode 100644
index ccfa33c13a3829b9ecbdc8a3cc6aa048c4d54027..0000000000000000000000000000000000000000
--- a/include/chameleon/morse_kernels.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- *
- * @file morse_kernels.h
- *
- * @copyright 2009-2014 The University of Tennessee and The University of
- *                      Tennessee Research Foundation. All rights reserved.
- * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
- *                      Univ. Bordeaux. All rights reserved.
- *
- ***
- *
- * @brief Chameleon elementary kernels enum
- *
- * @version 1.0.0
- * @author Mathieu Faverge
- * @author Cedric Augonnet
- * @date 2011-06-01
- *
- */
-#ifndef _MORSE_KERNELS_H_
-#define _MORSE_KERNELS_H_
-
-/**
- * Used to apply operations on specific kernels
- */
-typedef enum morse_kernel_e {
-
-  MORSE_GEMM,
-  MORSE_HEMM,
-  MORSE_HER2K,
-  MORSE_HERK,
-  MORSE_SYTRF_NOPIV,
-  MORSE_SYMM,
-  MORSE_SYR2K,
-  MORSE_SYRK,
-  MORSE_TRSM,
-  MORSE_TRMM,
-
-  MORSE_GELQT,
-  MORSE_GEQRT,
-  MORSE_GESSM,
-  MORSE_GETRF,
-  MORSE_GETRF_INCPIV,
-  MORSE_GETRF_NOPIV,
-  MORSE_LAUUM,
-  MORSE_ORMLQ,
-  MORSE_ORMQR,
-  MORSE_POTRF,
-  MORSE_SSSSM,
-  MORSE_TRTRI,
-  MORSE_TSLQT,
-  MORSE_TSMLQ,
-  MORSE_TSMQR,
-  MORSE_TSQRT,
-  MORSE_TSTRF,
-  MORSE_TTLQT,
-  MORSE_TTMLQ,
-  MORSE_TTMQR,
-  MORSE_TTQRT,
-  MORSE_UNMLQ,
-  MORSE_UNMQR,
-
-  MORSE_GEADD,
-  MORSE_LASCAL,
-  MORSE_LACPY,
-  MORSE_LAG2C,
-  MORSE_LAG2Z,
-  MORSE_LANGE,
-  MORSE_LANHE,
-  MORSE_LANSY,
-  MORSE_LASET,
-  MORSE_LASET2,
-  MORSE_PEMV,
-  MORSE_PLGHE,
-  MORSE_PLGSY,
-  MORSE_PLRNT,
-  MORSE_TILE_ZERO,
-
-  MORSE_NBKERNELS
-} MORSE_kernel_t;
-
-#endif
diff --git a/include/chameleon/morse_tasks.h b/include/chameleon/morse_tasks.h
deleted file mode 100644
index eef463227047ef770b673e74bfeed5e0a9b720ec..0000000000000000000000000000000000000000
--- a/include/chameleon/morse_tasks.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- *
- * @file morse_tasks.h
- *
- * @copyright 2009-2014 The University of Tennessee and The University of
- *                      Tennessee Research Foundation. All rights reserved.
- * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
- *                      Univ. Bordeaux. All rights reserved.
- *
- ***
- *
- * @brief Chameleon elementary tasks main header
- *
- * @version 1.0.0
- * @author Mathieu Faverge
- * @author Cedric Augonnet
- * @date 2011-06-01
- *
- */
-#ifndef _MORSE_TASKS_H_
-#define _MORSE_TASKS_H_
-
-#include "chameleon/chameleon_config.h"
-
-BEGIN_C_DECLS
-
-/**
- * MORSE Task submission routines
- */
-void MORSE_TASK_ztile_zero(const MORSE_option_t *options,
-                           int X1, int X2, int Y1, int Y2,
-                           const MORSE_desc_t *A, int Am, int An, int lda);
-void MORSE_TASK_dtile_zero(const MORSE_option_t *options,
-                           int X1, int X2, int Y1, int Y2,
-                           const MORSE_desc_t *A, int Am, int An, int lda);
-void MORSE_TASK_ctile_zero(const MORSE_option_t *options,
-                           int X1, int X2, int Y1, int Y2,
-                           const MORSE_desc_t *A, int Am, int An, int lda);
-void MORSE_TASK_stile_zero(const MORSE_option_t *options,
-                           int X1, int X2, int Y1, int Y2,
-                           const MORSE_desc_t *A, int Am, int An, int lda);
-
-#include "chameleon/morse_tasks_z.h"
-#include "chameleon/morse_tasks_d.h"
-#include "chameleon/morse_tasks_c.h"
-#include "chameleon/morse_tasks_s.h"
-#include "chameleon/morse_tasks_zc.h"
-#include "chameleon/morse_tasks_ds.h"
-
-END_C_DECLS
-
-#endif /* _MORSE_TASKS_H_ */
diff --git a/include/chameleon/morse_tasks_z.h b/include/chameleon/morse_tasks_z.h
deleted file mode 100644
index d9a768d4771a18de8279f6a36ff1601a0fc49d1f..0000000000000000000000000000000000000000
--- a/include/chameleon/morse_tasks_z.h
+++ /dev/null
@@ -1,468 +0,0 @@
-/**
- *
- * @file morse_tasks_z.h
- *
- * @copyright 2009-2014 The University of Tennessee and The University of
- *                      Tennessee Research Foundation. All rights reserved.
- * @copyright 2012-2016 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
- *                      Univ. Bordeaux. All rights reserved.
- *
- ***
- *
- * @brief Chameleon MORSE_Complex64_t elementary tasks header
- *
- * @version 1.0.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
- * @author Hatem Ltaief
- * @author Azzam Haidar
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
- * @precisions normal z -> c d s
- *
- */
-#ifndef _MORSE_TASKS_Z_H_
-#define _MORSE_TASKS_Z_H_
-
-
-/**
- *  Declarations of QUARK wrappers (called by MORSE) - alphabetical order
- */
-void MORSE_TASK_dzasum(const MORSE_option_t *options,
-                       MORSE_enum storev, MORSE_enum uplo, int M, int N,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn);
-void MORSE_TASK_zgeadd(const MORSE_option_t *options,
-                       MORSE_enum trans, int m, int n, int nb,
-                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                       MORSE_Complex64_t beta,  const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_zlascal(const MORSE_option_t *options,
-                        MORSE_enum uplo,
-                        int m, int n, int nb,
-                        MORSE_Complex64_t alpha,
-                        const MORSE_desc_t *A, int Am, int An, int lda);
-void MORSE_TASK_zbrdalg(const MORSE_option_t *options,
-                        MORSE_enum uplo,
-                        int N, int NB,
-                        const MORSE_desc_t *A,
-                        const MORSE_desc_t *C, int Cm, int Cn,
-                        const MORSE_desc_t *S, int Sm, int Sn,
-                        int i, int j, int m, int grsiz, int BAND,
-                        int *PCOL, int *ACOL, int *MCOL);
-void MORSE_TASK_zgelqt(const MORSE_option_t *options,
-                       int m, int n, int ib, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_zgemm(const MORSE_option_t *options,
-                      MORSE_enum transA, MORSE_enum transB,
-                      int m, int n, int k, int nb,
-                      MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                      const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                      MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zgemm2( const MORSE_option_t *options,
-                        MORSE_enum transA, MORSE_enum transB,
-                        int m, int n, int k, int nb,
-                        MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                        const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                        MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zgemm_f2(const MORSE_option_t *options,
-                         MORSE_enum transA, MORSE_enum transB,
-                         int m, int n, int k, int nb,
-                         MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                         const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                         MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc,
-                         const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1,
-                         const MORSE_desc_t *fake2, int fake2m, int fake2n, int szefake2, int flag2);
-void MORSE_TASK_zgemm_p2(const MORSE_option_t *options,
-                         MORSE_enum transA, MORSE_enum transB,
-                         int m, int n, int k, int nb,
-                         MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                         const MORSE_Complex64_t **B, int ldb,
-                         MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zgemm_p2f1(const MORSE_option_t *options,
-                           MORSE_enum transA, MORSE_enum transB,
-                           int m, int n, int k, int nb,
-                           MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                           const MORSE_Complex64_t **B, int ldb,
-                           MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc,
-                           const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1);
-void MORSE_TASK_zgemm_p3(const MORSE_option_t *options,
-                         MORSE_enum transA, MORSE_enum transB,
-                         int m, int n, int k, int nb,
-                         MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                         const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                         MORSE_Complex64_t beta, MORSE_Complex64_t **C, int ldc);
-void MORSE_TASK_zgeqrt(const MORSE_option_t *options,
-                       int m, int n, int ib, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_zgessm(const MORSE_option_t *options,
-                       int m, int n, int k, int ib, int nb,
-                       int *IPIV,
-                       const MORSE_desc_t *L, int Lm, int Ln, int ldl,
-                       const MORSE_desc_t *D, int Dm, int Dn, int ldd,
-                       const MORSE_desc_t *A, int Am, int An, int lda);
-void MORSE_TASK_zgessq( const MORSE_option_t *options,
-                        int m, int n,
-                        const MORSE_desc_t *A, int Am, int An, int lda,
-                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn);
-void MORSE_TASK_zgetrf(const MORSE_option_t *options,
-                       int m, int n, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       int *IPIV,
-
-                       MORSE_bool check_info, int iinfo);
-void MORSE_TASK_zgetrf_incpiv(const MORSE_option_t *options,
-                              int m, int n, int ib, int nb,
-                              const MORSE_desc_t *A, int Am, int An, int lda,
-                              const MORSE_desc_t *L, int Lm, int Ln, int ldl,
-                              int *IPIV,
-                              MORSE_bool check_info, int iinfo);
-void MORSE_TASK_zgetrf_nopiv(const MORSE_option_t *options,
-                             int m, int n, int ib, int nb,
-                             const MORSE_desc_t *A, int Am, int An, int lda, int iinfo);
-void MORSE_TASK_zgetrf_reclap(const MORSE_option_t *options,
-                              int m, int n, int nb,
-                              const MORSE_desc_t *A, int Am, int An, int lda,
-                              int *IPIV,
-
-                              MORSE_bool check_info, int iinfo,
-                              int nbthread);
-void MORSE_TASK_zgetrf_rectil(const MORSE_option_t *options,
-                              const MORSE_desc_t A, const MORSE_desc_t *Amn, int Amnm, int Amnn, int size,
-                              int *IPIV,
-
-                              MORSE_bool check_info, int iinfo,
-                              int nbthread);
-void MORSE_TASK_zgetrip(const MORSE_option_t *options,
-                        int m, int n, const MORSE_desc_t *A, int Am, int An, int szeA);
-void MORSE_TASK_zgetrip_f1(const MORSE_option_t *options,
-                           int m, int n, const MORSE_desc_t *A, int Am, int An, int szeA,
-                           const MORSE_desc_t *fake, int fakem, int faken, int szeF, int paramF);
-void MORSE_TASK_zgetrip_f2(const MORSE_option_t *options,
-                           int m, int n, const MORSE_desc_t *A, int Am, int An, int szeA,
-                           const MORSE_desc_t *fake1, int fake1m, int fake1n, int szeF1, int paramF1,
-                           const MORSE_desc_t *fake2, int fake2m, int fake2n, int szeF2, int paramF2);
-void MORSE_TASK_zhe2ge(const MORSE_option_t *options,
-                       MORSE_enum uplo,
-                       int m, int n, int mb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_zhemm(const MORSE_option_t *options,
-                      MORSE_enum side, MORSE_enum uplo,
-                      int m, int n, int nb,
-                      MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                      const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                      MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zhegst(const MORSE_option_t *options,
-                       int itype, MORSE_enum uplo, int N,
-                       const MORSE_desc_t *A, int Am, int An, int LDA,
-                       const MORSE_desc_t *B, int Bm, int Bn, int LDB,
-                       int iinfo);
-void MORSE_TASK_zherk(const MORSE_option_t *options,
-                      MORSE_enum uplo, MORSE_enum trans,
-                      int n, int k, int nb,
-                      double alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                      double beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zher2k(const MORSE_option_t *options,
-                       MORSE_enum uplo, MORSE_enum trans,
-                       int n, int k, int nb,
-                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int LDB,
-                       double beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zherfb(const MORSE_option_t *options,
-                       MORSE_enum uplo,
-                       int n, int k, int ib, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt,
-                       const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zlacpy(const MORSE_option_t *options,
-                       MORSE_enum uplo, int m, int n, int mb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_zlacpyx(const MORSE_option_t *options,
-                        MORSE_enum uplo, int m, int n, int mb,
-                        int displA, const MORSE_desc_t *A, int Am, int An, int lda,
-                        int displB, const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_zlange(const MORSE_option_t *options,
-                       MORSE_enum norm, int M, int N, int NB,
-                       const MORSE_desc_t *A, int Am, int An, int LDA,
-                       const MORSE_desc_t *B, int Bm, int Bn);
-void MORSE_TASK_zlange_max(const MORSE_option_t *options,
-                           const MORSE_desc_t *A, int Am, int An,
-                           const MORSE_desc_t *B, int Bm, int Bn);
-void MORSE_TASK_zhessq( const MORSE_option_t *options,
-                        MORSE_enum uplo, int n,
-                        const MORSE_desc_t *A, int Am, int An, int lda,
-                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn );
-void MORSE_TASK_zlanhe(const MORSE_option_t *options,
-                       MORSE_enum norm, MORSE_enum uplo, int N, int NB,
-                       const MORSE_desc_t *A, int Am, int An, int LDA,
-                       const MORSE_desc_t *B, int Bm, int Bn);
-void MORSE_TASK_zlansy(const MORSE_option_t *options,
-                       MORSE_enum norm, MORSE_enum uplo, int N, int NB,
-                       const MORSE_desc_t *A, int Am, int An, int LDA,
-                       const MORSE_desc_t *B, int Bm, int Bn);
-void MORSE_TASK_zlantr(const MORSE_option_t *options,
-                       MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
-                       int M, int N, int NB,
-                       const MORSE_desc_t *A, int Am, int An, int LDA,
-                       const MORSE_desc_t *B, int Bm, int Bn);
-void MORSE_TASK_zlaset(const MORSE_option_t *options,
-                       MORSE_enum uplo, int n1, int n2, MORSE_Complex64_t alpha,
-                       MORSE_Complex64_t beta, const MORSE_desc_t *tileA, int tileAm, int tileAn, int ldtilea);
-void MORSE_TASK_zlaset2(const MORSE_option_t *options,
-                        MORSE_enum uplo, int n1, int n2, MORSE_Complex64_t alpha,
-                        const MORSE_desc_t *tileA, int tileAm, int tileAn, int ldtilea);
-void MORSE_TASK_zlaswp(const MORSE_option_t *options,
-                       int n, const MORSE_desc_t *A, int Am, int An, int lda,
-                       int i1,  int i2, int *ipiv, int inc);
-void MORSE_TASK_zlaswp_f2(const MORSE_option_t *options,
-                          int n, const MORSE_desc_t *A, int Am, int An, int lda,
-                          int i1,  int i2, int *ipiv, int inc,
-                          const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1,
-                          const MORSE_desc_t *fake2, int fake2m, int fake2n, int szefake2, int flag2);
-void MORSE_TASK_zlaswp_ontile(const MORSE_option_t *options,
-                              const MORSE_desc_t descA, const MORSE_desc_t *A, int Am, int An,
-                              int i1,  int i2, int *ipiv, int inc, MORSE_Complex64_t *fakepanel);
-void MORSE_TASK_zlaswp_ontile_f2(const MORSE_option_t *options,
-                                 const MORSE_desc_t descA, const MORSE_desc_t *A, int Am, int An,
-                                 int i1,  int i2, int *ipiv, int inc,
-                                 const MORSE_desc_t *fake1, int fake1m, int fake1n, int szefake1, int flag1,
-                                 const MORSE_desc_t *fake2, int fake2m, int fake2n, int szefake2, int flag2);
-void MORSE_TASK_zlaswpc_ontile(const MORSE_option_t *options,
-                               const MORSE_desc_t descA, const MORSE_desc_t *A, int Am, int An,
-                               int i1,  int i2, int *ipiv, int inc, MORSE_Complex64_t *fakepanel);
-void MORSE_TASK_zlatro(const MORSE_option_t *options,
-                       MORSE_enum uplo, MORSE_enum trans, int m, int n, int mb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_zlauum(const MORSE_option_t *options,
-                       MORSE_enum uplo, int n, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda);
-void MORSE_TASK_zplghe(const MORSE_option_t *options,
-                       double bump, int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
-                       int bigM, int m0, int n0, unsigned long long int seed );
-void MORSE_TASK_zplgsy(const MORSE_option_t *options,
-                       MORSE_Complex64_t bump, int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
-                       int bigM, int m0, int n0, unsigned long long int seed );
-void MORSE_TASK_zplrnt(const MORSE_option_t *options,
-                       int m, int n, const MORSE_desc_t *A, int Am, int An, int lda,
-                       int bigM, int m0, int n0, unsigned long long int seed );
-void MORSE_TASK_zpotrf(const MORSE_option_t *options,
-                       MORSE_enum uplo, int n, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-
-                       int iinfo);
-void MORSE_TASK_zshift( const MORSE_option_t *options,
-                        int s, int m, int n, int L,
-                        MORSE_Complex64_t *A);
-void MORSE_TASK_zshiftw(const MORSE_option_t *options,
-                        int s, int cl, int m, int n, int L,
-                        const MORSE_desc_t *A, int Am, int An, MORSE_Complex64_t *W);
-void MORSE_TASK_zssssm(const MORSE_option_t *options,
-                       int m1, int n1, int m2, int n2, int k, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *L1, int L1m, int L1n, int ldl1,
-                       const MORSE_desc_t *L2, int L2m, int L2n, int ldl2,
-                       const int *IPIV);
-void MORSE_TASK_zsymm(const MORSE_option_t *options,
-                      MORSE_enum side, MORSE_enum uplo,
-                      int m, int n, int nb,
-                      MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                      const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                      MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zsyrk(const MORSE_option_t *options,
-                      MORSE_enum uplo, MORSE_enum trans,
-                      int n, int k, int nb,
-                      MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                      MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zsyr2k(const MORSE_option_t *options,
-                       MORSE_enum uplo, MORSE_enum trans,
-                       int n, int k, int nb,
-                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int LDB,
-                       MORSE_Complex64_t beta, const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zsyssq( const MORSE_option_t *options,
-                        MORSE_enum uplo, int n,
-                        const MORSE_desc_t *A, int Am, int An, int lda,
-                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn );
-void MORSE_TASK_zsytrf_nopiv(const MORSE_option_t *options,
-                             MORSE_enum uplo, int n, int nb,
-                             const MORSE_desc_t *A, int Am, int An, int lda,
-                             int iinfo);
-void MORSE_TASK_zswpab(const MORSE_option_t *options,
-                       int i, int n1, int n2,
-                       const MORSE_desc_t *A, int Am, int An, int szeA);
-void MORSE_TASK_zswptr_ontile(const MORSE_option_t *options,
-                              const MORSE_desc_t descA, const MORSE_desc_t *Aij, int Aijm, int Aijn,
-                              int i1,  int i2, int *ipiv, int inc,
-                              const MORSE_desc_t *Akk, int Akkm, int Akkn, int ldak);
-void MORSE_TASK_ztplqt(const MORSE_option_t *options,
-                       int m, int n, int l, int ib, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt );
-void MORSE_TASK_ztpmlqt( const MORSE_option_t *options,
-                         MORSE_enum side, MORSE_enum trans,
-                         int M, int N, int K, int L, int ib, int nb,
-                         const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                         const MORSE_desc_t *T, int Tm, int Tn, int ldt,
-                         const MORSE_desc_t *A, int Am, int An, int lda,
-                         const MORSE_desc_t *B, int Bm, int Bn, int ldb );
-void MORSE_TASK_ztpmqrt(const MORSE_option_t *options,
-                        MORSE_enum side, MORSE_enum trans,
-                        int m, int n, int k, int l, int ib, int nb,
-                        const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                        const MORSE_desc_t *T, int Tm, int Tn, int ldt,
-                        const MORSE_desc_t *A, int Am, int An, int lda,
-                        const MORSE_desc_t *B, int Bm, int Bn, int ldb );
-void MORSE_TASK_ztpqrt(const MORSE_option_t *options,
-                       int m, int n, int l, int ib, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn, int ldb,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt );
-void MORSE_TASK_ztrdalg(const MORSE_option_t *options,
-                        MORSE_enum uplo,
-                        int N, int NB,
-                        const MORSE_desc_t *A,
-                        const MORSE_desc_t *C, int Cm, int Cn,
-                        const MORSE_desc_t *S, int Sm, int Sn,
-                        int i, int j, int m, int grsiz, int BAND,
-                        int *PCOL, int *ACOL, int *MCOL);
-void MORSE_TASK_ztradd(const MORSE_option_t *options,
-                       MORSE_enum uplo, MORSE_enum trans, int m, int n, int nb,
-                       MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                       MORSE_Complex64_t beta,  const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_ztrasm(const MORSE_option_t *options,
-                       MORSE_enum storev, MORSE_enum uplo, MORSE_enum diag, int M, int N,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *B, int Bm, int Bn);
-void MORSE_TASK_ztrmm(const MORSE_option_t *options,
-                      MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag,
-                      int m, int n, int nb,
-                      MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                      const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_ztrmm_p2(const MORSE_option_t *options,
-                         MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag,
-                         int m, int n, int nb,
-                         MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                         MORSE_Complex64_t **B, int ldb);
-void MORSE_TASK_ztrsm(const MORSE_option_t *options,
-                      MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag,
-                      int m, int n, int nb,
-                      MORSE_Complex64_t alpha, const MORSE_desc_t *A, int Am, int An, int lda,
-                      const MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_ztrssq( const MORSE_option_t *options,
-                        MORSE_enum uplo, MORSE_enum diag,
-                        int m, int n,
-                        const MORSE_desc_t *A, int Am, int An, int lda,
-                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn );
-void MORSE_TASK_ztrtri(const MORSE_option_t *options,
-                       MORSE_enum uplo, MORSE_enum diag, int n, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-
-                       int iinfo);
-void MORSE_TASK_ztslqt(const MORSE_option_t *options,
-                       int m, int n, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_ztsmlq(const MORSE_option_t *options,
-                       MORSE_enum side, MORSE_enum trans,
-                       int m1, int n1, int m2, int n2, int k, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_ztsmlq_hetra1(const MORSE_option_t *options,
-                              MORSE_enum side, MORSE_enum trans,
-                              int m1, int n1, int m2, int n2, int k, int ib, int nb,
-                              const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                              const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                              const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                              const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_ztsmqr(const MORSE_option_t *options,
-                       MORSE_enum side, MORSE_enum trans,
-                       int m1, int n1, int m2, int n2, int k, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_ztsmqr_hetra1(const MORSE_option_t *options,
-                              MORSE_enum side, MORSE_enum trans,
-                              int m1, int n1, int m2, int n2, int k, int ib, int nb,
-                              const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                              const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                              const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                              const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_ztsqrt(const MORSE_option_t *options,
-                       int m, int n, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_ztstrf(const MORSE_option_t *options,
-                       int m, int n, int ib, int nb,
-                       const MORSE_desc_t *U, int Um, int Un, int ldu,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *L, int Lm, int Ln, int ldl,
-                       int *IPIV,
-
-                       MORSE_bool check_info, int iinfo);
-void MORSE_TASK_zttmqr(const MORSE_option_t *options,
-                       MORSE_enum side, MORSE_enum trans,
-                       int m1, int n1, int m2, int n2, int k, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_zttqrt(const MORSE_option_t *options,
-                       int m, int n, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_zttmlq(const MORSE_option_t *options,
-                       MORSE_enum side, MORSE_enum trans,
-                       int m1, int n1, int m2, int n2, int k, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_zttlqt(const MORSE_option_t *options,
-                       int m, int n, int ib, int nb,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt);
-void MORSE_TASK_zpamm(const MORSE_option_t *options,
-                       int op, MORSE_enum side, MORSE_enum storev,
-                       int m, int n, int k, int l,
-                       const MORSE_desc_t *A1, int A1m, int A1n, int lda1,
-                       const MORSE_desc_t *A2, int A2m, int A2n, int lda2,
-                       const MORSE_desc_t *V, int Vm, int Vn, int ldv,
-                       const MORSE_desc_t *W, int Wm, int Wn, int ldw);
-void MORSE_TASK_zplssq( const MORSE_option_t *options,
-                        const MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn,
-                        const MORSE_desc_t *SCLSSQ,     int SCLSSQm,     int SCLSSQn );
-void MORSE_TASK_zplssq2( const MORSE_option_t *options,
-                         const MORSE_desc_t *RESULT, int RESULTm, int RESULTn );
-void MORSE_TASK_zunmlq(const MORSE_option_t *options,
-                       MORSE_enum side, MORSE_enum trans,
-                       int m, int n, int ib,  int nb, int k,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt,
-                       const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zunmqr(const MORSE_option_t *options,
-                       MORSE_enum side, MORSE_enum trans,
-                       int m, int n, int k, int ib, int nb,
-                       const MORSE_desc_t *A, int Am, int An, int lda,
-                       const MORSE_desc_t *T, int Tm, int Tn, int ldt,
-                       const MORSE_desc_t *C, int Cm, int Cn, int ldc);
-void MORSE_TASK_zbuild( const MORSE_option_t *options,
-                        const MORSE_desc_t *A, int Am, int An, int lda,
-                        void *user_data, void* user_build_callback );
-
-#endif
diff --git a/include/chameleon/morse_tasks_zc.h b/include/chameleon/morse_tasks_zc.h
deleted file mode 100644
index ffeafdb5c5477cd34115cdafc2abc78f5c714efa..0000000000000000000000000000000000000000
--- a/include/chameleon/morse_tasks_zc.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- *
- * @file morse_tasks_zc.h
- *
- * @copyright 2009-2014 The University of Tennessee and The University of
- *                      Tennessee Research Foundation. All rights reserved.
- * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
- *                      Univ. Bordeaux. All rights reserved.
- *
- ***
- *
- * @brief Chameleon complex mixed precision elementary tasks header
- *
- * @version 1.0.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
- * @author Hatem Ltaief
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
- * @precisions mixed zc -> ds
- *
- */
-#ifndef _MORSE_TASKS_Z_H_
-#define _MORSE_TASKS_Z_H_
-
-/**
- *  Declarations of QUARK wrappers (called by MORSE) - alphabetical order
- */
-void MORSE_TASK_clag2z(MORSE_option_t *options,
-                       int m, int n, int nb,
-                       MORSE_desc_t *A, int Am, int An, int lda,
-                       MORSE_desc_t *B, int Bm, int Bn, int ldb);
-void MORSE_TASK_zlag2c(MORSE_option_t *options,
-                       int m, int n, int nb,
-                       MORSE_desc_t *A, int Am, int An, int lda,
-                       MORSE_desc_t *B, int Bm, int Bn, int ldb);
-
-#endif
diff --git a/include/chameleon/morse_z.h b/include/chameleon/morse_z.h
deleted file mode 100644
index b05bfa5a5a5fb38c60497f031a20fba1a4e41c99..0000000000000000000000000000000000000000
--- a/include/chameleon/morse_z.h
+++ /dev/null
@@ -1,336 +0,0 @@
-/**
- *
- * @file morse_z.h
- *
- * @copyright 2009-2014 The University of Tennessee and The University of
- *                      Tennessee Research Foundation. All rights reserved.
- * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
- *                      Univ. Bordeaux. All rights reserved.
- *
- ***
- *
- * @brief Chameleon MORSE_complex64_t wrappers
- *
- * @version 1.0.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Jakub Kurzak
- * @author Hatem Ltaief
- * @author Azzam Haidar
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
- * @precisions normal z -> c d s
- *
- */
-#ifndef _MORSE_Z_H_
-#define _MORSE_Z_H_
-
-BEGIN_C_DECLS
-
-/**
- *  Declarations of math functions (LAPACK layout) - alphabetical order
- */
-int MORSE_zgeadd(MORSE_enum trans, int M, int N, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t beta, MORSE_Complex64_t *B, int LDB);
-//int MORSE_zgebrd(int M, int N, MORSE_Complex64_t *A, int LDA, double *D, double *E, MORSE_desc_t *descT);
-//int MORSE_zgecon(MORSE_enum norm, int N, MORSE_Complex64_t *A, int LDA, double anorm, double *rcond);
-//int MORSE_zpocon(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, double anorm, double *rcond);
-int MORSE_zgelqf(int M, int N, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT);
-int MORSE_zgelqs(int M, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgels(MORSE_enum trans, int M, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgemm(MORSE_enum transA, MORSE_enum transB, int M, int N, int K, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC);
-int MORSE_zgeqrf(int M, int N, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT);
-int MORSE_zgeqrs(int M, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_Complex64_t *B, int LDB);
-//int MORSE_zgesv(int N, int NRHS, MORSE_Complex64_t *A, int LDA, int *IPIV, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgesv_incpiv(int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descL, int *IPIV, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgesv_nopiv(int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgesvd(MORSE_enum jobu, MORSE_enum jobvt, int M, int N, MORSE_Complex64_t *A, int LDA, double *S, MORSE_desc_t *descT, MORSE_Complex64_t *U, int LDU, MORSE_Complex64_t *VT, int LDVT);
-//int MORSE_zgetrf(int M, int N, MORSE_Complex64_t *A, int LDA, int *IPIV);
-int MORSE_zgetrf_incpiv(int M, int N, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descL, int *IPIV);
-int MORSE_zgetrf_nopiv(int M, int N, MORSE_Complex64_t *A, int LDA);
-//int MORSE_zgetri(int N, MORSE_Complex64_t *A, int LDA, int *IPIV);
-//int MORSE_zgetrs(MORSE_enum trans, int N, int NRHS, MORSE_Complex64_t *A, int LDA, int *IPIV, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgetrs_incpiv(MORSE_enum trans, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descL, int *IPIV, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgetrs_nopiv(MORSE_enum trans, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_zhemm(MORSE_enum side, MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC);
-int MORSE_zherk(MORSE_enum uplo, MORSE_enum trans, int N, int K, double alpha, MORSE_Complex64_t *A, int LDA, double beta, MORSE_Complex64_t *C, int LDC);
-int MORSE_zher2k(MORSE_enum uplo, MORSE_enum trans, int N, int K, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, double beta, MORSE_Complex64_t *C, int LDC);
-//int MORSE_zheev(MORSE_enum jobz, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, double *W, MORSE_desc_t *descT, MORSE_Complex64_t *Q, int LDQ);
-int MORSE_zheevd(MORSE_enum jobz, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, double *W, MORSE_desc_t *descT);
-//int MORSE_zhegv(MORSE_enum itype, MORSE_enum jobz, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, double *W, MORSE_desc_t *descT, MORSE_Complex64_t *Q, int LDQ);
-//int MORSE_zhegvd(MORSE_enum itype, MORSE_enum jobz, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, double *W, MORSE_desc_t *descT, MORSE_Complex64_t *Q, int LDQ);
-//int MORSE_zhegst(MORSE_enum itype, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_zhetrd(MORSE_enum jobz, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, double *D, double *E, MORSE_desc_t *descT, MORSE_Complex64_t *Q, int LDQ);
-int MORSE_zlacpy(MORSE_enum uplo, int M, int N, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-double MORSE_zlange(MORSE_enum norm, int M, int N, MORSE_Complex64_t *A, int LDA);
-double MORSE_zlanhe(MORSE_enum norm, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
-double MORSE_zlansy(MORSE_enum norm, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
-double MORSE_zlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag, int M, int N, MORSE_Complex64_t *A, int LDA);
-int MORSE_zlascal(MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA);
-int MORSE_zlaset(MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha, MORSE_Complex64_t beta, MORSE_Complex64_t *A, int LDA);
-//int MORSE_zlaswp(int N, MORSE_Complex64_t *A, int LDA, int K1, int K2, int *IPIV, int INCX);
-//int MORSE_zlaswpc(int N, MORSE_Complex64_t *A, int LDA, int K1, int K2, int *IPIV, int INCX);
-int MORSE_zlauum(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
-int MORSE_zplghe( double bump, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
-int MORSE_zplgsy( MORSE_Complex64_t bump, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
-int MORSE_zplrnt( int M, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
-int MORSE_zposv(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_zpotrf(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
-int MORSE_zsytrf(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
-int MORSE_zpotri(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
-int MORSE_zpotrimm(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t *C, int LDC);
-int MORSE_zpotrs(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_zsymm(MORSE_enum side, MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC);
-int MORSE_zsyrk(MORSE_enum uplo, MORSE_enum trans, int N, int K, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC);
-int MORSE_zsyr2k(MORSE_enum uplo, MORSE_enum trans, int N, int K, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC);
-int MORSE_zsysv(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_zsytrs(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_ztpgqrt( int M, int N, int K, int L, MORSE_Complex64_t *V1, int LDV1, MORSE_desc_t *descT1, MORSE_Complex64_t *V2, int LDV2, MORSE_desc_t *descT2, MORSE_Complex64_t *Q1, int LDQ1, MORSE_Complex64_t *Q2, int LDQ2 );
-int MORSE_ztpqrt( int M, int N, int L, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_desc_t *descT );
-int MORSE_ztradd(MORSE_enum uplo, MORSE_enum trans, int M, int N, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t beta, MORSE_Complex64_t *B, int LDB);
-int MORSE_ztrmm(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, int N, int NRHS, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_ztrsm(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, int N, int NRHS, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_ztrsmpl(int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descL, int *IPIV, MORSE_Complex64_t *B, int LDB);
-int MORSE_ztrsmrv(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, int N, int NRHS, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
-int MORSE_ztrtri(MORSE_enum uplo, MORSE_enum diag, int N, MORSE_Complex64_t *A, int LDA);
-int MORSE_zunglq(int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zungqr(int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zunmlq(MORSE_enum side, MORSE_enum trans, int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zunmqr(MORSE_enum side, MORSE_enum trans, int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_Complex64_t *B, int LDB);
-
-//int MORSE_zgecfi(int m, int n, MORSE_Complex64_t *A, MORSE_enum fin, int imb, int inb, MORSE_enum fout, int omb, int onb);
-//int MORSE_zgetmi(int m, int n, MORSE_Complex64_t *A, MORSE_enum fin, int mb,  int nb);
-
-/**
- *  Declarations of math functions (tile layout) - alphabetical order
- */
-int MORSE_zgeadd_Tile(MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *B);
-//int MORSE_zgebrd_Tile(MORSE_desc_t *A, double *D, double *E, MORSE_desc_t *T);
-//int MORSE_zgecon_Tile(MORSE_enum norm, MORSE_desc_t *A, double anorm, double *rcond);
-//int MORSE_zpocon_Tile(MORSE_enum uplo, MORSE_desc_t *A, double anorm, double *rcond);
-int MORSE_zgelqf_Tile(MORSE_desc_t *A, MORSE_desc_t *T);
-int MORSE_zgelqs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B);
-int MORSE_zgels_Tile(MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B);
-int MORSE_zgemm_Tile(MORSE_enum transA, MORSE_enum transB, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C);
-int MORSE_zgeqrf_Tile(MORSE_desc_t *A, MORSE_desc_t *T);
-int MORSE_zgeqrs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B);
-//int MORSE_zgesv_Tile(MORSE_desc_t *A, int *IPIV, MORSE_desc_t *B);
-int MORSE_zgesv_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t *B);
-int MORSE_zgesv_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_zgesvd_Tile(MORSE_enum jobu, MORSE_enum jobvt, MORSE_desc_t *A, double *S, MORSE_desc_t *T, MORSE_Complex64_t *U, int LDU, MORSE_Complex64_t *VT, int LDVT);
-//int MORSE_zgetrf_Tile(MORSE_desc_t *A, int *IPIV);
-int MORSE_zgetrf_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV);
-int MORSE_zgetrf_nopiv_Tile(MORSE_desc_t *A);
-//int MORSE_zgetri_Tile(MORSE_desc_t *A, int *IPIV);
-//int MORSE_zgetrs_Tile(MORSE_enum trans, MORSE_desc_t *A, int *IPIV, MORSE_desc_t *B);
-int MORSE_zgetrs_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t *B);
-int MORSE_zgetrs_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_zhemm_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C);
-int MORSE_zherk_Tile(MORSE_enum uplo, MORSE_enum trans, double alpha, MORSE_desc_t *A, double beta, MORSE_desc_t *C);
-int MORSE_zher2k_Tile(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, double beta, MORSE_desc_t *C);
-//int MORSE_zheev_Tile(MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, double *W, MORSE_desc_t *T, MORSE_Complex64_t *Q, int LDQ);
-int MORSE_zheevd_Tile(MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, double *W, MORSE_desc_t *T);
-//int MORSE_zhegv_Tile( MORSE_enum itype, MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, double *W, MORSE_desc_t *T, MORSE_desc_t *Q);
-//int MORSE_zhegvd_Tile(MORSE_enum itype, MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, double *W, MORSE_desc_t *T, MORSE_desc_t *Q);
-//int MORSE_zhegst_Tile(MORSE_enum itype, MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_zhetrd_Tile(MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, double *D, double *E, MORSE_desc_t *T, MORSE_Complex64_t *Q, int LDQ);
-int MORSE_zlacpy_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B);
-double MORSE_zlange_Tile(MORSE_enum norm, MORSE_desc_t *A);
-double MORSE_zlanhe_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A);
-double MORSE_zlansy_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A);
-double MORSE_zlantr_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A);
-int MORSE_zlascal_Tile(MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A);
-int MORSE_zlaset_Tile(MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_Complex64_t beta, MORSE_desc_t *A);
-//int MORSE_zlaswp_Tile(MORSE_desc_t *A, int K1, int K2, int *IPIV, int INCX);
-//int MORSE_zlaswpc_Tile(MORSE_desc_t *A, int K1, int K2, int *IPIV, int INCX);
-int MORSE_zlauum_Tile(MORSE_enum uplo, MORSE_desc_t *A);
-int MORSE_zplghe_Tile(double bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed );
-int MORSE_zplgsy_Tile(MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed );
-int MORSE_zplrnt_Tile(MORSE_desc_t *A, unsigned long long int seed );
-int MORSE_zposv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_zpotrf_Tile(MORSE_enum uplo, MORSE_desc_t *A);
-int MORSE_zsytrf_Tile(MORSE_enum uplo, MORSE_desc_t *A);
-int MORSE_zpotri_Tile(MORSE_enum uplo, MORSE_desc_t *A);
-int MORSE_zpotrimm_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *C);
-int MORSE_zpotrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_zsymm_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C);
-int MORSE_zsyrk_Tile(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *C);
-int MORSE_zsyr2k_Tile(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C);
-int MORSE_zsysv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_zsytrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_ztpgqrt_Tile( int L, MORSE_desc_t *V1, MORSE_desc_t *T1, MORSE_desc_t *V2, MORSE_desc_t *T2, MORSE_desc_t *Q1, MORSE_desc_t *Q2 );
-int MORSE_ztpqrt_Tile( int L, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *T );
-int MORSE_ztradd_Tile(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *B);
-int MORSE_ztrmm_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_ztrsm_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_ztrsmpl_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t *B);
-int MORSE_ztrsmrv_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B);
-int MORSE_ztrtri_Tile(MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A);
-int MORSE_zunglq_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B);
-int MORSE_zungqr_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B);
-int MORSE_zunmlq_Tile(MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B);
-int MORSE_zunmqr_Tile(MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B);
-
-/**
- *  Declarations of math functions (tile layout, asynchronous execution) - alphabetical order
- */
-int MORSE_zgeadd_Tile_Async(MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zgebrd_Tile_Async(MORSE_desc_t *A, double *D, double *E, MORSE_desc_t *T, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zgecon_Tile_Async(MORSE_enum norm, MORSE_desc_t *A, double anorm, double *rcond, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zpocon_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, double anorm, double *rcond, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgelqf_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgelqs_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgels_Tile_Async(MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgemm_Tile_Async(MORSE_enum transA, MORSE_enum transB, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgeqrf_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgeqrs_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zgesv_Tile_Async(MORSE_desc_t *A, int *IPIV, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgesv_incpiv_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgesv_nopiv_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt, MORSE_desc_t *A, double *S, MORSE_desc_t *T, MORSE_Complex64_t *U, int LDU, MORSE_Complex64_t *VT, int LDVT, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zgetrf_Tile_Async(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgetrf_incpiv_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgetrf_nopiv_Tile_Async(MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zgetri_Tile_Async(MORSE_desc_t *A, int *IPIV, MORSE_desc_t *W, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zgetrs_Tile_Async(MORSE_enum trans, MORSE_desc_t *A, int *IPIV, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgetrs_incpiv_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgetrs_nopiv_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zhemm_Tile_Async(MORSE_enum side, MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zherk_Tile_Async(MORSE_enum uplo, MORSE_enum trans, double alpha, MORSE_desc_t *A, double beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zher2k_Tile_Async(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, double beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zheev_Tile_Async(MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, double *W, MORSE_desc_t *T, MORSE_Complex64_t *Q, int LDQ, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, double *W, MORSE_desc_t *T, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zhegv_Tile_Async( MORSE_enum itype, MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, double *W, MORSE_desc_t *T, MORSE_desc_t *Q, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zhegvd_Tile_Async(MORSE_enum itype, MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, double *W, MORSE_desc_t *T, MORSE_desc_t *Q, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zhegst_Tile_Async(MORSE_enum itype, MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zhetrd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo, MORSE_desc_t *A, double *D, double *E, MORSE_desc_t *T, MORSE_Complex64_t *Q, int LDQ, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlacpy_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlange_Tile_Async(MORSE_enum norm, MORSE_desc_t *A, double *value, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlanhe_Tile_Async(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *value, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlansy_Tile_Async(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *value, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlantr_Tile_Async(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A, double *value, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlascal_Tile_Async(MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlaset_Tile_Async(MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_Complex64_t beta, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zlaswp_Tile_Async(MORSE_desc_t *A, int K1, int K2, int *IPIV, int INCX, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zlaswpc_Tile_Async(MORSE_desc_t *A, int K1, int K2, int *IPIV, int INCX, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zlauum_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zplghe_Tile_Async(double bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
-int MORSE_zplgsy_Tile_Async(MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
-int MORSE_zplrnt_Tile_Async(MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
-int MORSE_zposv_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zpotrf_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zsytrf_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zpotri_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zpotrimm_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zpotrs_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zsysv_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zsytrs_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zsymm_Tile_Async(MORSE_enum side, MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zsyrk_Tile_Async(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zsyr2k_Tile_Async(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_ztpgqrt_Tile_Async( int L, MORSE_desc_t *V1, MORSE_desc_t *T1, MORSE_desc_t *V2, MORSE_desc_t *T2, MORSE_desc_t *Q1, MORSE_desc_t *Q2, MORSE_sequence_t *sequence, MORSE_request_t *request );
-int MORSE_ztpqrt_Tile_Async( int L, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *T, MORSE_sequence_t *sequence, MORSE_request_t *request );
-int MORSE_ztradd_Tile_Async(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_ztrmm_Tile_Async(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_ztrsm_Tile_Async(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_ztrsmpl_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_ztrsmrv_Tile_Async(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_ztrtri_Tile_Async(MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zunglq_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zungqr_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zunmlq_Tile_Async(MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zunmqr_Tile_Async(MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-
-//int MORSE_zgecfi_Async(int m, int n, MORSE_Complex64_t *A, MORSE_enum f_in, int imb, int inb, MORSE_enum f_out, int omb, int onb, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zgetmi_Async(int m, int n, MORSE_Complex64_t *A, MORSE_enum f_in, int mb,  int inb, MORSE_sequence_t *sequence, MORSE_request_t *request);
-
-/**
- *  Declarations of libhqr dependent functions.
- */
-/**
- *  Declarations of math functions (LAPACK layout) - alphabetical order
- */
-int MORSE_zgels_param(const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *descTT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgelqf_param(const libhqr_tree_t *qrtree, int M, int N, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *descTT);
-int MORSE_zgelqs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *descTT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zgeqrf_param(const libhqr_tree_t *qrtree, int M, int N, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *descTT);
-int MORSE_zgeqrs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *TT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zunglq_param(const libhqr_tree_t *qrtree, int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *TT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zungqr_param(const libhqr_tree_t *qrtree, int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *descTT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zunmlq_param(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum trans, int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_desc_t *TT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zunmlq_param(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum trans, int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descT, MORSE_desc_t *TT, MORSE_Complex64_t *B, int LDB);
-int MORSE_zunmqr_param(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum trans, int M, int N, int K, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descTS, MORSE_desc_t *TT, MORSE_Complex64_t *B, int LDB);
-/**
- *  Declarations of math functions (tile layout) - alphabetical order
- */
-int MORSE_zgels_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-int MORSE_zgelqf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT);
-int MORSE_zgelqs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-int MORSE_zgeqrf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT);
-int MORSE_zgeqrs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-int MORSE_zunglq_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-int MORSE_zungqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-int MORSE_zungqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-int MORSE_zunmlq_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-int MORSE_zunmqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B);
-/**
- *  Declarations of math functions (tile layout, asynchronous execution) - alphabetical order
- */
-int MORSE_zgels_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgelqf_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgelqs_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgeqrf_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zgeqrs_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zunglq_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zungqr_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zunmlq_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-int MORSE_zunmqr_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
-
-/**
- *  Declarations of workspace allocation functions (tile layout) - alphabetical order
- */
-int MORSE_Alloc_Workspace_zgesv_incpiv(        int N, MORSE_desc_t **descL, int **IPIV, int p, int q);
-int MORSE_Alloc_Workspace_zgetrf_incpiv(int M, int N, MORSE_desc_t **descL, int **IPIV, int p, int q);
-
-int MORSE_Alloc_Workspace_zgebrd(int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zgeev( int N,        MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zgehrd(int N,        MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zgelqf(int M, int N, MORSE_desc_t **T, int p, int q);
-int MORSE_Alloc_Workspace_zgels( int M, int N, MORSE_desc_t **T, int p, int q);
-int MORSE_Alloc_Workspace_zgeqrf(int M, int N, MORSE_desc_t **T, int p, int q);
-int MORSE_Alloc_Workspace_zgesvd(int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zheev( int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zheevd( int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zhegv( int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zhegvd( int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zhetrd(int M, int N, MORSE_desc_t **descT, int p, int q);
-
-/**
- *  Declarations of workspace allocation functions (tile layout, asynchronous execution) - alphabetical order
- */
-int MORSE_Alloc_Workspace_zgetri_Tile_Async(MORSE_desc_t *A, MORSE_desc_t *W);
-
-/* Warning: Those functions are deprecated */
-int MORSE_Alloc_Workspace_zgelqf_Tile(int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zgels_Tile( int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zgeqrf_Tile(int M, int N, MORSE_desc_t **descT, int p, int q);
-int MORSE_Alloc_Workspace_zgesv_incpiv_Tile (int N, MORSE_desc_t **descL, int **IPIV, int p, int q);
-int MORSE_Alloc_Workspace_zgetrf_incpiv_Tile(int N, MORSE_desc_t **descL, int **IPIV, int p, int q);
-
-/**
- *  Auxiliary function prototypes
- */
-int MORSE_zLapack_to_Tile(MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A);
-int MORSE_zTile_to_Lapack(MORSE_desc_t *A, MORSE_Complex64_t *Af77, int LDA);
-
-/**
- *  User Builder function prototypes
- */
-int MORSE_zbuild(MORSE_enum uplo, int M, int N, MORSE_Complex64_t *A, int LDA, void *user_data, void* user_build_callback);
-int MORSE_zbuild_Tile(MORSE_enum uplo,  MORSE_desc_t *A, void *user_data, void* user_build_callback );
-int MORSE_zbuild_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, void *user_data, void* user_build_callback, MORSE_sequence_t *sequence, MORSE_request_t  *request);
-
-END_C_DECLS
-
-#endif
diff --git a/include/chameleon/morse_zc.h b/include/chameleon/morse_zc.h
deleted file mode 100644
index c1ebf5e6ca902efd83437538d5761450b408cd8b..0000000000000000000000000000000000000000
--- a/include/chameleon/morse_zc.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- *
- * @file morse_zc.h
- *
- * @copyright 2009-2014 The University of Tennessee and The University of
- *                      Tennessee Research Foundation. All rights reserved.
- * @copyright 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
- *                      Univ. Bordeaux. All rights reserved.
- *
- ***
- *
- * @brief Chameleon mixed precision wrappers header
- *
- * @version 1.0.0
- * @comment This file has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @date 2010-11-15
- * @precisions mixed zc -> ds
- *
- */
-#ifndef _MORSE_ZC_H_
-#define _MORSE_ZC_H_
-
-BEGIN_C_DECLS
-
-/**
- *  Declarations of math functions (LAPACK layout) - alphabetical order
- */
-//int MORSE_zcgesv(int N, int NRHS, MORSE_Complex64_t *A, int LDA, int * IPIV, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t *X, int LDX, int *ITER);
-//int MORSE_zcposv(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t *X, int LDX, int *ITER);
-//int MORSE_zcgels(MORSE_enum trans, int M, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t *X, int LDX, int *ITER);
-//int MORSE_zcungesv(MORSE_enum trans, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t *X, int LDX, int *ITER);
-
-/**
- *  Declarations of math functions (tile layout) - alphabetical order
- */
-//int MORSE_zcgesv_Tile(MORSE_desc_t *A, int *IPIV, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER);
-//int MORSE_zcposv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER);
-/* int MORSE_zcgels_Tile(MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER); */
-//int MORSE_zcungesv_Tile(MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER);
-
-/**
- *  Declarations of math functions (tile layout, asynchronous execution) - alphabetical order
- */
-//int MORSE_zcgesv_Tile_Async(MORSE_desc_t *A, int *IPIV, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zcposv_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zcgels_Tile_Async(MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER, MORSE_sequence_t *sequence, MORSE_request_t *request);
-//int MORSE_zcungesv_Tile_Async(MORSE_enum trans, MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B, MORSE_desc_t *X, int *ITER, MORSE_sequence_t *sequence, MORSE_request_t *request);
-
-END_C_DECLS
-
-#endif
diff --git a/include/chameleon/morse_runtime.h b/include/chameleon/runtime.h
similarity index 71%
rename from include/chameleon/morse_runtime.h
rename to include/chameleon/runtime.h
index e0f1092f609b769b644340b5d104ce4cff806b1c..982e29be03f1dc842c5e7ee786f58ff7891ab700 100644
--- a/include/chameleon/morse_runtime.h
+++ b/include/chameleon/runtime.h
@@ -1,6 +1,6 @@
 /**
  *
- * @file morse_runtime.h
+ * @file runtime.h
  *
  * @copyright 2009-2014 The University of Tennessee and The University of
  *                      Tennessee Research Foundation. All rights reserved.
@@ -9,7 +9,7 @@
  *
  ***
  *
- * @brief Chameleon runtimes API
+ * @brief The common runtimes API
  * @version 1.0.0
  * @author Mathieu Faverge
  * @author Cedric Augonnet
@@ -17,14 +17,24 @@
  * @date 2011-06-01
  *
  */
-#ifndef _MORSE_RUNTIME_H_
-#define _MORSE_RUNTIME_H_
+#ifndef _runtime_h_
+#define _runtime_h_
 
 #include "chameleon/chameleon_config.h"
-#include "chameleon/morse_struct.h"
+#include "chameleon/chameleon_constants.h"
+#include "chameleon/runtime_struct.h"
 
 BEGIN_C_DECLS
 
+/**
+ * @brief Ids of the runtime supported by the RUNTIME API
+ */
+typedef enum runtime_id_e {
+    RUNTIME_SCHED_QUARK,  /**< Quark runtime  */
+    RUNTIME_SCHED_PARSEC, /**< PaRSEC runtime */
+    RUNTIME_SCHED_STARPU, /**< StarPU runtime */
+} RUNTIME_id_t;
+
 /**
  * @name RUNTIME Context functions
  * @{
@@ -36,21 +46,21 @@ BEGIN_C_DECLS
  * @brief Create the runtime specific options in the context before starting it
  *
  * @param[in,out] ctxt
- *            The Chameleon context to initialize for the runtime.
+ *            The runtime context to initialize for the runtime.
  */
 void
-RUNTIME_context_create( MORSE_context_t *ctxt );
+RUNTIME_context_create( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Destroy the specific options in the context after this last one has
  * been stop.
  *
  * @param[in,out] ctxt
- *            The Chameleon context in which the runtime specific options must
+ *            The runtime context in which the runtime specific options must
  *            be destroyed
  */
 void
-RUNTIME_context_destroy( MORSE_context_t *ctxt );
+RUNTIME_context_destroy( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Enable a global option of the runtime.
@@ -84,7 +94,7 @@ RUNTIME_disable( MORSE_enum option );
  * @brief Initialize the scheduler with the given parameters
  *
  * @param[in,out] ctxt
- *            The Chameleon context in which to initialize the runtime support.
+ *            The runtime context in which to initialize the runtime support.
  *
  * @param[in] ncpus
  *            Defines the total number of cores given to the runtime per
@@ -108,7 +118,7 @@ RUNTIME_disable( MORSE_enum option );
  *
  */
 int
-RUNTIME_init( MORSE_context_t *ctxt,
+RUNTIME_init( RUNTIME_context_t *ctxt,
               int ncpus,
               int ncudas,
               int nthreads_per_worker );
@@ -117,90 +127,90 @@ RUNTIME_init( MORSE_context_t *ctxt,
  * @brief Finalize the scheduler used for the computations.
  *
  * @param[in,out] ctxt
- *            The Chameleon context for which the runtime system must be shut down.
+ *            The runtime context for which the runtime system must be shut down.
  */
 void
-RUNTIME_finalize( MORSE_context_t *ctxt );
+RUNTIME_finalize( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Suspend the processing of new tasks submitted to the runtime system.
  *
  * @param[in] ctxt
- *            The Chameleon context for which the suspension must be made.
+ *            The runtime context for which the suspension must be made.
  */
 void
-RUNTIME_pause( MORSE_context_t *ctxt );
+RUNTIME_pause( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Resume the processing of new tasks submitted to the runtime system.
  *
  * @param[in] ctxt
- *            The Chameleon context for which the execution must be resumed.
+ *            The runtime context for which the execution must be resumed.
  */
 void
-RUNTIME_resume( MORSE_context_t *ctxt );
+RUNTIME_resume( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Wait for completion of all tasks submitted to the runtime.
  *
  * @param[in] ctxt
- *            The Chameleon context in which the task completion is performed.
+ *            The runtime context in which the task completion is performed.
  */
 void
-RUNTIME_barrier( MORSE_context_t *ctxt );
+RUNTIME_barrier( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Show the progress of the computations when enabled.
  *
  * @param[in] ctxt
- *            The Chameleon context for which the context needs to be printed.
+ *            The runtime context for which the context needs to be printed.
  */
 void
-RUNTIME_progress( MORSE_context_t *ctxt );
+RUNTIME_progress( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Get the rank of the current worker for the runtime.
  *
  * @param[in] ctxt
- *            The Chameleon context for which the thread rank is asked.
+ *            The runtime context for which the thread rank is asked.
  *
  * @retval The rank of the current thread in the runtime.
  */
 int
-RUNTIME_thread_rank( MORSE_context_t *ctxt );
+RUNTIME_thread_rank( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Get the number of CPU workers of the runtime.
  *
  * @param[in] ctxt
- *            The Chameleon context for which the number of workers is requested
+ *            The runtime context for which the number of workers is requested
  *
  * @retval The number of threads currently used by the runtime.
  */
 int
-RUNTIME_thread_size( MORSE_context_t *ctxt );
+RUNTIME_thread_size( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Get the MPI comm rank of the current process related to the runtime.
  *
  * @param[in] ctxt
- *            The Chameleon context for which the rank is asked.
+ *            The runtime context for which the rank is asked.
  *
  * @retval The rank of the process in the communicator known by the runtime.
  */
 int
-RUNTIME_comm_rank( MORSE_context_t *ctxt );
+RUNTIME_comm_rank( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Get the MPI comm size related to the runtime.
  *
  * @param[in] ctxt
- *            The Chameleon context for which the communicator size is asked.
+ *            The runtime context for which the communicator size is asked.
  *
  * @retval The size of the communicator known by the runtime.
  */
 int
-RUNTIME_comm_size( MORSE_context_t *ctxt );
+RUNTIME_comm_size( RUNTIME_context_t *ctxt );
 
 /**
  * @brief Set the data tags bounds based on runtime tags limit.
@@ -231,24 +241,24 @@ RUNTIME_comm_set_tag_sizes( int user_tag_width,
  * @brief Create a sequence structure associated to a given context.
  *
  * @param[in] ctxt
- *            The Chameleon context in which the sequence is created.
+ *            The runtime context in which the sequence is created.
  *
  * @param[in,out] sequence
- *            On entry the allocated Chameleon sequence structure, and on exit
+ *            On entry the allocated runtime sequence structure, and on exit
  *            the scheduler specifics for the sequence have been initialized.
  *
  * @retval MORSE_SUCCESS on success.
  * @retval MORSE_ERR_OUT_OF_RESOURCES, if the sequence could not be created.
  */
 int
-RUNTIME_sequence_create( MORSE_context_t  *ctxt,
-                         MORSE_sequence_t *sequence );
+RUNTIME_sequence_create( RUNTIME_context_t  *ctxt,
+                         RUNTIME_sequence_t *sequence );
 
 /**
  * @brief Destroy the sequence structure.
  *
  * @param[in] ctxt
- *            The Chameleon context to which the sequence belongs.
+ *            The runtime context to which the sequence belongs.
  *
  * @param[in,out] sequence
  *            On entry the sequence structure.
@@ -258,14 +268,14 @@ RUNTIME_sequence_create( MORSE_context_t  *ctxt,
  * @retval MORSE_SUCCESS on success.
  */
 int
-RUNTIME_sequence_destroy( MORSE_context_t  *ctxt,
-                          MORSE_sequence_t *sequence);
+RUNTIME_sequence_destroy( RUNTIME_context_t  *ctxt,
+                          RUNTIME_sequence_t *sequence);
 
 /**
  * @brief Wait for completion of all tasks in the given sequence.
  *
  * @param[in] ctxt
- *            The Chameleon context to which the sequence belongs.
+ *            The runtime context to which the sequence belongs.
  *
  * @param[in] sequence
  *            The sequence that gathers a set of tasks to complete.
@@ -274,14 +284,14 @@ RUNTIME_sequence_destroy( MORSE_context_t  *ctxt,
  * @retval The algorithm return code on failure.
  */
 int
-RUNTIME_sequence_wait( MORSE_context_t  *ctxt,
-                       MORSE_sequence_t *sequence );
+RUNTIME_sequence_wait( RUNTIME_context_t  *ctxt,
+                       RUNTIME_sequence_t *sequence );
 
 /**
  * @brief Cancel all remaining tasks in the given sequence.
  *
  * @param[in] ctxt
- *            The Chameleon context to which the sequence belongs.
+ *            The runtime context to which the sequence belongs.
  *
  * @param[in,out] sequence
  *            The sequence that gathers the set of tasks to cancel.
@@ -297,9 +307,9 @@ RUNTIME_sequence_wait( MORSE_context_t  *ctxt,
  *            above.
  */
 void
-RUNTIME_sequence_flush( MORSE_context_t  *ctxt,
-                        MORSE_sequence_t *sequence,
-                        MORSE_request_t  *request,
+RUNTIME_sequence_flush( RUNTIME_context_t  *ctxt,
+                        RUNTIME_sequence_t *sequence,
+                        RUNTIME_request_t  *request,
                         int               status );
 
 /**
@@ -403,7 +413,7 @@ RUNTIME_desc_release( const MORSE_desc_t *desc );
  */
 void
 RUNTIME_desc_flush( const MORSE_desc_t     *desc,
-                    const MORSE_sequence_t *sequence );
+                    const RUNTIME_sequence_t *sequence );
 
 /**
  * @brief Flush all data submitted to the runtime systems from the distributed
@@ -435,7 +445,7 @@ RUNTIME_flush( );
  *            The column coordinate of the piece of data in the matrix
  */
 void
-RUNTIME_data_flush( const MORSE_sequence_t *sequence,
+RUNTIME_data_flush( const RUNTIME_sequence_t *sequence,
                     const MORSE_desc_t *A, int Am, int An );
 
 /**
@@ -461,11 +471,11 @@ RUNTIME_data_flush( const MORSE_sequence_t *sequence,
  */
 #if defined(CHAMELEON_USE_MIGRATE)
 void
-RUNTIME_data_migrate( const MORSE_sequence_t *sequence,
+RUNTIME_data_migrate( const RUNTIME_sequence_t *sequence,
                       const MORSE_desc_t *A, int Am, int An, int new_rank );
 #else
 static inline void
-RUNTIME_data_migrate( const MORSE_sequence_t *sequence,
+RUNTIME_data_migrate( const RUNTIME_sequence_t *sequence,
                       const MORSE_desc_t *A, int Am, int An, int new_rank ) {
     (void)sequence; (void)A; (void)Am; (void)An; (void)new_rank;
 }
@@ -495,12 +505,74 @@ RUNTIME_data_getaddr( const MORSE_desc_t *A, int Am, int An );
  * @name RUNTIME Insert task options management
  * @{
  */
-void  RUNTIME_options_init     (MORSE_option_t*, MORSE_context_t*, MORSE_sequence_t*, MORSE_request_t*);
-void  RUNTIME_options_finalize (MORSE_option_t*, MORSE_context_t *);
-int   RUNTIME_options_ws_alloc (MORSE_option_t*, size_t, size_t);
-int   RUNTIME_options_ws_free  (MORSE_option_t*);
-/* int   RUNTIME_options_ws_gethost   (MORSE_option_t*); */
-/* int   RUNTIME_options_ws_getdevice (MORSE_option_t*); */
+
+/**
+ * @brief Initialize the runtime option structure
+ *
+ * @param[in,out] options
+ *            The options structure that needs to be initialized
+ *
+ * @param[in] context
+ *            The runtime context in which to initialize the runtime support.
+ *
+ * @param[in] sequence
+ *            The sequence structure to associate in the options.
+ *
+ * @param[in] request
+ *            The request structure to associate in the options.
+ *
+ */
+void
+RUNTIME_options_init( RUNTIME_option_t   *options,
+                      RUNTIME_context_t  *context,
+                      RUNTIME_sequence_t *sequence,
+                      RUNTIME_request_t  *request );
+
+/**
+ * @brief Finalize the runtime options structure
+ *
+ * @param[in,out] options
+ *            The options structure to finalize
+ *
+ * @param[in] context
+ *            The runtime context in which to options structure has been
+ *            initialized.
+ *
+ */
+void
+RUNTIME_options_finalize( RUNTIME_option_t  *options,
+                          RUNTIME_context_t *context );
+
+/**
+ * @brief Declare and initialize the workspaces for the given options structure
+ *
+ * @param[in,out] options
+ *            The options structure in which to initialize the workspaces
+ *
+ * @param[in] wsize
+ *            The worker workspace size required. This workspace will be
+ *            allocated on the device that runs the kernel.
+ *
+ * @param[in] hsize
+ *            The host workspace size required. This workspace will always be
+ *            allocated on the host and will be used by hybrid CPU/GPU kernels.
+ *
+ */
+int
+RUNTIME_options_ws_alloc( RUNTIME_option_t *options,
+                          size_t wsize, size_t hsize );
+
+/**
+ * @brief Submit the release of the workspaces associated to the options structure.
+ *
+ * @warning With some runtime, this call might have to call a synchronization.
+ *
+ * @param[in,out] options
+ *            The options structure for which to workspcaes will be released
+ *
+ */
+int
+RUNTIME_options_ws_free( RUNTIME_option_t *options );
 
 /**
  * @}
@@ -539,8 +611,8 @@ void   RUNTIME_schedprofile_display ();
 void   RUNTIME_kernelprofile_display();
 double RUNTIME_get_time();
 
-void  RUNTIME_iteration_push     (MORSE_context_t*, unsigned long iteration);
-void  RUNTIME_iteration_pop      (MORSE_context_t*);
+void  RUNTIME_iteration_push     (RUNTIME_context_t*, unsigned long iteration);
+void  RUNTIME_iteration_pop      (RUNTIME_context_t*);
 
 void RUNTIME_start_profiling();
 void RUNTIME_stop_profiling();
@@ -563,4 +635,4 @@ void RUNTIME_sdisplay_oneprofile (MORSE_kernel_t);
 
 END_C_DECLS
 
-#endif /* _MORSE_RUNTIME_H_ */
+#endif /* _runtime_h_ */