diff --git a/example/lapack_to_morse/lapack_to_morse.h b/example/lapack_to_morse/lapack_to_morse.h
index dbcc016f9bb528fce71dca21053c547ae65e782a..4df69f43c2ffc6b4a2acd343bb06c784f6629612 100644
--- a/example/lapack_to_morse/lapack_to_morse.h
+++ b/example/lapack_to_morse/lapack_to_morse.h
@@ -47,9 +47,7 @@
 #include <sys/resource.h>
 #endif
 
-
 /* Common functions for all steps of the tutorial */
-
 static void get_thread_count(int *thrdnbr) {
 #if defined WIN32 || defined WIN64
     sscanf( getenv( "NUMBER_OF_PROCESSORS" ), "%d", thrdnbr );
@@ -65,7 +63,6 @@ static int startswith(const char *s, const char *prefix) {
     return 1;
 }
 
-
 /* define complexity of algorithms - see Lawn 41 page 120 */
 #define FMULS_POTRF(__n) ((double)(__n) * (((1. / 6.) * (double)(__n) + 0.5) * (double)(__n) + (1. / 3.)))
 #define FADDS_POTRF(__n) ((double)(__n) * (((1. / 6.) * (double)(__n)      ) * (double)(__n) - (1. / 6.)))
@@ -73,68 +70,6 @@ static int startswith(const char *s, const char *prefix) {
 #define FADDS_TRSM(__m, __n) (0.5 * (double)(__n) * (double)(__m) * ((double)(__m)-1.))
 
 /* define some tools to time the program */
-#if defined( _WIN32 ) || defined( _WIN64 )
-#include <windows.h>
-#include <time.h>
-#include <sys/timeb.h>
-#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64
-#else
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
-#endif
-
-struct timezone
-{
-    int  tz_minuteswest; /* minutes W of Greenwich */
-    int  tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval* tv, struct timezone* tz)
-{
-    FILETIME         ft;
-    unsigned __int64 tmpres = 0;
-    static int       tzflag;
-
-    if (NULL != tv)
-        {
-            GetSystemTimeAsFileTime(&ft);
-            tmpres |=  ft.dwHighDateTime;
-            tmpres <<= 32;
-            tmpres |=  ft.dwLowDateTime;
-
-            /*converting file time to unix epoch*/
-            tmpres /= 10;  /*convert into microseconds*/
-            tmpres -= DELTA_EPOCH_IN_MICROSECS;
-
-            tv->tv_sec  = (long)(tmpres / 1000000UL);
-            tv->tv_usec = (long)(tmpres % 1000000UL);
-        }
-    if (NULL != tz)
-        {
-            if (!tzflag)
-                {
-                    _tzset();
-                    tzflag++;
-                }
-            tz->tz_minuteswest = _timezone / 60;
-            tz->tz_dsttime     = _daylight;
-        }
-    return 0;
-}
-
-#else  /* Non-Windows */
-#include <sys/time.h>
-#endif
-
-/*
- * struct timeval {time_t tv_sec; suseconds_t tv_usec;};
- */
-double cWtime(void)
-{
-    struct timeval tp;
-    gettimeofday( &tp, NULL );
-    return tp.tv_sec + 1e-6 * tp.tv_usec;
-}
-
+#include <chameleon/chameleon_timer.h>
 
 #endif /* LAPACK_TO_MORSE_H */
diff --git a/example/lapack_to_morse/step0.c b/example/lapack_to_morse/step0.c
index ef52684f1f91efede31bf3e0dc4fdccb8ad9f33e..9ecf80478c14f1a9b6def101d2dccc02911f8884 100644
--- a/example/lapack_to_morse/step0.c
+++ b/example/lapack_to_morse/step0.c
@@ -98,7 +98,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     /* Cholesky factorization:
      * A is replaced by its factorization L or L^T depending on uplo */
@@ -124,7 +124,7 @@ int main(int argc, char *argv[]) {
         CblasNonUnit,
         N, NRHS, 1.0, A, N, X, N);
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/lapack_to_morse/step1.c b/example/lapack_to_morse/step1.c
index 7af0347280792a7226ffe2de9ad2774112123e74..3aa309331c1f45ee8541ce6ccae48d59811e16e0 100644
--- a/example/lapack_to_morse/step1.c
+++ b/example/lapack_to_morse/step1.c
@@ -120,7 +120,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     /* Cholesky factorization:
      * A is replaced by its factorization L or L^T depending on uplo */
@@ -132,7 +132,7 @@ int main(int argc, char *argv[]) {
      */
     MORSE_dpotrs(UPLO, N, NRHS, A, N, X, N);
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/lapack_to_morse/step2.c b/example/lapack_to_morse/step2.c
index 9f211fe4f0176138cdae6c520fb2da2e8563bfa2..f7f8bcf4c9efed2b05ea9e9493a4a44d7850af31 100644
--- a/example/lapack_to_morse/step2.c
+++ b/example/lapack_to_morse/step2.c
@@ -164,7 +164,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     /* Cholesky factorization:
      * A is replaced by its factorization L or L^T depending on uplo */
@@ -176,7 +176,7 @@ int main(int argc, char *argv[]) {
      */
     MORSE_dpotrs_Tile( UPLO, descA, descX );
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/lapack_to_morse/step3.c b/example/lapack_to_morse/step3.c
index f9237f7f5dd6b54b214e9fcb1057c5559cb3d5c7..66964cfe386359d8b8fd98d0b4499c586535a993 100644
--- a/example/lapack_to_morse/step3.c
+++ b/example/lapack_to_morse/step3.c
@@ -147,7 +147,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     /* Cholesky factorization:
      * A is replaced by its factorization L or L^T depending on uplo */
@@ -159,7 +159,7 @@ int main(int argc, char *argv[]) {
      */
     MORSE_dpotrs_Tile( UPLO, descA, descX );
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/lapack_to_morse/step4.c b/example/lapack_to_morse/step4.c
index 269a7caf80809c7f8ceed5d5aff03c13c7ec02de..b4111cdab378e21ea1abcc60f41892a71e14661c 100644
--- a/example/lapack_to_morse/step4.c
+++ b/example/lapack_to_morse/step4.c
@@ -127,7 +127,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     MORSE_Sequence_Create(&sequence);
 
@@ -157,7 +157,7 @@ int main(int argc, char *argv[]) {
     }
     MORSE_Sequence_Destroy(sequence);
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/lapack_to_morse/step5.c b/example/lapack_to_morse/step5.c
index 3177f09fbb8b33c14b40b59e3197e9080e14ea3b..46aa1d29ae495cbfa57a4f6b0890dbdb528db50c 100644
--- a/example/lapack_to_morse/step5.c
+++ b/example/lapack_to_morse/step5.c
@@ -131,7 +131,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     MORSE_Sequence_Create(&sequence);
 
@@ -161,7 +161,7 @@ int main(int argc, char *argv[]) {
     }
     MORSE_Sequence_Destroy(sequence);
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/lapack_to_morse/step6.c b/example/lapack_to_morse/step6.c
index 51261b6c4aac4918d1704e24e395c7cfa5cc3a50..68850db3f7e3af4374aee9e2f9f63b9abf89d8cd 100644
--- a/example/lapack_to_morse/step6.c
+++ b/example/lapack_to_morse/step6.c
@@ -153,7 +153,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     MORSE_Sequence_Create(&sequence);
 
@@ -183,7 +183,7 @@ int main(int argc, char *argv[]) {
     }
     MORSE_Sequence_Destroy(sequence);
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/lapack_to_morse/step7.c b/example/lapack_to_morse/step7.c
index b9c0f9117ac2b3e66f2d0942fe4067c1495d2981..15e00f5875bc32da15788188c8fd6e0e3fa7f115 100644
--- a/example/lapack_to_morse/step7.c
+++ b/example/lapack_to_morse/step7.c
@@ -161,7 +161,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     MORSE_Sequence_Create(&sequence);
 
@@ -191,7 +191,7 @@ int main(int argc, char *argv[]) {
     }
     MORSE_Sequence_Destroy(sequence);
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/link_chameleon/link_chameleon.c b/example/link_chameleon/link_chameleon.c
index 0aeb255eb24a1f138e229b7eefe9e1d0a29e4354..79dcdf460e5b132503ee97e29da7d90f5648643a 100644
--- a/example/link_chameleon/link_chameleon.c
+++ b/example/link_chameleon/link_chameleon.c
@@ -37,69 +37,6 @@ static int startswith(const char *s, const char *prefix) {
 #define FMULS_TRSM(__m, __n) (0.5 * (double)(__n) * (double)(__m) * ((double)(__m)+1.))
 #define FADDS_TRSM(__m, __n) (0.5 * (double)(__n) * (double)(__m) * ((double)(__m)-1.))
 
-/* define some tools to time the program */
-#if defined( _WIN32 ) || defined( _WIN64 )
-#include <windows.h>
-#include <time.h>
-#include <sys/timeb.h>
-#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64
-#else
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
-#endif
-
-struct timezone
-{
-    int  tz_minuteswest; /* minutes W of Greenwich */
-    int  tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval* tv, struct timezone* tz)
-{
-    FILETIME         ft;
-    unsigned __int64 tmpres = 0;
-    static int       tzflag;
-
-    if (NULL != tv)
-        {
-            GetSystemTimeAsFileTime(&ft);
-            tmpres |=  ft.dwHighDateTime;
-            tmpres <<= 32;
-            tmpres |=  ft.dwLowDateTime;
-
-            /*converting file time to unix epoch*/
-            tmpres /= 10;  /*convert into microseconds*/
-            tmpres -= DELTA_EPOCH_IN_MICROSECS;
-
-            tv->tv_sec  = (long)(tmpres / 1000000UL);
-            tv->tv_usec = (long)(tmpres % 1000000UL);
-        }
-    if (NULL != tz)
-        {
-            if (!tzflag)
-                {
-                    _tzset();
-                    tzflag++;
-                }
-            tz->tz_minuteswest = _timezone / 60;
-            tz->tz_dsttime     = _daylight;
-        }
-    return 0;
-}
-
-#else  /* Non-Windows */
-#include <sys/time.h>
-#endif
-
-/*
- * struct timeval {time_t tv_sec; suseconds_t tv_usec;};
- */
-double cWtime(void)
-{
-    struct timeval tp;
-    gettimeofday( &tp, NULL );
-    return tp.tv_sec + 1e-6 * tp.tv_usec;
-}
 #include <coreblas/lapacke.h>
 #include <morse.h>
 
@@ -288,7 +225,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     /* Cholesky facorization:
      * A is replaced by its factorization L or L^T depending on uplo */
@@ -300,7 +237,7 @@ int main(int argc, char *argv[]) {
      */
     MORSE_dpotrs(UPLO, N, NRHS, A, N, X, N);
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/out_of_core/out_of_core.c b/example/out_of_core/out_of_core.c
index 5a8929e75fb7e44f77d1c4b61dcf7e777ead8c0a..55a6c00ce9c2f656869625ef2af69ebf93c31233 100644
--- a/example/out_of_core/out_of_core.c
+++ b/example/out_of_core/out_of_core.c
@@ -132,7 +132,7 @@ int main(int argc, char *argv[]) {
     /* solve the system AX = B using the Cholesky factorization */
     /************************************************************/
 
-    cpu_time = -cWtime();
+    cpu_time = -CHAMELEON_timer();
 
     /* Cholesky factorization:
      * A is replaced by its factorization L or L^T depending on uplo */
@@ -144,7 +144,7 @@ int main(int argc, char *argv[]) {
      */
     MORSE_dpotrs_Tile( UPLO, descA, descX );
 
-    cpu_time += cWtime();
+    cpu_time += CHAMELEON_timer();
 
     /* print informations to user */
     gflops = flops / cpu_time;
diff --git a/example/out_of_core/out_of_core.h b/example/out_of_core/out_of_core.h
index dce72d9bcafde47051fe07fe939ccd4200b9fc26..542cd10f14b36f248ec7673b0f60c8bcb8318387 100644
--- a/example/out_of_core/out_of_core.h
+++ b/example/out_of_core/out_of_core.h
@@ -77,68 +77,7 @@ static int startswith(const char *s, const char *prefix) {
 #define FADDS_TRSM(__m, __n) (0.5 * (double)(__n) * (double)(__m) * ((double)(__m)-1.))
 
 /* define some tools to time the program */
-#if defined( _WIN32 ) || defined( _WIN64 )
-#include <windows.h>
-#include <time.h>
-#include <sys/timeb.h>
-#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64
-#else
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
-#endif
-
-struct timezone
-{
-    int  tz_minuteswest; /* minutes W of Greenwich */
-    int  tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval* tv, struct timezone* tz)
-{
-    FILETIME         ft;
-    unsigned __int64 tmpres = 0;
-    static int       tzflag;
-
-    if (NULL != tv)
-        {
-            GetSystemTimeAsFileTime(&ft);
-            tmpres |=  ft.dwHighDateTime;
-            tmpres <<= 32;
-            tmpres |=  ft.dwLowDateTime;
-
-            /*converting file time to unix epoch*/
-            tmpres /= 10;  /*convert into microseconds*/
-            tmpres -= DELTA_EPOCH_IN_MICROSECS;
-
-            tv->tv_sec  = (long)(tmpres / 1000000UL);
-            tv->tv_usec = (long)(tmpres % 1000000UL);
-        }
-    if (NULL != tz)
-        {
-            if (!tzflag)
-                {
-                    _tzset();
-                    tzflag++;
-                }
-            tz->tz_minuteswest = _timezone / 60;
-            tz->tz_dsttime     = _daylight;
-        }
-    return 0;
-}
-
-#else  /* Non-Windows */
-#include <sys/time.h>
-#endif
-
-/*
- * struct timeval {time_t tv_sec; suseconds_t tv_usec;};
- */
-double cWtime(void)
-{
-    struct timeval tp;
-    gettimeofday( &tp, NULL );
-    return tp.tv_sec + 1e-6 * tp.tv_usec;
-}
+#include <chameleon/chameleon_timer.h>
 
 /* Integer parameters */
 enum iparam_ooc {
diff --git a/include/chameleon/chameleon_timer.h b/include/chameleon/chameleon_timer.h
new file mode 100644
index 0000000000000000000000000000000000000000..8bf2033dd065343cc25f097e2d7bca4573b3fef9
--- /dev/null
+++ b/include/chameleon/chameleon_timer.h
@@ -0,0 +1,84 @@
+/**
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation.  All rights reserved.
+ * @copyright 2012-2017 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ * @file chameleon_timer.h
+ *
+ * Provide a simple timer for examples and runtimes which do not provide their
+ * own timer.
+ *
+ **/
+#ifndef _chameleon_timer_h_
+#define _chameleon_timer_h_
+
+#if defined( _WIN32 ) || defined( _WIN64 )
+#include <windows.h>
+#include <time.h>
+#include <sys/timeb.h>
+#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
+#define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64
+#else
+#define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
+#endif
+
+struct timezone
+{
+    int  tz_minuteswest; /* minutes W of Greenwich */
+    int  tz_dsttime;     /* type of dst correction */
+};
+
+static inline int
+gettimeofday(struct timeval* tv, struct timezone* tz)
+{
+    FILETIME         ft;
+    unsigned __int64 tmpres = 0;
+    static int       tzflag;
+
+    if (NULL != tv)
+        {
+            GetSystemTimeAsFileTime(&ft);
+            tmpres |=  ft.dwHighDateTime;
+            tmpres <<= 32;
+            tmpres |=  ft.dwLowDateTime;
+
+            /*converting file time to unix epoch*/
+            tmpres /= 10;  /*convert into microseconds*/
+            tmpres -= DELTA_EPOCH_IN_MICROSECS;
+
+            tv->tv_sec  = (long)(tmpres / 1000000UL);
+            tv->tv_usec = (long)(tmpres % 1000000UL);
+        }
+    if (NULL != tz)
+        {
+            if (!tzflag)
+                {
+                    _tzset();
+                    tzflag++;
+                }
+            tz->tz_minuteswest = _timezone / 60;
+            tz->tz_dsttime     = _daylight;
+        }
+    return 0;
+}
+
+#else  /* Non-Windows */
+#include <sys/time.h>
+#endif
+
+/**
+ * @brief Return a simple timestamp in s.
+ *
+ * @return The timestamp in s without any barriers.
+ */
+static inline double
+CHAMELEON_timer(void)
+{
+    struct timeval tp;
+    gettimeofday( &tp, NULL );
+    return tp.tv_sec + 1e-6 * tp.tv_usec;
+}
+
+#endif /* _chameleon_timer_h_ */
diff --git a/runtime/parsec/control/runtime_profiling.c b/runtime/parsec/control/runtime_profiling.c
index 765621f2b77d32b1a9e66c6a4a2c79751ae90bba..1e50dac2a1792d9448ad9360f986efc6f6bcd2e4 100644
--- a/runtime/parsec/control/runtime_profiling.c
+++ b/runtime/parsec/control/runtime_profiling.c
@@ -8,74 +8,10 @@
  *
  **/
 #include "chameleon_parsec.h"
-
-#if defined( _WIN32 ) || defined( _WIN64 )
-#include <windows.h>
-#include <time.h>
-#include <sys/timeb.h>
-#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64
-#else
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
-#endif
-
-struct timezone
-{
-    int  tz_minuteswest; /* minutes W of Greenwich */
-    int  tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval* tv, struct timezone* tz)
-{
-    FILETIME         ft;
-    unsigned __int64 tmpres = 0;
-    static int       tzflag;
-
-    if (NULL != tv)
-        {
-            GetSystemTimeAsFileTime(&ft);
-            tmpres |=  ft.dwHighDateTime;
-            tmpres <<= 32;
-            tmpres |=  ft.dwLowDateTime;
-
-            /*converting file time to unix epoch*/
-            tmpres /= 10;  /*convert into microseconds*/
-            tmpres -= DELTA_EPOCH_IN_MICROSECS;
-
-            tv->tv_sec  = (long)(tmpres / 1000000UL);
-            tv->tv_usec = (long)(tmpres % 1000000UL);
-        }
-    if (NULL != tz)
-        {
-            if (!tzflag)
-                {
-                    _tzset();
-                    tzflag++;
-                }
-            tz->tz_minuteswest = _timezone / 60;
-            tz->tz_dsttime     = _daylight;
-        }
-    return 0;
-}
-
-#else  /* Non-Windows */
-#include <sys/time.h>
-#endif
-
-double cWtime(void);
-
-/*
- * struct timeval {time_t tv_sec; suseconds_t tv_usec;};
- */
-double cWtime(void)
-{
-    struct timeval tp;
-    gettimeofday( &tp, NULL );
-    return tp.tv_sec + 1e-6 * tp.tv_usec;
-}
+#include "chameleon_timer.h"
 
 double RUNTIME_get_time(){
-    return cWtime();
+    return CHAMELEON_timer();
 }
 
 void RUNTIME_start_profiling()
diff --git a/runtime/quark/codelets/codelet_ztile_zero.c b/runtime/quark/codelets/codelet_ztile_zero.c
index 2725bf55ba0af0c3d9b25a088e9f763a89163075..93c727591440d443ddf3da7c6f55580662fc2e7c 100644
--- a/runtime/quark/codelets/codelet_ztile_zero.c
+++ b/runtime/quark/codelets/codelet_ztile_zero.c
@@ -47,9 +47,9 @@ void CORE_ztile_zero_quark(Quark *quark)
 
 }
 
-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_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 )
 {
     quark_option_t *opt = (quark_option_t*)(options->schedopt);
     QUARK_Insert_Task(opt->quark, CORE_ztile_zero_quark, (Quark_Task_Flags*)opt,
diff --git a/runtime/quark/control/runtime_profiling.c b/runtime/quark/control/runtime_profiling.c
index 2b17d0eec39001fcf912b03902343ab8eb85ae69..3662a94f4b37fd29d29f70506ba4b0473dac4f21 100644
--- a/runtime/quark/control/runtime_profiling.c
+++ b/runtime/quark/control/runtime_profiling.c
@@ -18,74 +18,10 @@
  *
  **/
 #include "chameleon_quark.h"
-
-#if defined( _WIN32 ) || defined( _WIN64 )
-#include <windows.h>
-#include <time.h>
-#include <sys/timeb.h>
-#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64
-#else
-#define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
-#endif
-
-struct timezone
-{
-    int  tz_minuteswest; /* minutes W of Greenwich */
-    int  tz_dsttime;     /* type of dst correction */
-};
-
-int gettimeofday(struct timeval* tv, struct timezone* tz)
-{
-    FILETIME         ft;
-    unsigned __int64 tmpres = 0;
-    static int       tzflag;
-
-    if (NULL != tv)
-        {
-            GetSystemTimeAsFileTime(&ft);
-            tmpres |=  ft.dwHighDateTime;
-            tmpres <<= 32;
-            tmpres |=  ft.dwLowDateTime;
-
-            /*converting file time to unix epoch*/
-            tmpres /= 10;  /*convert into microseconds*/
-            tmpres -= DELTA_EPOCH_IN_MICROSECS;
-
-            tv->tv_sec  = (long)(tmpres / 1000000UL);
-            tv->tv_usec = (long)(tmpres % 1000000UL);
-        }
-    if (NULL != tz)
-        {
-            if (!tzflag)
-                {
-                    _tzset();
-                    tzflag++;
-                }
-            tz->tz_minuteswest = _timezone / 60;
-            tz->tz_dsttime     = _daylight;
-        }
-    return 0;
-}
-
-#else  /* Non-Windows */
-#include <sys/time.h>
-#endif
-
-double cWtime(void);
-
-/*
- * struct timeval {time_t tv_sec; suseconds_t tv_usec;};
- */
-double cWtime(void)
-{
-    struct timeval tp;
-    gettimeofday( &tp, NULL );
-    return tp.tv_sec + 1e-6 * tp.tv_usec;
-}
+#include "chameleon/chameleon_timer.h"
 
 double RUNTIME_get_time(){
-    return cWtime();
+    return CHAMELEON_timer();
 }
 
 void RUNTIME_start_profiling()