diff --git a/dune/gdt/test/entropic-coords-mn-discretization.hh b/dune/gdt/test/entropic-coords-mn-discretization.hh
index 93f918e8b9041e2e68247650dc036a4b620eba8f..753f612353129217c2f4d1f1f6b8cba2b727fa4f 100644
--- a/dune/gdt/test/entropic-coords-mn-discretization.hh
+++ b/dune/gdt/test/entropic-coords-mn-discretization.hh
@@ -354,8 +354,8 @@ struct HyperbolicEntropicCoordsMnTest
     auto norms = HyperbolicEntropicCoordsMnDiscretization<TestCaseType>::run(
                      1,
                      0,
-                     TestCaseType::RealizabilityLimiterChooserType::quad_order,
-                     TestCaseType::RealizabilityLimiterChooserType::quad_refinements,
+                     TestCaseType::quad_order,
+                     TestCaseType::quad_refinements,
                      "",
                      2,
                      TestCaseType::t_end,
diff --git a/dune/gdt/test/mn-discretization.hh b/dune/gdt/test/mn-discretization.hh
index 4e2bf817acf0d37044f05fccb5c33210cddf755f..4ca09106572e66b906cec32bcd200666c5ab00d9 100644
--- a/dune/gdt/test/mn-discretization.hh
+++ b/dune/gdt/test/mn-discretization.hh
@@ -244,8 +244,8 @@ struct HyperbolicMnTest
     auto norms = HyperbolicMnDiscretization<TestCaseType>::run(
                      1,
                      0,
-                     TestCaseType::RealizabilityLimiterChooserType::quad_order,
-                     TestCaseType::RealizabilityLimiterChooserType::quad_refinements,
+                     TestCaseType::quad_order,
+                     TestCaseType::quad_refinements,
                      "",
                      2,
                      TestCaseType::t_end,
diff --git a/dune/gdt/test/momentmodels/kinetictransport/testcases.hh b/dune/gdt/test/momentmodels/kinetictransport/testcases.hh
index 5fac9aca6fa257bc2362060031378f93d2064e3b..d1f51fadfa775ad9474b71af6c75a766bf39be74 100644
--- a/dune/gdt/test/momentmodels/kinetictransport/testcases.hh
+++ b/dune/gdt/test/momentmodels/kinetictransport/testcases.hh
@@ -29,6 +29,53 @@ namespace Dune {
 namespace GDT {
 
 
+// choose Quadrature suitable for MomentBasisImp
+template <class MomentBasisImp>
+struct QuadratureChooser;
+
+template <size_t order, EntropyType entropy>
+struct QuadratureChooser<LegendreMomentBasis<double, double, order, 1, entropy>>
+{
+  static constexpr size_t quad_order = 54;
+  static constexpr size_t quad_refinements = 1;
+};
+
+template <size_t dimRange, EntropyType entropy>
+struct QuadratureChooser<HatFunctionMomentBasis<double, 1, double, dimRange, 1, 1, entropy>>
+{
+  static constexpr size_t quad_order = 15;
+  static constexpr size_t quad_refinements = 0;
+};
+
+template <size_t dimRange, EntropyType entropy>
+struct QuadratureChooser<PartialMomentBasis<double, 1, double, dimRange, 1, 1, 1, entropy>>
+{
+  static constexpr size_t quad_order = 15;
+  static constexpr size_t quad_refinements = 0;
+};
+
+template <size_t order, EntropyType entropy>
+struct QuadratureChooser<RealSphericalHarmonicsMomentBasis<double, double, order, 3, false, entropy>>
+{
+  static constexpr size_t quad_order = 2 * order + 8;
+  static constexpr size_t quad_refinements = 0;
+};
+
+template <size_t refinements, EntropyType entropy>
+struct QuadratureChooser<HatFunctionMomentBasis<double, 3, double, refinements, 1, 3, entropy>>
+{
+  static constexpr size_t quad_order = refinements == 0 ? 18 /*fekete rule number 7*/ : 9 /*fekete rule number 3*/;
+  static constexpr size_t quad_refinements = 0;
+};
+
+template <size_t refinements, EntropyType entropy>
+struct QuadratureChooser<PartialMomentBasis<double, 3, double, refinements, 1, 3, 1, entropy>>
+{
+  static constexpr size_t quad_order = refinements == 0 ? 18 /*fekete rule number 7*/ : 9 /*fekete rule number 3*/;
+  static constexpr size_t quad_refinements = 0;
+};
+
+
 // choose RealizabilityLimiter suitable for MomentBasisImp
 template <class GV, class MomentBasisImp, class AnalyticalFluxType, class DiscreteFunctionType>
 struct RealizabilityLimiterChooser;
@@ -42,8 +89,6 @@ struct RealizabilityLimiterChooser<GV,
 {
   using MomentBasis = LegendreMomentBasis<double, double, order, 1, entropy>;
   using EntropyFluxType = EntropyBasedFluxFunction<GV, MomentBasis>;
-  static constexpr size_t quad_order = 54;
-  static constexpr size_t quad_refinements = 1;
 
   template <class EigenVectorWrapperType>
   static std::unique_ptr<LpConvexhullRealizabilityLimitedSlope<GV, MomentBasis, EigenVectorWrapperType>>
@@ -66,8 +111,6 @@ struct RealizabilityLimiterChooser<GV,
 {
   using MomentBasis = HatFunctionMomentBasis<double, 1, double, dimRange, 1, 1, entropy>;
   using EntropyFluxType = EntropyBasedFluxFunction<GV, MomentBasis>;
-  static constexpr size_t quad_order = 15;
-  static constexpr size_t quad_refinements = 0;
 
 #if HAVE_CLP && USE_LP_POSITIVITY_LIMITER
   template <class EigenVectorWrapperType>
@@ -96,8 +139,6 @@ struct RealizabilityLimiterChooser<GV,
 {
   using MomentBasis = PartialMomentBasis<double, 1, double, dimRange, 1, 1, 1, entropy>;
   using EntropyFluxType = EntropyBasedFluxFunction<GV, MomentBasis>;
-  static constexpr size_t quad_order = 15;
-  static constexpr size_t quad_refinements = 0;
 
   template <class EigenVectorWrapperType>
   static std::unique_ptr<Dg1dRealizabilityLimitedSlope<GV, double, dimRange, EigenVectorWrapperType, entropy>>
@@ -117,8 +158,6 @@ struct RealizabilityLimiterChooser<GV,
 {
   using MomentBasis = RealSphericalHarmonicsMomentBasis<double, double, order, 3, false, entropy>;
   using EntropyFluxType = EntropyBasedFluxFunction<GV, MomentBasis>;
-  static constexpr size_t quad_order = 2 * order + 8;
-  static constexpr size_t quad_refinements = 0;
 
   template <class EigenVectorWrapperType>
   static std::unique_ptr<LpConvexhullRealizabilityLimitedSlope<GV, MomentBasis, EigenVectorWrapperType>>
@@ -138,9 +177,6 @@ struct RealizabilityLimiterChooser<GV,
 {
   using MomentBasis = HatFunctionMomentBasis<double, 3, double, refinements, 1, 3, entropy>;
   using EntropyFluxType = EntropyBasedFluxFunction<GV, MomentBasis>;
-  static constexpr size_t dimRange = MomentBasis::dimRange;
-  static constexpr size_t quad_order = refinements == 0 ? 18 /*fekete rule number 7*/ : 9 /*fekete rule number 3*/;
-  static constexpr size_t quad_refinements = 0;
 
 #if HAVE_CLP && USE_LP_POSITIVITY_LIMITER
   template <class EigenVectorWrapperType>
@@ -170,8 +206,6 @@ struct RealizabilityLimiterChooser<GV,
 {
   using MomentBasis = PartialMomentBasis<double, 3, double, refinements, 1, 3, 1, entropy>;
   using EntropyFluxType = EntropyBasedFluxFunction<GV, MomentBasis>;
-  static constexpr size_t quad_order = refinements == 0 ? 18 /*fekete rule number 7*/ : 9 /*fekete rule number 3*/;
-  static constexpr size_t quad_refinements = 0;
 
   template <class EigenVectorWrapperType>
   static std::unique_ptr<DgConvexHullRealizabilityLimitedSlope<GV, MomentBasis, EigenVectorWrapperType>>
@@ -334,6 +368,9 @@ struct SourceBeamMnTestCase : public SourceBeamPnTestCase<GridImp, MomentBasisIm
   using typename BaseType::GridViewType;
   using ProblemType = SourceBeamMn<GridViewType, MomentBasisImp>;
   using ExpectedResultsType = SourceBeamMnExpectedResults<MomentBasisImp, reconstruct, kinetic_scheme>;
+  using QuadratureChooserType = QuadratureChooser<MomentBasisImp>;
+  static constexpr size_t quad_order = QuadratureChooserType::quad_order;
+  static constexpr size_t quad_refinements = QuadratureChooserType::quad_refinements;
   using RealizabilityLimiterChooserType =
       RealizabilityLimiterChooser<GridViewType, MomentBasisImp, typename ProblemType::FluxType, DiscreteFunctionType>;
 };
@@ -469,6 +506,9 @@ struct PlaneSourceMnTestCase : SourceBeamMnTestCase<GridImp, MomentBasisImp, rec
   static constexpr RangeFieldType t_end = 0.25;
   static constexpr bool reconstruction = reconstruct;
   using ExpectedResultsType = PlaneSourceMnExpectedResults<MomentBasisImp, reconstruction, kinetic_scheme>;
+  using QuadratureChooserType = QuadratureChooser<MomentBasisImp>;
+  static constexpr size_t quad_order = QuadratureChooserType::quad_order;
+  static constexpr size_t quad_refinements = QuadratureChooserType::quad_refinements;
   using RealizabilityLimiterChooserType =
       RealizabilityLimiterChooser<GridViewType, MomentBasisImp, typename ProblemType::FluxType, DiscreteFunctionType>;
 };
@@ -730,6 +770,9 @@ struct PointSourceMnTestCase : SourceBeamMnTestCase<GridImp, MomentBasisImp, rec
   static constexpr RangeFieldType t_end = 0.1;
   static constexpr bool reconstruction = reconstruct;
   using ExpectedResultsType = PointSourceMnExpectedResults<MomentBasisImp, reconstruction, kinetic_scheme>;
+  using QuadratureChooserType = QuadratureChooser<MomentBasisImp>;
+  static constexpr size_t quad_order = QuadratureChooserType::quad_order;
+  static constexpr size_t quad_refinements = QuadratureChooserType::quad_refinements;
   using RealizabilityLimiterChooserType = RealizabilityLimiterChooser<GridViewType,
                                                                       MomentBasisImp,
                                                                       typename ProblemType::FluxType,
@@ -787,6 +830,9 @@ struct CheckerboardMnTestCase : SourceBeamMnTestCase<GridImp, MomentBasisImp, re
   static constexpr RangeFieldType t_end = 0.1;
   static constexpr bool reconstruction = reconstruct;
   using ExpectedResultsType = CheckerboardMnExpectedResults<MomentBasisImp, reconstruction, kinetic_scheme>;
+  using QuadratureChooserType = QuadratureChooser<MomentBasisImp>;
+  static constexpr size_t quad_order = QuadratureChooserType::quad_order;
+  static constexpr size_t quad_refinements = QuadratureChooserType::quad_refinements;
   using RealizabilityLimiterChooserType = RealizabilityLimiterChooser<GridViewType,
                                                                       MomentBasisImp,
                                                                       typename ProblemType::FluxType,
@@ -818,6 +864,9 @@ struct ShadowMnTestCase : SourceBeamMnTestCase<GridImp, MomentBasisImp, reconstr
   static constexpr RangeFieldType t_end = 0.1;
   static constexpr bool reconstruction = reconstruct;
   using ExpectedResultsType = ShadowMnExpectedResults<MomentBasisImp, reconstruction>;
+  using QuadratureChooserType = QuadratureChooser<MomentBasisImp>;
+  static constexpr size_t quad_order = QuadratureChooserType::quad_order;
+  static constexpr size_t quad_refinements = QuadratureChooserType::quad_refinements;
   using RealizabilityLimiterChooserType = RealizabilityLimiterChooser<GridViewType,
                                                                       MomentBasisImp,
                                                                       typename ProblemType::FluxType,