diff --git a/meshmode/discretization/connection/refinement.py b/meshmode/discretization/connection/refinement.py
index 4477a9bfd0fdbf4e24659c059997e1e6156fb894..5ef91fe7e41dc464061e73438796afa174756560 100644
--- a/meshmode/discretization/connection/refinement.py
+++ b/meshmode/discretization/connection/refinement.py
@@ -51,6 +51,8 @@ def _map_unit_nodes_to_children(unit_nodes, tesselation):
     """
     ref_vertices = np.array(tesselation.ref_vertices, dtype=np.float)
 
+    assert len(unit_nodes.shape) == 2
+
     for child_element in tesselation.children:
         center = np.vstack(ref_vertices[child_element[0]])
         # Scale by 1/2 since sides in the tesselation have length 2.
diff --git a/meshmode/discretization/poly_element.py b/meshmode/discretization/poly_element.py
index a5319bc84f47ab6689f502629ff6009893033832..54aaabef97ac5f9bfc97b642ebe1a476608e0603 100644
--- a/meshmode/discretization/poly_element.py
+++ b/meshmode/discretization/poly_element.py
@@ -144,7 +144,13 @@ class QuadratureSimplexElementGroup(PolynomialSimplexElementGroupBase):
     @property
     @memoize_method
     def unit_nodes(self):
-        return self._quadrature_rule().nodes
+        result = self._quadrature_rule().nodes
+        if len(result.shape) == 1:
+            result = np.array([result])
+
+        dim2, nunit_nodes = result.shape
+        assert dim2 == self.mesh_el_group.dim
+        return result
 
     @property
     @memoize_method