diff --git a/coreblas/compute/CMakeLists.txt b/coreblas/compute/CMakeLists.txt
index bd4ad9f215c9f38927f1f6ef25ba0a272ffc14cd..137adfbba9179c7f5dc49ca0d0ad8f4bc1ac1dbe 100644
--- a/coreblas/compute/CMakeLists.txt
+++ b/coreblas/compute/CMakeLists.txt
@@ -164,9 +164,6 @@ endif()
 target_link_libraries(coreblas PRIVATE MORSE::LAPACKE)
 target_link_libraries(coreblas PRIVATE MORSE::CBLAS)
 target_link_libraries(coreblas PUBLIC MORSE::M)
-if (CHAMELEON_USE_MPI)
-  target_link_libraries(coreblas PUBLIC MPI::MPI_C)
-endif()
 
 # export target coreblas
 install(EXPORT coreblasTargets
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index d65ef6a754fd127c67c202ac88dae49134684bf9..3196000d390c7c82cbe07ff9c3f02a24f65e4b67 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -54,6 +54,7 @@ set(CHAMELEON_HDRS
   chameleon/runtime_struct.h
   chameleon/simulate.h
   chameleon/struct.h
+  chameleon/struct_context.h
   chameleon/tasks.h
   chameleon/timer.h
   chameleon/types.h
diff --git a/include/chameleon.h b/include/chameleon.h
index 649103772b4a3efd28344daac1764ac15b928028..6db91f76e36c2da9bec928d98e7b0ed60159b399 100644
--- a/include/chameleon.h
+++ b/include/chameleon.h
@@ -33,6 +33,7 @@
 #include "chameleon/constants.h"
 #include "chameleon/types.h"
 #include "chameleon/struct.h"
+#include "chameleon/struct_context.h"
 #include "chameleon/descriptor_helpers.h"
 
 #if defined(CHAMELEON_USE_MPI)
diff --git a/include/chameleon/runtime_struct.h b/include/chameleon/runtime_struct.h
index e0282d6ae2cd5f51885db2ba684c5b8fcf887c8c..362af6e865f2552c618fd0c21192eb5c3e6cbe89 100644
--- a/include/chameleon/runtime_struct.h
+++ b/include/chameleon/runtime_struct.h
@@ -23,6 +23,13 @@
 #ifndef _chameleon_runtime_struct_h_
 #define _chameleon_runtime_struct_h_
 
+#include "chameleon/types.h"
+
+BEGIN_C_DECLS
+
+/**
+ * Datatype for distributed version
+ */
 #if defined(CHAMELEON_USE_MPI)
 #include <mpi.h>
 #else
@@ -34,8 +41,6 @@ typedef uintptr_t MPI_Comm;
 #endif
 #endif
 
-BEGIN_C_DECLS
-
 /**
  * @brief Ids of the runtime supported by the RUNTIME API
  */
diff --git a/include/chameleon/struct.h b/include/chameleon/struct.h
index 539049e3cf1914590283d7598a781e8a3558eada..053cddd61d7b2d95a448ffabea429047a9aa50fb 100644
--- a/include/chameleon/struct.h
+++ b/include/chameleon/struct.h
@@ -28,18 +28,6 @@
 #include "chameleon/config.h"
 #include "chameleon/types.h"
 #include "chameleon/constants.h"
-#include "chameleon/runtime_struct.h"
-
-#if defined(CHAMELEON_USE_MPI)
-#include <mpi.h>
-#else
-#ifndef MPI_Comm
-typedef uintptr_t MPI_Comm;
-#endif
-#ifndef MPI_COMM_WORLD
-#define MPI_COMM_WORLD 0
-#endif
-#endif
 
 BEGIN_C_DECLS
 
@@ -174,37 +162,6 @@ typedef struct chameleon_piv_s {
     int     n;              /**> The number of column considered (must be updated for each panel) */
 } CHAM_ipiv_t;
 
-/**
- *  CHAMELEON request uniquely identifies each asynchronous function call.
- */
-typedef struct chameleon_context_s {
-    RUNTIME_id_t       scheduler;
-    int                nworkers;
-    int                ncudas;
-    int                nthreads_per_worker;
-
-    /* Boolean flags */
-    cham_bool_t        warnings_enabled;
-    cham_bool_t        autotuning_enabled;
-    cham_bool_t        parallel_enabled;
-    cham_bool_t        statistics_enabled;
-    cham_bool_t        progress_enabled;
-    cham_bool_t        generic_enabled;
-    cham_bool_t        autominmax_enabled;
-    cham_bool_t        runtime_paused;
-
-    cham_householder_t householder;        // "domino" (flat) or tree-based (reduction) Householder
-    cham_translation_t translation;        // In place or Out of place layout conversion
-
-    int                nb;
-    int                ib;
-    int                rhblock;            // block size for tree-based (reduction) Householder
-    int                lookahead;          // depth of the look ahead in algorithms
-    void              *schedopt;           // structure for runtimes
-    int                mpi_outer_init;     // MPI has been initialized outside our functions
-    MPI_Comm           comm;               // MPI communicator
-} CHAM_context_t;
-
 static inline void *
 CHAM_tile_get_ptr( const CHAM_tile_t *tile )
 {
diff --git a/include/chameleon/struct_context.h b/include/chameleon/struct_context.h
new file mode 100644
index 0000000000000000000000000000000000000000..8c655d921a7e893c57d00d79f631188b05140821
--- /dev/null
+++ b/include/chameleon/struct_context.h
@@ -0,0 +1,62 @@
+/**
+ *
+ * @file struct_context.h
+ *
+ * @copyright 2009-2014 The University of Tennessee and The University of
+ *                      Tennessee Research Foundation. All rights reserved.
+ * @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon context structure
+ *
+ * @version 1.3.0
+ * @author Mathieu Faverge
+ * @author Florent Pruvost
+ * @date 2024-02-12
+ *
+ */
+#ifndef _struct_context_h_
+#define _struct_context_h_
+
+#include "chameleon/types.h"
+#include "chameleon/constants.h"
+#include "chameleon/runtime_struct.h"
+
+BEGIN_C_DECLS
+
+/**
+ *  @brief Chameleon context structure
+ */
+typedef struct chameleon_context_s {
+    RUNTIME_id_t       scheduler;
+    int                nworkers;
+    int                ncudas;
+    int                nthreads_per_worker;
+
+    /* Boolean flags */
+    cham_bool_t        warnings_enabled;
+    cham_bool_t        autotuning_enabled;
+    cham_bool_t        parallel_enabled;
+    cham_bool_t        statistics_enabled;
+    cham_bool_t        progress_enabled;
+    cham_bool_t        generic_enabled;
+    cham_bool_t        autominmax_enabled;
+    cham_bool_t        runtime_paused;
+
+    cham_householder_t householder;        /**> "domino" (flat) or tree-based (reduction) Householder */
+    cham_translation_t translation;        /**> In place or Out of place layout conversion            */
+
+    int                nb;
+    int                ib;
+    int                rhblock;            /**> block size for tree-based (reduction) Householder     */
+    int                lookahead;          /**> depth of the look ahead in algorithms                 */
+    void              *schedopt;           /**> structure for runtimes                                */
+    int                mpi_outer_init;     /**> MPI has been initialized outside our functions        */
+    MPI_Comm           comm;               /**> MPI communicator                                      */
+} CHAM_context_t;
+
+END_C_DECLS
+
+#endif /* _struct_context_h_ */