diff --git a/src/mesh/MeshFlatNodeBoundary.cpp b/src/mesh/MeshFlatNodeBoundary.cpp
index 08e0c800dc8347324c432df3ad15e6c9c6bdd80c..059d6b004e1f3eaff9c9940dec3f2af7b8fbf57c 100644
--- a/src/mesh/MeshFlatNodeBoundary.cpp
+++ b/src/mesh/MeshFlatNodeBoundary.cpp
@@ -1,5 +1,9 @@
 #include <mesh/MeshFlatNodeBoundary.hpp>
 
+#include <mesh/Connectivity.hpp>
+#include <mesh/Mesh.hpp>
+#include <utils/Messenger.hpp>
+
 template <size_t Dimension>
 void
 MeshFlatNodeBoundary<Dimension>::_checkBoundaryIsFlat(const TinyVector<Dimension, double>& normal,
diff --git a/src/mesh/MeshLineNodeBoundary.cpp b/src/mesh/MeshLineNodeBoundary.cpp
index 391a7aecaecd61ff55a776371bdf6bbeabb1fd50..cae862f33dd9a60d5b0e895aba4907cf5a5b102a 100644
--- a/src/mesh/MeshLineNodeBoundary.cpp
+++ b/src/mesh/MeshLineNodeBoundary.cpp
@@ -1,5 +1,9 @@
 #include <mesh/MeshLineNodeBoundary.hpp>
 
+#include <mesh/Connectivity.hpp>
+#include <mesh/Mesh.hpp>
+#include <utils/Messenger.hpp>
+
 template <size_t Dimension>
 void
 MeshLineNodeBoundary<Dimension>::_checkBoundaryIsLine(const TinyVector<Dimension, double>& direction,
diff --git a/src/mesh/MeshNodeBoundary.cpp b/src/mesh/MeshNodeBoundary.cpp
index 94fed7f5ccbd71dc7e45fd6b73bc94f927c45e44..6a54afb554c1d1454bd01934d2dd08f4c023d62f 100644
--- a/src/mesh/MeshNodeBoundary.cpp
+++ b/src/mesh/MeshNodeBoundary.cpp
@@ -1,5 +1,10 @@
 #include <mesh/MeshNodeBoundary.hpp>
 
+#include <Kokkos_Vector.hpp>
+#include <mesh/Connectivity.hpp>
+#include <mesh/Mesh.hpp>
+#include <utils/Messenger.hpp>
+
 template <>
 std::array<TinyVector<2>, 2>
 MeshNodeBoundary<2>::_getBounds(const Mesh<Connectivity<2>>& mesh) const
diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp
index 927e00d91b00205f35b616096370fe5e253610b3..883a9d975682b55e0cad75c191e7f2be14e59190 100644
--- a/src/mesh/MeshNodeBoundary.hpp
+++ b/src/mesh/MeshNodeBoundary.hpp
@@ -1,16 +1,17 @@
 #ifndef MESH_NODE_BOUNDARY_HPP
 #define MESH_NODE_BOUNDARY_HPP
 
-#include <Kokkos_Vector.hpp>
 #include <algebra/TinyVector.hpp>
-#include <mesh/Connectivity.hpp>
 #include <mesh/IBoundaryDescriptor.hpp>
 #include <mesh/ItemValue.hpp>
-#include <mesh/Mesh.hpp>
 #include <mesh/RefItemList.hpp>
 #include <utils/Array.hpp>
-#include <utils/Exceptions.hpp>
-#include <utils/Messenger.hpp>
+
+template <size_t Dimension>
+class Connectivity;
+
+template <typename ConnectivityType>
+class Mesh;
 
 template <size_t Dimension>
 class MeshNodeBoundary   // clazy:exclude=copyable-polymorphic