diff --git a/.gitlab/build.yml b/.gitlab/build.yml
index d311506836a79e08faaa1a9d1108ceb9bab56fc4..163ce725880d5b133b1cfc967c4d4771de95babd 100644
--- a/.gitlab/build.yml
+++ b/.gitlab/build.yml
@@ -61,10 +61,9 @@ build_starpu_simgrid:
     VERSION: starpu_simgrid
 
 build_starpu_macosx:
+  extends: .only-master
   stage: build
   tags: ['macosx']
-  except:
-    - schedules
   artifacts:
     untracked: true
     name: build_starpu_macosx
diff --git a/.gitlab/common.yml b/.gitlab/common.yml
index 8d322c93c41f82e9708fbbb5c44541fc457343b9..91d5ee17218b2aaa4c343d8d169ad778ee6901b5 100644
--- a/.gitlab/common.yml
+++ b/.gitlab/common.yml
@@ -3,21 +3,26 @@
 #
 ---
 .only-master:
+  image: registry.gitlab.inria.fr/solverstack/docker/distrib
+  interruptible: true
   only:
     - master@solverstack/chameleon
     - /^ci-.*$/
+  except:
+    - schedules
 
 .only-branches:
+  image: registry.gitlab.inria.fr/solverstack/docker/distrib
+  interruptible: true
   only:
-    - branches
+    - merge_requests
     - master@solverstack/chameleon
     - /^ci-.*$/
   except:
-    - master
     - schedules
 
 .build_script_template:
-  image: registry.gitlab.inria.fr/solverstack/docker/distrib
+  extends: .only-branches
   stage: build
   tags: ["linux"]
   script:
@@ -41,7 +46,6 @@
     - schedules
 
 .test_script_template:
-  image: registry.gitlab.inria.fr/solverstack/docker/distrib
   stage: test
   tags: ["linux"]
   script:
@@ -62,8 +66,6 @@
     - lcov --directory build-$VERSION --capture --output-file ./${LOGNAME}.lcov
     - (cd build-$VERSION && lcov --directory . --capture --output-file ../bis_${LOGNAME}.lcov)
     - xsltproc -o report.xml /home/gitlab/ctest-to-junit.xsl build-$VERSION/Testing/**/Test.xml
-  except:
-    - schedules
 
 .bench_plafrim_common:
   only:
diff --git a/.gitlab/coverage.yml b/.gitlab/coverage.yml
index 6e8b7e2af9b5a02d43851a726e297c3df44f05fc..7cc9601d62b955d0089d950e5adbbcccdf71c5e8 100644
--- a/.gitlab/coverage.yml
+++ b/.gitlab/coverage.yml
@@ -17,7 +17,5 @@ coverage:
     - for name in $( ls -1 bis_chameleon_*.lcov | grep -v simgrid); do export INPUT_FILES="$INPUT_FILES -a $name"; done
     - lcov $INPUT_FILES -o bis_chameleon.lcov
     - lcov --summary bis_chameleon.lcov
-  except:
-    - master
-    - /^ci-.*$/
-    - schedules
+  only:
+    - merge_requests
diff --git a/.gitlab/coverity.yml b/.gitlab/coverity.yml
index b5c666c67ea5c412c5284be8bb99e96ed51a45c5..f9f7b72561183bbed29f882becef6cd61125d5a9 100644
--- a/.gitlab/coverity.yml
+++ b/.gitlab/coverity.yml
@@ -1,6 +1,6 @@
 ---
 coverity:
-  image: registry.gitlab.inria.fr/solverstack/docker/distrib
+  extends: .only-master
   stage: analyse
   tags: ["linux"]
   dependencies: []
@@ -23,7 +23,3 @@ coverity:
            --form version="`git rev-parse --short HEAD`"
            --form description=""
            https://scan.coverity.com/builds?project=Chameleon
-  only:
-    - master@solverstack/chameleon
-  except:
-    - schedules
diff --git a/.gitlab/test_starpu.yml b/.gitlab/test_starpu.yml
index ab04956a9c3e4fc01de99846f2fb2b1758e37164..492c5fad1395c5b35b21e3e58725e750748d423e 100644
--- a/.gitlab/test_starpu.yml
+++ b/.gitlab/test_starpu.yml
@@ -90,10 +90,9 @@ test_starpu_mpi_z:
     TESTS_RESTRICTION: "-R \"_${CATEGORY}_${PRECISION}\""
 
 test_starpu_shm_s_macosx:
+  extends: .only-master
   stage: test
   tags: ['macosx']
