diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp
index 8f9bedf642f199fce42c5d036605f3e7ab4fb09f..09dc1f5ddef2a7be4f47e26dc295ce066a6f5b9d 100644
--- a/src/utils/Messenger.hpp
+++ b/src/utils/Messenger.hpp
@@ -364,12 +364,8 @@ class Messenger
         CastType& cast_data = reinterpret_cast<CastType&>(data);
         _broadcast_value(cast_data, root_rank);
       } else {
-#ifdef PASTIS_HAS_MPI
-    MPI_Datatype mpi_datatype
-        = Messenger::helper::mpiType<CastType>();
-    MPI_Bcast(reinterpret_cast<CastType*>(&data), sizeof(DataType)/sizeof(CastType),
-              mpi_datatype, root_rank, MPI_COMM_WORLD);
-#endif // PASTIS_HAS_MPI
+        CastArray cast_array = cast_value_to<CastType>::from(data);
+        _broadcast_array(cast_array, root_rank);
       }
     } else {
       static_assert(std::is_trivial_v<DataType>,