diff --git a/examples/advection/var-velocity.py b/examples/advection/var-velocity.py
index 625b559b3807802127caece829ba4a5a27744f02..d01f4fd8066c5a3a65495aad19683df59fb3a38f 100644
--- a/examples/advection/var-velocity.py
+++ b/examples/advection/var-velocity.py
@@ -65,9 +65,12 @@ def main(write_output=True, order=4):
         return 0
 
     from grudge.models.advection import VariableCoefficientAdvectionOperator
+    from meshmode.discretization.poly_element import QuadratureSimplexGroupFactory
 
-    discr = DGDiscretizationWithBoundaries(cl_ctx, mesh,
-            order=order, quad_min_degrees={"product": 4*order})
+    discr = DGDiscretizationWithBoundaries(cl_ctx, mesh, order=order,
+            quad_group_factory={
+                "product": QuadratureSimplexGroupFactory(order=4*order)
+                })
 
     op = VariableCoefficientAdvectionOperator(2, advec_v,
         u_analytic(sym.nodes(dim, sym.BTAG_ALL)), quad_tag="product",
diff --git a/grudge/discretization.py b/grudge/discretization.py
index 6f5cae13fd8a2463a9b91efdbf425d83b98753dd..ccd9a5d1f1d53414a92c417256ee23d9c92e5a19 100644
--- a/grudge/discretization.py
+++ b/grudge/discretization.py
@@ -47,17 +47,17 @@ class DGDiscretizationWithBoundaries(DiscretizationBase):
     .. automethod :: zeros
     """
 
-    def __init__(self, cl_ctx, mesh, order, quad_min_degrees=None):
+    def __init__(self, cl_ctx, mesh, order, quad_group_factory=None):
         """
         :param quad_min_degrees: A mapping from quadrature tags to the degrees
             to which the desired quadrature is supposed to be exact.
         """
 
-        if quad_min_degrees is None:
-            quad_min_degrees = {}
+        if quad_group_factory is None:
+            quad_group_factory = {}
 
         self.order = order
-        self.quad_min_degrees = quad_min_degrees
+        self.quad_group_factory = quad_group_factory
 
         from meshmode.discretization import Discretization
 
@@ -203,12 +203,10 @@ class DGDiscretizationWithBoundaries(DiscretizationBase):
             quadrature_tag = sym.QTAG_NONE
 
         from meshmode.discretization.poly_element import \
-                PolynomialWarpAndBlendGroupFactory, \
-                QuadratureSimplexGroupFactory
+                PolynomialWarpAndBlendGroupFactory
 
         if quadrature_tag is not sym.QTAG_NONE:
-            return QuadratureSimplexGroupFactory(
-                    order=self.quad_min_degrees[quadrature_tag])
+            return self.quad_group_factory[quadrature_tag]
         else:
             return PolynomialWarpAndBlendGroupFactory(order=self.order)
 
diff --git a/test/test_grudge.py b/test/test_grudge.py
index 66c786b39665fdc85af58850e5e2e417d4f84108..79a88df336644c8e456ee9e07862252a88fb7322 100644
--- a/test/test_grudge.py
+++ b/test/test_grudge.py
@@ -409,6 +409,7 @@ def test_improvement_quadrature(ctx_factory, order):
     from grudge.models.advection import VariableCoefficientAdvectionOperator
     from pytools.convergence import EOCRecorder
     from pytools.obj_array import join_fields
+    from meshmode.discretization.poly_element import QuadratureSimplexGroupFactory
 
     cl_ctx = cl.create_some_context()
     queue = cl.CommandQueue(cl_ctx)
@@ -442,8 +443,10 @@ def test_improvement_quadrature(ctx_factory, order):
                 n=(n,)*dims,
                 order=order)
 
-            discr = DGDiscretizationWithBoundaries(cl_ctx, mesh,
-                order=order, quad_min_degrees={"product": 4*order})
+            discr = DGDiscretizationWithBoundaries(cl_ctx, mesh, order=order,
+                    quad_group_factory={
+                        "product": QuadratureSimplexGroupFactory(order=4*order)
+                        })
 
             bound_op = bind(discr, p_op.sym_operator())
             fields = bind(discr, gaussian_mode())(queue, t=0)