-  except:
-    - schedules
   needs: [build_starpu_macosx]
   dependencies:
     - build_starpu_macosx
diff --git a/control/control.c b/control/control.c
index e875a90030923c08c1bf6cc3da495aff4e661b3b..5fc134b38e3a54270b68677fc3f0db9ffbde0e4b 100644
--- a/control/control.c
+++ b/control/control.c
@@ -113,9 +113,7 @@ int __chameleon_initpar(int ncpus, int ncudas, int nthreads_per_worker)
     }
 #endif
 
-    RUNTIME_init( chamctxt, ncpus, ncudas, nthreads_per_worker );
-
-    return CHAMELEON_SUCCESS;
+    return RUNTIME_init( chamctxt, ncpus, ncudas, nthreads_per_worker );
 }
 
 /**
diff --git a/include/chameleon/runtime.h b/include/chameleon/runtime.h
index 622f3ce758f9dd719aff8b4b7f100aa23584db91..f3e26f4f755f90bd564d3ac434a1a9cee30fc2dd 100644
--- a/include/chameleon/runtime.h
+++ b/include/chameleon/runtime.h
@@ -113,8 +113,8 @@ RUNTIME_disable( void *runtime_ctxt, int option );
  *            defines a better binding of the workers.
  *            -1 to disable, or > 0 to enable.
  *
- * @retval -1 on failure to initialize the runtime.
- * @retval >0 on success to initialize the runtime.
+ * @retval CHAMELEON_SUCCESS on success to initialize the runtime.
+ * @retval CHAMELEON_ERR_NOT_INITIALIZED on failure to initialize the runtime.
  *
  */
 int
