diff --git a/cmake_modules/local_subs.py b/cmake_modules/local_subs.py
index 14b07b874208eb465c18c4912a387c7402da984f..8fec8ccde1c44496ba92cb681c3239b2481ec870 100644
--- a/cmake_modules/local_subs.py
+++ b/cmake_modules/local_subs.py
@@ -71,6 +71,7 @@ subs = {
 
         # ----- Chameleon Prefixes
         ('CHAMELEON_P',          'CHAMELEON_S',          'CHAMELEON_D',          'CHAMELEON_C',          'CHAMELEON_Z'         ),
+        ('CHAMELEON_p',          'CHAMELEON_s',          'CHAMELEON_d',          'CHAMELEON_c',          'CHAMELEON_z'         ),
         ('RUNTIME_P',            'RUNTIME_s',            'RUNTIME_d',            'RUNTIME_c',            'RUNTIME_z'           ),
         ('chameleon_p',          'chameleon_s',          'chameleon_d',          'chameleon_c',          'chameleon_z'         ),
         ('codelet_p',            'codelet_s',            'codelet_d',            'codelet_c',            'codelet_z'           ),
diff --git a/compute/ztile.c b/compute/ztile.c
index 02af3dfb8e41ff40fa207662203be81491760e89..b4c3b536725994387c5e18676e054035b3cdfd83 100644
--- a/compute/ztile.c
+++ b/compute/ztile.c
@@ -26,7 +26,8 @@
  *
  * @ingroup CHAMELEON_Complex64_t
  *
- *  CHAMELEON_zLapack_to_Tile - Conversion from LAPACK layout to tile layout.
+ * @brief Conversion of CHAMELEON_Complex64_t matrix from LAPACK layout to tile
+ *        layout.  Deprecated function, see CHAMELEON_zLap2Desc().
  *
  *******************************************************************************
  *
@@ -37,25 +38,85 @@
  *          The leading dimension of the matrix Af77.
  *
  * @param[in,out] A
- *          Descriptor of the CHAMELEON matrix in tile layout.
- *          If CHAMELEON_TRANSLATION_MODE is set to ChamInPlace,
- *          A->mat is not used and set to Af77 when returns, else if
- *          CHAMELEON_TRANSLATION_MODE is set to ChamOutOfPlace,
- *          A->mat has to be allocated before.
+ *          Descriptor of the CHAMELEON matrix.
  *
  *******************************************************************************
  *
  * @retval CHAMELEON_SUCCESS successful exit
  *
+ */
+int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A )
+{
+    return CHAMELEON_zLap2Desc( ChamUpperLower, Af77, LDA, A );
+}
+
+/**
+ ********************************************************************************
+ *
+ * @ingroup CHAMELEON_Complex64_t
+ *
+ * @brief Conversion of CHAMELEON_Complex64_t matrix from tile layout to LAPACK
+ *        layout.  Deprecated function, see CHAMELEON_zDesc2Lap().
+ *
  *******************************************************************************
  *
- * @sa CHAMELEON_zTile_to_Lapack
- * @sa CHAMELEON_cLapack_to_Tile
- * @sa CHAMELEON_dLapack_to_Tile
- * @sa CHAMELEON_sLapack_to_Tile
+ * @param[in] A
+ *          Descriptor of the CHAMELEON matrix.
+ *
+ * @param[in,out] Af77
+ *          LAPACK matrix.
+ *
+ * @param[in] LDA
+ *          The leading dimension of the matrix Af77.
+ *
+ *******************************************************************************
+ *
+ * @retval CHAMELEON_SUCCESS successful exit
  *
  */
