diff --git a/miniapp/miniapp.cpp b/miniapp/miniapp.cpp
index 354bdbf7605c4338642f65004bd5ff3f17108f3f..9fc09cefe6c0f8003f71e778b493f0864af4f9fa 100644
--- a/miniapp/miniapp.cpp
+++ b/miniapp/miniapp.cpp
@@ -9,18 +9,7 @@
 #include "threading/threading.hpp"
 #include "profiling/profiler.hpp"
 #include "communication/communicator.hpp"
-#include "communication/serial_global_policy.hpp"
-
-#ifdef WITH_MPI
-
-#include "communication/mpi_global_policy.hpp"
-using global_policy = nest::mc::communication::mpi_global_policy;
-
-#else
-
-using global_policy = nest::mc::communication::serial_global_policy;
-
-#endif
+#include "communication/global_policy.hpp"
 
 using namespace nest;
 
@@ -30,28 +19,10 @@ using id_type = uint32_t;
 using numeric_cell = mc::fvm::fvm_cell<real_type, index_type>;
 using cell_group   = mc::cell_group<numeric_cell>;
 
+using global_policy = nest::mc::communication::global_policy;
 using communicator_type =
     mc::communication::communicator<global_policy>;
 
-template <typename Policy>
-struct policy_guard {
-    policy_guard(int argc, char **&argv) {
-        Policy::setup(argc, argv);
-    }
-
-    policy_guard() = delete;
-    policy_guard(policy_guard &&) = delete;
-    policy_guard(const policy_guard &) = delete;
-    policy_guard &operator=(policy_guard &&) = delete;
-    policy_guard &operator=(const policy_guard &) = delete;
-
-    ~policy_guard() {
-        Policy::teardown();
-    }
-};
-
-using global_policy_guard = policy_guard<global_policy>;
-
 struct model {
     communicator_type communicator;
     std::vector<cell_group> cell_groups;
@@ -161,7 +132,7 @@ void all_to_all_model(nest::mc::io::options& opt, model& m);
 // main
 ///////////////////////////////////////
 int main(int argc, char** argv) {
-    global_policy_guard _(argc, argv);
+    nest::mc::communication::global_policy_guard(argc, argv);
 
     setup();
 
diff --git a/src/communication/global_policy.hpp b/src/communication/global_policy.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b771e8ed24d5d022b6a23cc7d77171ca477a7dbf
--- /dev/null
+++ b/src/communication/global_policy.hpp
@@ -0,0 +1,42 @@
+#pragma once
+
+#ifdef WITH_MPI
+    #include "communication/mpi_global_policy.hpp"
+#else
+    #include "communication/serial_global_policy.hpp"
+#endif
+
+namespace nest {
+namespace mc {
+namespace communication {
+
+#ifdef WITH_MPI
+using global_policy = nest::mc::communication::mpi_global_policy;
+#else
+using global_policy = nest::mc::communication::serial_global_policy;
+#endif
+
+template <typename Policy>
+struct policy_guard {
+    using policy_type = Policy;
+
+    policy_guard(int argc, char**& argv) {
+        policy_type::setup(argc, argv);
+    }
+
+    policy_guard() = delete;
+    policy_guard(policy_guard&&) = delete;
+    policy_guard(const policy_guard&) = delete;
+    policy_guard& operator=(policy_guard&&) = delete;
+    policy_guard& operator=(const policy_guard&) = delete;
+
+    ~policy_guard() {
+        Policy::teardown();
+    }
+};
+
+using global_policy_guard = policy_guard<global_policy>;
+
+} // namespace communication
+} // namespace mc
+} // namespace nest