diff --git a/runtime/openmp/control/runtime_control.c b/runtime/openmp/control/runtime_control.c
index 54f5f2e367a7041f635ade3e6e84b3ffd5bf4ec6..dd44911534f28b355d386777422a842010441b35 100644
--- a/runtime/openmp/control/runtime_control.c
+++ b/runtime/openmp/control/runtime_control.c
@@ -31,7 +31,6 @@ int RUNTIME_init( CHAM_context_t *chamctxt,
                   int ncudas,
                   int nthreads_per_worker )
 {
-    int hres = 0;
     if ( ncudas > 0 ) {
         chameleon_warning( "RUNTIME_init_scheduler(OpenMP)", "GPUs are not supported for now");
     }
@@ -43,7 +42,7 @@ int RUNTIME_init( CHAM_context_t *chamctxt,
     chamctxt->nworkers = ncpus;
     chamctxt->nthreads_per_worker = nthreads_per_worker;
 
-    return hres;
+    return CHAMELEON_SUCCESS;
 }
 
 /**
diff --git a/runtime/parsec/control/runtime_control.c b/runtime/parsec/control/runtime_control.c
index e1e38570fdfaa8fe760b8c3806cf803563c0b07d..e673bdcef7b979590b94348d8f89bb46e502cd17 100644
--- a/runtime/parsec/control/runtime_control.c
+++ b/runtime/parsec/control/runtime_control.c
@@ -34,7 +34,8 @@ int RUNTIME_init( CHAM_context_t *chamctxt,
                   int ncudas,
                   int nthreads_per_worker )
 {
-    int hres = -1, default_ncores = -1;
+    int hres = CHAMELEON_ERR_NOT_INITIALIZED;
+    int default_ncores = -1;
     int *argc = (int *)malloc(sizeof(int));
     *argc = 0;
 
@@ -45,10 +46,10 @@ int RUNTIME_init( CHAM_context_t *chamctxt,
     chamctxt->parallel_enabled = CHAMELEON_TRUE;
     chamctxt->schedopt = (void *)parsec_init(default_ncores, argc, NULL);
 
-    if(NULL != chamctxt->schedopt) {
+    if ( NULL != chamctxt->schedopt ) {
         chamctxt->nworkers = ncpus;
         chamctxt->nthreads_per_worker = nthreads_per_worker;
-        hres = 0;
+        hres = CHAMELEON_SUCCESS;
     }
 
     free(argc);
diff --git a/runtime/quark/control/runtime_control.c b/runtime/quark/control/runtime_control.c
index f6475dc03ccecd6ccfefffaf671ee50fae35c2c9..21ba5cc4e2ca3c738813396b07850890e2d70d46 100644
--- a/runtime/quark/control/runtime_control.c
+++ b/runtime/quark/control/runtime_control.c
@@ -32,7 +32,7 @@ int RUNTIME_init( CHAM_context_t *chamctxt,
                   int ncudas,
                   int nthreads_per_worker )
 {
-    int hres = -1;
+    int hres = CHAMELEON_ERR_NOT_INITIALIZED;
     if ( ncudas > 0 ) {
         chameleon_warning( "RUNTIME_init_scheduler(quark)", "GPUs are not supported for now");
     }
@@ -46,7 +46,7 @@ int RUNTIME_init( CHAM_context_t *chamctxt,
     if(NULL != chamctxt->schedopt) {
         chamctxt->nworkers = ncpus;
         chamctxt->nthreads_per_worker = nthreads_per_worker;
-        hres = 0;
+        hres = CHAMELEON_SUCCESS;
     }
 
     return hres;
diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c
index ccf375fdf200f9f322054202bd32225e6afa7f3a..39d242c01e4d6bf4f41eeb58a22f1b1e94612393 100644
--- a/runtime/starpu/codelets/codelet_zgemm.c
+++ b/runtime/starpu/codelets/codelet_zgemm.c
@@ -137,7 +137,7 @@ void INSERT_TASK_zgemm( const RUNTIME_option_t *options,
     CHAMELEON_ACCESS_RW(C, Cm, Cn);
     CHAMELEON_END_ACCESS_DECLARATION;
 
-    /* Callback fro profiling information */
+    /* Callback for profiling information */
     callback = options->profiling ? cl_zgemm_callback : NULL;
 
     /* Fix the worker id */
diff --git a/runtime/starpu/control/runtime_control.c b/runtime/starpu/control/runtime_control.c
index 5f6ff018ecaf0b63d8776438f73ad10d0145e309..4cce0886869ad16597741401c095bbdba27f36fa 100644
--- a/runtime/starpu/control/runtime_control.c
+++ b/runtime/starpu/control/runtime_control.c
@@ -33,7 +33,8 @@
  */
 static int chameleon_starpu_init( starpu_conf_t *conf )
 {
-    int hres;
+    int hres = CHAMELEON_SUCCESS;
+    int rc;
 
 #if defined(STARPU_USE_FXT)
     starpu_fxt_autostart_profiling(0);
@@ -48,21 +49,23 @@ static int chameleon_starpu_init( starpu_conf_t *conf )
 #  endif
 
 #  if defined(HAVE_STARPU_MPI_INIT_CONF)
-        hres = starpu_mpi_init_conf(NULL, NULL, !flag, MPI_COMM_WORLD, conf);
+        rc = starpu_mpi_init_conf(NULL, NULL, !flag, MPI_COMM_WORLD, conf);
 #  else
-        hres = starpu_init(conf);
-        if (hres < 0) {
-            return hres;
+        rc = starpu_init(conf);
+        if (rc < 0) {
+            return CHAMELEON_ERR_NOT_INITIALIZED;
         }
         starpu_mpi_init(NULL, NULL, !flag);
 #  endif
     }
 #else
 
-    hres = starpu_init(conf);
+    rc = starpu_init(conf);
 
 #endif
-
+    if ( rc == -ENODEV ) {
+        hres = CHAMELEON_ERR_NOT_INITIALIZED;
+    }
     return hres;
 }
 
@@ -72,7 +75,8 @@ int RUNTIME_init( CHAM_context_t *chamctxt,
                   int nthreads_per_worker )
 {
     starpu_conf_t *conf = (starpu_conf_t*)(chamctxt->schedopt);
-    int hres = -1;
+    int hres = CHAMELEON_ERR_NOT_INITIALIZED;
+    int rc = 0;
 
     /* StarPU was already initialized by an external library */
     if (conf == NULL) {
diff --git a/testing/chameleon_ztesting.c b/testing/chameleon_ztesting.c
index 6aa508d5ac73892d9c51a15336b01238af2e70a3..ca48506224bd04bb66cc7b5839e5a72566f25fcf 100644
--- a/testing/chameleon_ztesting.c
+++ b/testing/chameleon_ztesting.c
@@ -523,7 +523,12 @@ int main (int argc, char **argv) {
     profile   = parameters_getvalue_int( "profile" );
     forcegpu  = parameters_getvalue_int( "forcegpu" );
 
-    CHAMELEON_Init( ncores, ngpus );
+    rc = CHAMELEON_Init( ncores, ngpus );
+
+    if ( rc != CHAMELEON_SUCCESS ) {
+        fprintf( stderr, "CHAMELEON_Init failed and returned %d.\n", rc );
+        return EXIT_FAILURE;
+    }
 
     /* Set ncores to the right value */
     if ( ncores == -1 ) {