-int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A )
+int CHAMELEON_zTile_to_Lapack( CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int LDA )
+{
+    return CHAMELEON_zDesc2Lap( ChamUpperLower, A, Af77, LDA );
+}
+
+/**
+ ********************************************************************************
+ *
+ * @ingroup CHAMELEON_Complex64_t
+ *
+ * @brief Conversion of a CHAMELEON_Complex64_t matrix from LAPACK layout to
+ *        CHAM_desct_t.
+ *
+ *******************************************************************************
+ *
+ * @param[in] uplo
+ *          Specifies the shape of the matrix A:
+ *          = ChamUpper: A is upper triangular;
+ *          = ChamLower: A is lower triangular;
+ *          = ChamUpperLower: A is general.
+ *
+ * @param[in] Af77
+ *          LAPACK matrix.
+ *
+ * @param[in] LDA
+ *          The leading dimension of the matrix Af77.
+ *
+ * @param[in,out] A
+ *          Descriptor of the CHAMELEON matrix.
+ *
+ *******************************************************************************
+ *
+ * @retval CHAMELEON_SUCCESS successful exit
+ *
+ *******************************************************************************
+ *
+ * @sa CHAMELEON_zDesc2Lap
+ * @sa CHAMELEON_cLap2Desc
+ * @sa CHAMELEON_dLap2Desc
+ * @sa CHAMELEON_sLap2Desc
+ *
+ */
+int CHAMELEON_zLap2Desc( cham_uplo_t uplo, CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A )
 {
     CHAM_context_t *chamctxt;
     RUNTIME_sequence_t *sequence = NULL;
@@ -87,7 +148,7 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
     /* Start the computation */
     chameleon_sequence_create( chamctxt, &sequence );
 
-    chameleon_pzlacpy( ChamUpperLower, B, A, sequence, &request );
+    chameleon_pzlacpy( uplo, B, A, sequence, &request );
 
     CHAMELEON_Desc_Flush( B, sequence );
     CHAMELEON_Desc_Flush( A, sequence );
@@ -107,19 +168,22 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
  *
  * @ingroup CHAMELEON_Complex64_t
  *
- *  CHAMELEON_Tile_to_Lapack - Conversion from tile layout to LAPACK layout.
+ * @brief Conversion of CHAMELEON_Complex64_t matrix from LAPACK layout to tile
+ *        layout. Deprecated function, see CHAMELEON_zDesc2Lap().
  *
  *******************************************************************************
  *
+ * @param[in] uplo
+ *          Specifies the shape of the matrix A:
+ *          = ChamUpper: A is upper triangular;
+ *          = ChamLower: A is lower triangular;
+ *          = ChamUpperLower: A is general.
+ *
  * @param[in] A
- *          Descriptor of the CHAMELEON matrix in tile layout.
+ *          Descriptor of the CHAMELEON matrix.
  *
  * @param[in,out] Af77
  *          LAPACK matrix.
- *          If CHAMELEON_TRANSLATION_MODE is set to ChamInPlace,
- *          Af77 has to be A->mat, else if
- *          CHAMELEON_TRANSLATION_MODE is set to ChamOutOfPlace,
- *          Af77 has to be allocated before.
  *
  * @param[in] LDA
  *          The leading dimension of the matrix Af77.
@@ -130,13 +194,13 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
  *
  *******************************************************************************
  *
- * @sa CHAMELEON_zLapack_to_Tile
- * @sa CHAMELEON_cTile_to_Lapack
- * @sa CHAMELEON_dTile_to_Lapack
- * @sa CHAMELEON_sTile_to_Lapack
+ * @sa CHAMELEON_zLap2Desc
+ * @sa CHAMELEON_cDesc2Lap
+ * @sa CHAMELEON_dDesc2Lap
+ * @sa CHAMELEON_sDesc2Lap
  *
  */
-int CHAMELEON_zTile_to_Lapack( CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int LDA )
+int CHAMELEON_zDesc2Lap( cham_uplo_t uplo, CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int LDA )
 {
     CHAM_context_t *chamctxt;
     RUNTIME_sequence_t *sequence = NULL;
@@ -167,7 +231,7 @@ int CHAMELEON_zTile_to_Lapack( CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int
     /* Start the computation */
     chameleon_sequence_create( chamctxt, &sequence );
 
-    chameleon_pzlacpy( ChamUpperLower, A, B, sequence, &request );
+    chameleon_pzlacpy( uplo, A, B, sequence, &request );
 
     CHAMELEON_Desc_Flush( A, sequence );
     CHAMELEON_Desc_Flush( B, sequence );
diff --git a/control/chameleon_f77.c b/control/chameleon_f77.c
index 7de2fe850557b483ab887d19cd95b951d572b34e..b3e09b48c25b514581a07b75b55a90bd2f41d0f7 100644
--- a/control/chameleon_f77.c
+++ b/control/chameleon_f77.c
@@ -97,10 +97,10 @@ extern "C" {
      *  FORTRAN API - conversion from LAPACK F77 matrix layout to tile layout
      */
     void CHAMELEON_LAPACK_TO_TILE(intptr_t *Af77, int *LDA, intptr_t *A, int *INFO)
-    {   *INFO = CHAMELEON_Lapack_to_Tile( (void *)Af77, *LDA, (CHAM_desc_t *)(*A)); }
+    {   *INFO = CHAMELEON_Lap2Desc( ChamUpperLower, (void *)Af77, *LDA, (CHAM_desc_t *)(*A) ); }
 
     void CHAMELEON_TILE_TO_LAPACK(intptr_t *A, intptr_t *Af77, int *LDA, int *INFO)
-    {   *INFO = CHAMELEON_Tile_to_Lapack((CHAM_desc_t *)(*A), (void *)Af77, *LDA); }
+    {   *INFO = CHAMELEON_Desc2Lap( ChamUpperLower, (CHAM_desc_t *)(*A), (void *)Af77, *LDA ); }
 
 #ifdef __cplusplus
 }
diff --git a/control/chameleon_zf77.c b/control/chameleon_zf77.c
index 6162950adc36ea39555323e6eab694c8e15b640b..08f079d7f7dc5fc7b603c63083e279293aaffad2 100644
--- a/control/chameleon_zf77.c
+++ b/control/chameleon_zf77.c
@@ -281,10 +281,10 @@
  *  FORTRAN API - math functions (simple interface)
  */
 void CHAMELEON_ZLAPACK_TO_TILE(CHAMELEON_Complex64_t *Af77, int *LDA, CHAM_desc_t *A, int *info)
-{ *info = CHAMELEON_zLapack_to_Tile(Af77, *LDA, A); }
+{ *info = CHAMELEON_zLap2Desc( ChamUpperLower, Af77, *LDA, A ); }
 
 void CHAMELEON_ZTILE_TO_LAPACK(CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int *LDA, int *info)
-{ *info = CHAMELEON_zTile_to_Lapack(A, Af77, *LDA); }
+{ *info = CHAMELEON_zDesc2Lap( ChamUpperLower, A, Af77, *LDA ); }
 
 //void CHAMELEON_ZGEBRD(int *M, int *N, CHAMELEON_Complex64_t *A, int *LDA, double *D, double *E, CHAM_desc_t **descT, int *info)
 //{ *info = CHAMELEON_zgebrd(*M, *N, A, *LDA, D, E, *descT); }
diff --git a/control/tile.c b/control/tile.c
index c32b0355a38018b3e519aac491530084a514573e..3d9257ef4a69d2256af3ce3c42cab336cdddbb5f 100644
--- a/control/tile.c
+++ b/control/tile.c
@@ -29,7 +29,8 @@
  *
  * @ingroup Tile
  *
- *  CHAMELEON_Lapack_to_Tile - Conversion from LAPACK layout to tile layout.
+ * @brief  Conversion from LAPACK layout to tile layout
+ *         Deprecated function see CHAMELEON_Lap2Desc().
  *
  ******************************************************************************
  *
@@ -39,7 +40,7 @@
  * @param[in] LDA
  *          The leading dimension of the matrix Af77.
  *
- * @param[out] A
+ * @param[in,out] A
  *          Descriptor of the CHAMELEON matrix in tile layout.
  *
  ******************************************************************************
@@ -47,21 +48,84 @@
  * @retval CHAMELEON_SUCCESS successful exit
  *
  */
-int CHAMELEON_Lapack_to_Tile(void *Af77, int LDA, CHAM_desc_t *A)
+int
+CHAMELEON_Lapack_to_Tile(  void *Af77, int LDA, CHAM_desc_t *A )
+{
+    return CHAMELEON_Lap2Desc( ChamUpperLower, Af77, LDA, A );
+}
+
+/**
+ *
+ * @ingroup Tile
+ *
+ * @brief Conversion from tile layout to LAPACK layout.
+ *        Deprecated function, see CHAMELEON_Desc2Lap().
+ *
+ ******************************************************************************
+ *
+ * @param[in] A
+ *          Descriptor of the CHAMELEON matrix in tile layout.
+ *
+ * @param[in,out] Af77
+ *          LAPACK matrix (only needed on proc 0).
+ *
+ * @param[in] LDA
+ *          The leading dimension of the matrix Af77.
+ *
+ ******************************************************************************
+ *
+ * @retval CHAMELEON_SUCCESS successful exit
+ *
+ */
+int
+CHAMELEON_Tile_to_Lapack( CHAM_desc_t *A, void *Af77, int LDA )
+{
+    return CHAMELEON_Desc2Lap( ChamUpperLower, A, Af77, LDA );
+}
+
+/**
+ *
+ * @ingroup Tile
+ *
+ * @brief Conversion from LAPACK layout to CHAM_desc_t.
+ *
+ ******************************************************************************
+ *
+ * @param[in] uplo
+ *          Specifies the shape of the matrix A:
+ *          = ChamUpper: A is upper triangular, the lower part is not referenced;
+ *          = ChamLower: A is lower triangular, the upper part is not referenced;
+ *          = ChamUpperLower: A is general.
+ *
+ * @param[in] Af77
+ *          LAPACK matrix.
+ *
+ * @param[in] LDA
+ *          The leading dimension of the matrix Af77.
+ *
+ * @param[in,out] A
+ *          Descriptor of the CHAMELEON matrix initialized with data from Af77.
+ *
+ ******************************************************************************
+ *
+ * @retval CHAMELEON_SUCCESS successful exit
+ *
+ */
+int CHAMELEON_Lap2Desc( cham_uplo_t uplo, void *Af77, int LDA, CHAM_desc_t *A )
 {
     switch( A->dtyp ) {
     case ChamComplexDouble:
-        return CHAMELEON_zLapack_to_Tile( (CHAMELEON_Complex64_t *)Af77, LDA, A );
+        return CHAMELEON_zLap2Desc( uplo, (CHAMELEON_Complex64_t *)Af77, LDA, A );
         break;
     case ChamComplexFloat:
-        return CHAMELEON_cLapack_to_Tile( (CHAMELEON_Complex32_t *)Af77, LDA, A );
+        return CHAMELEON_cLap2Desc( uplo, (CHAMELEON_Complex32_t *)Af77, LDA, A );
         break;
     case ChamRealFloat:
-        return CHAMELEON_sLapack_to_Tile( (float *)Af77, LDA, A );
+        return CHAMELEON_sLap2Desc( uplo, (float *)Af77, LDA, A );
         break;
     case ChamRealDouble:
     default:
-        return CHAMELEON_dLapack_to_Tile( (double *)Af77, LDA, A );
+        return CHAMELEON_dLap2Desc( uplo, (double *)Af77, LDA, A );
     }
     return CHAMELEON_ERR_ILLEGAL_VALUE;
 }
@@ -70,14 +134,20 @@ int CHAMELEON_Lapack_to_Tile(void *Af77, int LDA, CHAM_desc_t *A)
  *
  * @ingroup Tile
  *
- *  CHAMELEON_Tile_to_Lapack - Conversion from tile layout to LAPACK layout.
+ * @brief Conversion from CHAM_desc_t to LAPACK layout.
  *
  ******************************************************************************
  *
- * @param[out] A
+ * @param[in] uplo
+ *          Specifies the shape of the matrix A:
+ *          = ChamUpper: A is upper triangular, the lower part is not referenced;
+ *          = ChamLower: A is lower triangular, the upper part is not referenced;
+ *          = ChamUpperLower: A is general.
+ *
+ * @param[in] A
  *          Descriptor of the CHAMELEON matrix in tile layout.
  *
- * @param[in] Af77
+ * @param[in,out] Af77
  *          LAPACK matrix (only needed on proc 0).
  *
  * @param[in] LDA
@@ -88,21 +158,21 @@ int CHAMELEON_Lapack_to_Tile(void *Af77, int LDA, CHAM_desc_t *A)
  * @retval CHAMELEON_SUCCESS successful exit
  *
  */
-int CHAMELEON_Tile_to_Lapack(CHAM_desc_t *A, void *Af77, int LDA)
+int CHAMELEON_Desc2Lap( cham_uplo_t uplo, CHAM_desc_t *A, void *Af77, int LDA )
 {
     switch( A->dtyp ) {
     case ChamComplexDouble:
-        return CHAMELEON_zTile_to_Lapack( A, (CHAMELEON_Complex64_t *)Af77, LDA );
+        return CHAMELEON_zDesc2Lap( uplo, A, (CHAMELEON_Complex64_t *)Af77, LDA );
         break;
     case ChamComplexFloat:
-        return CHAMELEON_cTile_to_Lapack( A, (CHAMELEON_Complex32_t *)Af77, LDA );
+        return CHAMELEON_cDesc2Lap( uplo, A, (CHAMELEON_Complex32_t *)Af77, LDA );
         break;
     case ChamRealFloat:
-        return CHAMELEON_sTile_to_Lapack( A, (float *)Af77, LDA );
+        return CHAMELEON_sDesc2Lap( uplo, A, (float *)Af77, LDA );
         break;
     case ChamRealDouble:
     default:
-        return CHAMELEON_dTile_to_Lapack( A, (double *)Af77, LDA );
+        return CHAMELEON_dDesc2Lap( uplo, A, (double *)Af77, LDA );
     }
     return CHAMELEON_ERR_ILLEGAL_VALUE;
 }
diff --git a/example/lapack_to_chameleon/step2.c b/example/lapack_to_chameleon/step2.c
index f71c8c1d142751972c5ee740ca74459a73a0532f..1357a6759f937b86cac93fa42a9a793b559076f7 100644
--- a/example/lapack_to_chameleon/step2.c
+++ b/example/lapack_to_chameleon/step2.c
@@ -126,10 +126,10 @@ int main(int argc, char *argv[]) {
 
     /* copy LAPACK matrices in CHAMELEON descriptors to be able to call the tile
      * interface */
-    CHAMELEON_dLapack_to_Tile(A,    N, descA);
-    CHAMELEON_dLapack_to_Tile(B,    N, descB);
-    CHAMELEON_dLapack_to_Tile(X,    N, descX);
-    CHAMELEON_dLapack_to_Tile(Acpy, N, descAC);
+    CHAMELEON_dLap2Desc(UPLO,           A,    N, descA);
+    CHAMELEON_dLap2Desc(ChamUpperLower, B,    N, descB);
+    CHAMELEON_dLap2Desc(ChamUpperLower, X,    N, descX);
+    CHAMELEON_dLap2Desc(UPLO,           Acpy, N, descAC);
 
     /* You could alternatively create descriptors wrapping your allocated
      * matrices to avoid copies Lapack_to_Tile with the following */
@@ -208,11 +208,11 @@ int main(int argc, char *argv[]) {
             res / N / eps / (anorm * xnorm + bnorm ));
     }
 
-    /* get back results in LAPACK format */
-    CHAMELEON_dTile_to_Lapack(descA,  A,    N);
-    CHAMELEON_dTile_to_Lapack(descB,  B,    N);
-    CHAMELEON_dTile_to_Lapack(descX,  X,    N);
-    CHAMELEON_dTile_to_Lapack(descAC, Acpy, N);
+    /* get back results in LAPACK format if needed */
+    CHAMELEON_dDesc2Lap(UPLO,           descA,  A,    N);
+    CHAMELEON_dDesc2Lap(ChamUpperLower, descB,  B,    N);
+    CHAMELEON_dDesc2Lap(ChamUpperLower, descX,  X,    N);
+    CHAMELEON_dDesc2Lap(UPLO,           descAC, Acpy, N);
 
     /* deallocate A, B, X, Acpy and associated descriptors descA, ... */
     CHAMELEON_Desc_Destroy( &descA );
diff --git a/include/chameleon.h b/include/chameleon.h
index a66b980e876c51a9040be6761dc7bf040eace6bf..953bd31cd4216f61ddac97313636d8c4b10be672 100644
--- a/include/chameleon.h
+++ b/include/chameleon.h
@@ -91,14 +91,17 @@ int CHAMELEON_Distributed_start (void);
 int CHAMELEON_Distributed_stop  (void);
 int CHAMELEON_Comm_size         (void);
 int CHAMELEON_Comm_rank         (void);
-int CHAMELEON_Lapack_to_Tile    (void *Af77, int LDA, CHAM_desc_t *A);
-int CHAMELEON_Tile_to_Lapack    (CHAM_desc_t *A, void *Af77, int LDA);
+int CHAMELEON_Lap2Desc          ( cham_uplo_t uplo, void *Af77, int LDA, CHAM_desc_t *A );
+int CHAMELEON_Desc2Lap          ( cham_uplo_t uplo, CHAM_desc_t *A, void *Af77, int LDA );
 int CHAMELEON_Distributed_start (void);
 int CHAMELEON_Distributed_stop  (void);
 int CHAMELEON_Distributed_size  (int *size);
 int CHAMELEON_Distributed_rank  (int *rank);
 int CHAMELEON_GetThreadNbr      (void);
 
+int CHAMELEON_Lapack_to_Tile( void *Af77, int LDA, CHAM_desc_t *A ) __attribute__((deprecated("Please refer to CHAMELEON_Lap2Desc() instead")));
+int CHAMELEON_Tile_to_Lapack( CHAM_desc_t *A, void *Af77, int LDA ) __attribute__((deprecated("Please refer to CHAMELEON_Desc2Lap() instead")));
+
 /* Descriptor */
 int CHAMELEON_Element_Size(int type);
 
diff --git a/include/chameleon/chameleon_z.h b/include/chameleon/chameleon_z.h
index 928a6d3c5c8fca1d1372dbf1610861d2e23588fe..03bae9adf27acdb8787be3b8204fe98e5403b267 100644
--- a/include/chameleon/chameleon_z.h
+++ b/include/chameleon/chameleon_z.h
@@ -321,8 +321,10 @@ int CHAMELEON_Alloc_Workspace_zgetrf_incpiv_Tile(int N, CHAM_desc_t **descL, int
 /**
  *  Auxiliary function prototypes
  */
-int CHAMELEON_zLapack_to_Tile(CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A);
-int CHAMELEON_zTile_to_Lapack(CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int LDA);
+int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A ) __attribute__((deprecated("Please refer to CHAMELEON_zLap2Desc() instead")));
+int CHAMELEON_zTile_to_Lapack( CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int LDA ) __attribute__((deprecated("Please refer to CHAMELEON_zDesc2Lap() instead")));
+int CHAMELEON_zLap2Desc( cham_uplo_t uplo, CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A );
+int CHAMELEON_zDesc2Lap( cham_uplo_t uplo, CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int LDA );
 
 /**
  *  User Builder function prototypes
diff --git a/testing/testing_zcheck.c b/testing/testing_zcheck.c
index 7d1bd45621c62d6766e6fc0f6043a1c257b35953..5a5f9f302e24a3c962aac79989f521f683e5feae 100644
--- a/testing/testing_zcheck.c
+++ b/testing/testing_zcheck.c
@@ -79,8 +79,8 @@ int check_zmatrices( run_arg_list_t *args, cham_uplo_t uplo, CHAM_desc_t *descA,
     }
 
     /* Converts the matrices to LAPACK layout in order to compare them on the main process */
-    CHAMELEON_Tile_to_Lapack( descA, A, LDA );
-    CHAMELEON_Tile_to_Lapack( descB, B, LDA );
+    CHAMELEON_zDesc2Lap( uplo, descA, A, LDA );
+    CHAMELEON_zDesc2Lap( uplo, descB, B, LDA );
 
     if ( rank == 0 ) {
         double *work = (double *)malloc(LDA*N*sizeof(double));
@@ -175,7 +175,7 @@ int check_znorm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_normtype
     }
 
     /* Converts the matrix to LAPACK layout in order to use the LAPACK norm function */
-    CHAMELEON_Tile_to_Lapack( descA, A, LDA );
+    CHAMELEON_zDesc2Lap( uplo, descA, A, LDA );
 
     if ( rank == 0 ) {
         double *work = (double*) malloc(chameleon_max(M, N)*sizeof(double));
@@ -294,6 +294,7 @@ int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans,
     CHAMELEON_Complex64_t *Bref  = NULL;
     CHAMELEON_Complex64_t *Bcham = NULL;
     CHAMELEON_Complex64_t  mzone = -1.0;
+    cham_uplo_t uploA = uplo;
 
     if ( rank == 0 ) {
         A     = malloc(An*LDA*sizeof(CHAMELEON_Complex64_t));
@@ -311,16 +312,16 @@ int check_zsum ( run_arg_list_t *args, cham_uplo_t uplo, cham_trans_t trans,
             Anorm = CHAMELEON_zlantr_Tile( ChamMaxNorm, uplo, ChamNonUnit, descA );
         }
         else {
-            cham_uplo_t uplo_inv = (uplo == ChamUpper) ? ChamLower : ChamUpper;
-            Anorm = CHAMELEON_zlantr_Tile( ChamMaxNorm, uplo_inv, ChamNonUnit, descA );
+            uploA = (uplo == ChamUpper) ? ChamLower : ChamUpper;
+            Anorm = CHAMELEON_zlantr_Tile( ChamMaxNorm, uploA, ChamNonUnit, descA );
         }
         Binitnorm = CHAMELEON_zlantr_Tile( ChamMaxNorm, uplo, ChamNonUnit, descBref );
     }
 
     /* Creates the LAPACK version of the matrices */
-    CHAMELEON_Tile_to_Lapack( descA,     A,     LDA );
-    CHAMELEON_Tile_to_Lapack( descBref,  Bref,  LDB );
-    CHAMELEON_Tile_to_Lapack( descBcham, Bcham, LDB );
+    CHAMELEON_zDesc2Lap( uploA, descA,     A,     LDA );
+    CHAMELEON_zDesc2Lap( uplo,  descBref,  Bref,  LDB );
+    CHAMELEON_zDesc2Lap( uplo,  descBcham, Bcham, LDB );
 
     if ( rank == 0 ) {
         double  eps  = LAPACKE_dlamch_work('e');
@@ -411,7 +412,7 @@ int check_zscale( run_arg_list_t *args, cham_uplo_t uplo, CHAMELEON_Complex64_t
     }
 
     /* Converts the matrix to LAPACK layout in order to scale with BLAS */
-    CHAMELEON_Tile_to_Lapack( descA1, Ainit, M );
+    CHAMELEON_zDesc2Lap( uplo, descA1, Ainit, M );
 
     if ( rank == 0 ) {
         /* Scales using core function */
@@ -420,7 +421,7 @@ int check_zscale( run_arg_list_t *args, cham_uplo_t uplo, CHAMELEON_Complex64_t
 
     /* Converts back into Chameleon to compare with check_zmatrices */
     descBlas = CHAMELEON_Desc_CopyOnZero( descA1, NULL );
-    CHAMELEON_Lapack_to_Tile( Ainit, M, descBlas );
+    CHAMELEON_zLap2Desc( uplo, Ainit, M, descBlas );
 
     /* Compares the two matrices */
     info_solution = check_zmatrices( args, uplo, descA2, descBlas );
@@ -520,10 +521,10 @@ int check_zgemm( run_arg_list_t *args, cham_trans_t transA, cham_trans_t transB,
         C    = (CHAMELEON_Complex64_t *)malloc(N *LDC*sizeof(CHAMELEON_Complex64_t));
     }
 
-    CHAMELEON_Tile_to_Lapack(descA,    A,    LDA);
-    CHAMELEON_Tile_to_Lapack(descB,    B,    LDB);
-    CHAMELEON_Tile_to_Lapack(descCref, Cref, LDC);
-    CHAMELEON_Tile_to_Lapack(descC,    C,    LDC);
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descA,    A,    LDA );
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descB,    B,    LDB );
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descCref, Cref, LDC );
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descC,    C,    LDC );
 
     if ( rank == 0 ) {
         double eps = LAPACKE_dlamch_work('e');
@@ -656,10 +657,10 @@ int check_zsymm( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_side_t s
     }
 
     /* Creates the LAPACK version of the matrices */
-    CHAMELEON_Tile_to_Lapack( descA,    A,    LDA );
-    CHAMELEON_Tile_to_Lapack( descB,    B,    LDB );
-    CHAMELEON_Tile_to_Lapack( descCref, Cref, LDC );
-    CHAMELEON_Tile_to_Lapack( descC,    C,    LDC );
+    CHAMELEON_zDesc2Lap( uplo,           descA,    A,    LDA );
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descB,    B,    LDB );
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descCref, Cref, LDC );
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descC,    C,    LDC );
 
     if ( rank == 0 ) {
         double eps = LAPACKE_dlamch_work('e');
@@ -806,11 +807,11 @@ int check_zsyrk( run_arg_list_t *args, cham_mtxtype_t matrix_type, cham_uplo_t u
     }
 
     /* Creates the LAPACK version of the matrices */
-    CHAMELEON_Tile_to_Lapack( descA,    A,    LDA );
-    CHAMELEON_Tile_to_Lapack( descCref, Cref, LDC );
-    CHAMELEON_Tile_to_Lapack( descC,    C,    LDC );
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descA,    A,    LDA );
+    CHAMELEON_zDesc2Lap( uplo,           descCref, Cref, LDC );
+    CHAMELEON_zDesc2Lap( uplo,           descC,    C,    LDC );
     if ( descB != NULL ) {
-        CHAMELEON_Tile_to_Lapack( descB, B, LDA );
+        CHAMELEON_zDesc2Lap( ChamUpperLower, descB, B, LDA );
     }
 
     if ( rank == 0 ) {
@@ -979,9 +980,9 @@ int check_ztrmm( run_arg_list_t *args, int check_func, cham_side_t side, cham_up
     }
 
     /* Creates the LAPACK version of the matrices */
-    CHAMELEON_Tile_to_Lapack(descA,    A,    LDA);
-    CHAMELEON_Tile_to_Lapack(descB,    B,    LDB);
-    CHAMELEON_Tile_to_Lapack(descBref, Bref, LDB);
+    CHAMELEON_zDesc2Lap( uplo,           descA,    A,    LDA);
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descB,    B,    LDB);
+    CHAMELEON_zDesc2Lap( ChamUpperLower, descBref, Bref, LDB);
 
     if ( rank == 0 ) {
         double eps = LAPACKE_dlamch_work('e');