diff --git a/src/amdis/common/parallel/Collective.hpp b/src/amdis/common/parallel/Collective.hpp
index bd9cd20fcb2f72e4734563ba520a3c8649d3a7bb..83a10be48d03b4365ad9c43f611656b8933b7322 100644
--- a/src/amdis/common/parallel/Collective.hpp
+++ b/src/amdis/common/parallel/Collective.hpp
@@ -70,7 +70,7 @@ namespace AMDiS { namespace Mpi
     int size = 1;
     MPI_Comm_size(comm, &size);
     out.resize(size);
-    MPI_Request request;
+    MPI_Request request = MPI_REQUEST_NULL;
     MPI_Iallgather(to_void_ptr(&in), 1, type_to_mpi<T>(), to_void_ptr(out.data()), 1, type_to_mpi<T>(), comm, &request);
 
     return {request};
@@ -82,7 +82,7 @@ namespace AMDiS { namespace Mpi
     int size = 1;
     MPI_Comm_size(comm, &size);
     out.resize(size * N);
-    MPI_Request request;
+    MPI_Request request = MPI_REQUEST_NULL;
     MPI_Iallgather(to_void_ptr(in.data()), N, type_to_mpi<T>(), to_void_ptr(out.data()), N, type_to_mpi<T>(), comm, &request);
 
     return {request};
diff --git a/src/amdis/common/parallel/Communicator.hpp b/src/amdis/common/parallel/Communicator.hpp
index 67e72c4ba3cccd8520a9fa62b091a423757a44d8..1c343ef7fbc9afc330cbcc296436f9422a585cce 100644
--- a/src/amdis/common/parallel/Communicator.hpp
+++ b/src/amdis/common/parallel/Communicator.hpp
@@ -111,7 +111,7 @@ namespace Mpi
 
     Request isend(std::string const& str, int to, Tag tag = {}) const
     {
-      MPI_Request request;
+      MPI_Request request = MPI_REQUEST_NULL;
       MPI_Isend(to_void_ptr(str.data()), int(str.size()), MPI_CHAR, to, tag.value, comm_, &request);
       return {request};
     }
@@ -199,7 +199,7 @@ namespace Mpi
           MPI_Get_count(&status, MPI_CHAR, &size);
 
           str.resize(size);
-          MPI_Request req;
+          MPI_Request req = MPI_REQUEST_NULL;
           MPI_Irecv(&str[0], size, MPI_CHAR, status.MPI_SOURCE, status.MPI_TAG, comm, &req);
 
           return req;
diff --git a/src/amdis/common/parallel/Communicator.inc.hpp b/src/amdis/common/parallel/Communicator.inc.hpp
index 8d9ae94f6e2f2d6e6b6e53bd2f30577dd902e285..272b83d24c27a67ba62bde7d66ed9bacd7f363a2 100644
--- a/src/amdis/common/parallel/Communicator.inc.hpp
+++ b/src/amdis/common/parallel/Communicator.inc.hpp
@@ -34,7 +34,7 @@ void Communicator::send(std::vector<T> const& vec, int to, Tag tag) const
 template <class Data, REQUIRES_(not Concepts::RawPointer<Data>)>
 Request Communicator::isend(Data const& data, int to, Tag tag) const
 {
-  MPI_Request request;
+  MPI_Request request = MPI_REQUEST_NULL;
   MPI_Isend(to_void_ptr(&data), 1, type_to_mpi<Data>(), to, tag.value, comm_, &request);
   return {request};
 }
@@ -44,7 +44,7 @@ Request Communicator::isend(Data const& data, int to, Tag tag) const
 template <class Data>
 Request Communicator::isend(Data const* data, std::size_t size, int to, Tag tag) const
 {
-  MPI_Request request;
+  MPI_Request request = MPI_REQUEST_NULL;
   MPI_Isend(to_void_ptr(data), size, type_to_mpi<Data>(), to, tag.value, comm_, &request);
   return {request};
 }
@@ -53,7 +53,7 @@ Request Communicator::isend(Data const* data, std::size_t size, int to, Tag tag)
 template <class T>
 Request Communicator::isend(std::vector<T> const& vec, int to, Tag tag) const
 {
-  MPI_Request request;
+  MPI_Request request = MPI_REQUEST_NULL;
   MPI_Isend(to_void_ptr(vec.data()), int(vec.size()), type_to_mpi<T>(), to, tag.value, comm_, &request);
   return {request};
 }
@@ -105,7 +105,7 @@ MPI_Status Communicator::recv(std::vector<T>& vec, int from, Tag tag) const
 template <class Data, REQUIRES_(not Concepts::RawPointer<Data>)>
 Request Communicator::irecv(Data& data, int from, Tag tag) const
 {
-  MPI_Request request;
+  MPI_Request request = MPI_REQUEST_NULL;
   MPI_Irecv(&data, 1, type_to_mpi<Data>(), from, tag.value, comm_, &request);
   return {request};
 }
@@ -115,7 +115,7 @@ Request Communicator::irecv(Data& data, int from, Tag tag) const
 template <class Data>
 Request Communicator::irecv(Data* data, std::size_t size, int from, Tag tag) const
 {
-  MPI_Request request;
+  MPI_Request request = MPI_REQUEST_NULL;
   MPI_Irecv(data, size, type_to_mpi<Data>(), from, tag.value, comm_, &request);
   return {request};
 }
@@ -132,7 +132,7 @@ Request Communicator::irecv(std::vector<T>& vec, int from, Tag tag) const
       int min_size = std::max(size,1);
 
       vec.resize(min_size);
-      MPI_Request req;
+      MPI_Request req = MPI_REQUEST_NULL;
       MPI_Irecv(vec.data(), min_size, type_to_mpi<T>(), status.MPI_SOURCE, status.MPI_TAG, comm, &req);
       return req;
     },
diff --git a/src/amdis/common/parallel/RecvDynamicSize.hpp b/src/amdis/common/parallel/RecvDynamicSize.hpp
index 459c774780fe2590f4f6c863c95a8065c9bbc052..1fc1bb6e03c384406ccca07842912e427bc0b6dd 100644
--- a/src/amdis/common/parallel/RecvDynamicSize.hpp
+++ b/src/amdis/common/parallel/RecvDynamicSize.hpp
@@ -92,16 +92,16 @@ namespace AMDiS { namespace Mpi
 
   private:
 
-    int from_ = 0;      //< source rank
-    int tag_ = 0;       //< communication tag
+    int from_ = 0;  //< source rank
+    int tag_ = 0;   //< communication tag
     MPI_Comm comm_; //< communicator
 
     std::function<MPI_Request(MPI_Status)> recv_; //< user receive-functor
     std::function<void(MPI_Status)> finish_;      //< user finalize-functor
 
-    Progress progress_ = STARTED; //< internal progress flag
-    MPI_Status status_{};         //< the status information, filled by MPI_Iprob and MPI_Test
-    MPI_Request req_{};           //< the request handler, filled by the user receive-functor \ref recv_
+    Progress progress_ = STARTED;         //< internal progress flag
+    MPI_Status status_ = MPI_Status{};    //< the status information, filled by MPI_Iprob and MPI_Test
+    MPI_Request req_ = MPI_REQUEST_NULL;  //< the request handler, filled by the user receive-functor \ref recv_
   };
 
 }} // end namespace AMDiS::Mpi