diff --git a/CHANGELOG.md b/CHANGELOG.md
index 77dda52206500848d87ac9e92b4bb41f5d057596..bc06ff626707527df4f77080c30650d8c7472743 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@
 - The `Notifiers` stores now all `Observers` in a `std::list` instead of a `std::set`. This solved
   a bug in parallel computations when multiple observers of the same type are registered by pointer
   but the address was not ordered the same way on all processors.
+- Remove all occurences of `CollectiveCommunication` since it is removed in dune grid
 
 ### Changed
 
diff --git a/amdis/AdaptiveGrid.hpp b/amdis/AdaptiveGrid.hpp
index 04c6b1b480e960c7f05c0ae0e265dcba1259cfdf..4b2f01d640fe3b2f77efd41ebe98ec8e20d66a53 100644
--- a/amdis/AdaptiveGrid.hpp
+++ b/amdis/AdaptiveGrid.hpp
@@ -333,18 +333,11 @@ namespace AMDiS
   template <class HostGrid>
   class AdaptiveGridFamily
   {
-    template <class HG>
-    using CollectiveCommunication_t = typename HG::Traits::CollectiveCommunication;
-
-    template <class HG>
-    using Communication_t = typename HG::Traits::Communication;
-
   public:
     struct Traits : HostGrid::Traits
     {
       using Grid = AdaptiveGrid<HostGrid>;
-      using CollectiveCommunication = Dune::Std::detected_t<CollectiveCommunication_t, HostGrid>;
-      using Communication = Dune::Std::detected_or_t<CollectiveCommunication, Communication_t, HostGrid>;
+      using Communication = typename HostGrid::Traits::Communication;
       using LeafGridView = Dune::GridView< AMDiS::DefaultLeafGridViewTraits<const Grid> >;
       using LevelGridView = Dune::GridView< AMDiS::DefaultLevelGridViewTraits<const Grid> >;
     };
diff --git a/amdis/common/DefaultGridView.hpp b/amdis/common/DefaultGridView.hpp
index 8910b3ef9e13e6a160cd609b1a3c265fadf37d63..c1fdfa12ede604234d0cc8995538fff0c0253ab3 100644
--- a/amdis/common/DefaultGridView.hpp
+++ b/amdis/common/DefaultGridView.hpp
@@ -39,14 +39,8 @@ namespace AMDiS
     /// type of the intersection iterator
     using IntersectionIterator = typename Grid::Traits::LevelIntersectionIterator;
 
-    template <class G>
-    using CollectiveCommunication_t = typename G::Traits::Communication;
-    using CollectiveCommunication = Dune::Std::detected_t<CollectiveCommunication_t, Grid>;
-
     /// type of the collective communication
-    template <class G>
-    using Communication_t = typename G::Traits::Communication;
-    using Communication = Dune::Std::detected_or_t<CollectiveCommunication, Communication_t, Grid>;
+    using Communication = typename Grid::Traits::Communication;
 
     template <int cd>
     struct Codim
@@ -79,7 +73,6 @@ namespace AMDiS
     using IndexSet = typename Traits::IndexSet;
     using Intersection = typename Traits::Intersection;
     using IntersectionIterator = typename Traits::IntersectionIterator;
-    using CollectiveCommunication = typename Traits::CollectiveCommunication;
     using Communication = typename Traits::Communication;
 
     template <int cd>
@@ -200,14 +193,8 @@ namespace AMDiS
     /// type of the intersection iterator
     using IntersectionIterator = typename Grid::Traits::LeafIntersectionIterator;
 
-    template <class G>
-    using CollectiveCommunication_t = typename G::Traits::Communication;
-    using CollectiveCommunication = Dune::Std::detected_t<CollectiveCommunication_t, Grid>;
-
     /// type of the collective communication
-    template <class G>
-    using Communication_t = typename G::Traits::Communication;
-    using Communication = Dune::Std::detected_or_t<CollectiveCommunication, Communication_t, Grid>;
+    using Communication = typename Grid::Traits::Communication;
 
     template <int cd>
     struct Codim
@@ -240,7 +227,6 @@ namespace AMDiS
     using IndexSet = typename Traits::IndexSet;
     using Intersection = typename Traits::Intersection;
     using IntersectionIterator = typename Traits::IntersectionIterator;
-    using CollectiveCommunication = typename Traits::CollectiveCommunication;
     using Communication = typename Traits::Communication;
 
     template <int cd>
diff --git a/amdis/linearalgebra/istl/IndexDistribution.hpp b/amdis/linearalgebra/istl/IndexDistribution.hpp
index a46947101551784288ce76eea4482a608e5da8f9..bb162f2000691e0ddeea0919368477980face14f 100644
--- a/amdis/linearalgebra/istl/IndexDistribution.hpp
+++ b/amdis/linearalgebra/istl/IndexDistribution.hpp
@@ -130,7 +130,7 @@ namespace AMDiS
 
   template <class B>
   using ISTLIndexDistribution_t
-    = typename ISTLIndexDistributionType<GlobalIdType_t<B>, typename B::size_type, typename B::GridView::CollectiveCommunication>::type;
+    = typename ISTLIndexDistributionType<GlobalIdType_t<B>, typename B::size_type, typename B::GridView::Communication>::type;
 
 } // end namespace AMDiS
 
diff --git a/amdis/linearalgebra/petsc/IndexDistribution.hpp b/amdis/linearalgebra/petsc/IndexDistribution.hpp
index 388eec28f070165f355c5b713edb0e087647538a..3afcc4c3e951ee979ce94a5f6788fcadb0e44262 100644
--- a/amdis/linearalgebra/petsc/IndexDistribution.hpp
+++ b/amdis/linearalgebra/petsc/IndexDistribution.hpp
@@ -364,7 +364,7 @@ namespace AMDiS
 
   template <class B>
   using PetscIndexDistribution_t
-    = typename PetscIndexDistributionType<GlobalIdType_t<B>, typename B::size_type, typename B::GridView::CollectiveCommunication>::type;
+    = typename PetscIndexDistributionType<GlobalIdType_t<B>, typename B::size_type, typename B::GridView::Communication>::type;
 
 } // end namespace AMDiS