diff --git a/MEMO b/MEMO
index c5df0112caeed81365f483b921dade20459089fe..ad071836c2c9944db1cfdb0079cf32ed5dcc9f3a 100644
--- a/MEMO
+++ b/MEMO
@@ -57,6 +57,8 @@ To-do
 
 - Scalar insn priority
 
+- If finding a maximum proves troublesome, move parameters into the domain
+
 - : (as in, Matlab full-sclice) in prefetches
 
 Future ideas
diff --git a/loopy/cse.py b/loopy/cse.py
index d46c5f7fe65382d211ddf50aea6c4904db5bf9e1..640a69bb4db5180231f1cbaf71db8679f5ead1a3 100644
--- a/loopy/cse.py
+++ b/loopy/cse.py
@@ -396,12 +396,12 @@ def precompute(kernel, subst_use, dtype, sweep_inames=[],
         else:
             subst_name_as_expr = use
 
-        if isinstance(subst_name_as_expr, Variable):
-            new_subst_name = subst_name_as_expr.name
-            new_subst_tag = None
-        elif isinstance(subst_name_as_expr, TaggedVariable):
+        if isinstance(subst_name_as_expr, TaggedVariable):
             new_subst_name = subst_name_as_expr.name
             new_subst_tag = subst_name_as_expr.tag
+        elif isinstance(subst_name_as_expr, Variable):
+            new_subst_name = subst_name_as_expr.name
+            new_subst_tag = None
         else:
             raise ValueError("unexpected type of subst_name")
 
@@ -473,7 +473,7 @@ def precompute(kernel, subst_use, dtype, sweep_inames=[],
             else:
                 return None
 
-        if subst_tag != tag:
+        if subst_tag is None or subst_tag != tag:
             # use fall-back identity mapper
             return None
 
diff --git a/loopy/symbolic.py b/loopy/symbolic.py
index e20ddbec296fb83c87b3e9f95a02508a895fced2..e089440b8f1e48d604e263bde2e437efe579d92e 100644
--- a/loopy/symbolic.py
+++ b/loopy/symbolic.py
@@ -535,10 +535,10 @@ class SubstitutionCallbackMapper(IdentityMapper):
 
     def parse_name(self, expr):
         from pymbolic.primitives import Variable
-        if isinstance(expr, Variable):
-            e_name, e_tag = expr.name, None
-        elif isinstance(expr, TaggedVariable):
+        if isinstance(expr, TaggedVariable):
             e_name, e_tag = expr.name, expr.tag
+        elif isinstance(expr, Variable):
+            e_name, e_tag = expr.name, None
         else:
             return None
 
@@ -568,7 +568,13 @@ class SubstitutionCallbackMapper(IdentityMapper):
     map_tagged_variable = map_variable
 
     def map_call(self, expr):
+        from pymbolic.primitives import Lookup
+        if isinstance(expr.function, Lookup):
+            raise RuntimeError("dotted name '%s' not allowed as "
+                    "function identifier" % expr.function)
+
         parsed_name = self.parse_name(expr.function)
+
         if parsed_name is None:
             return IdentityMapper.map_call(self, expr)
 
diff --git a/test/test_fem_assembly.py b/test/test_fem_assembly.py
index 7a9ff15a4960fb5ce5107e46403bacc509e2b658..d5e439514fd7b1ff51fd52443051d0c96935f135 100644
--- a/test/test_fem_assembly.py
+++ b/test/test_fem_assembly.py
@@ -32,7 +32,7 @@ def test_laplacian_stiffness(ctx_factory):
                 "dPsi(ij, dxi) := sum_float32(@ax_b,"
                     "  jacInv[ax_b,dxi,K,q] * DPsi[ax_b,ij,q])",
                 "A[K, i, j] = sum_float32(q, w[q] * jacDet[K,q] * ("
-                    "sum_float32(dx_axis, dPsi.one(i,dx_axis)*dPsi.two(j,dx_axis))))"
+                    "sum_float32(dx_axis, dPsi$one(i,dx_axis)*dPsi$two(j,dx_axis))))"
                 ],
             [
             lp.ArrayArg("jacInv", dtype, shape=(dim, dim, Nc_sym, Nq), order=order),
@@ -79,7 +79,7 @@ def test_laplacian_stiffness(ctx_factory):
         Ncloc = 16
         knl = lp.split_dimension(knl, "K", Ncloc,
                 outer_iname="Ko", inner_iname="Kloc")
-        knl = lp.precompute(knl, "dPsi.one", np.float32, ["dx_axis"], default_tag=None)
+        knl = lp.precompute(knl, "dPsi$one", np.float32, ["dx_axis"], default_tag=None)
         knl = lp.tag_dimensions(knl, {"j": "ilp.seq"})
 
         return knl, ["Ko", "Kloc"]
@@ -131,8 +131,7 @@ def test_laplacian_stiffness(ctx_factory):
 
         lp.auto_test_vs_ref(seq_knl, ctx, kernel_gen,
                 op_count=0, op_label="GFlops",
-                parameters={"Nc": Nc}, print_ref_code=True,
-                timing_rounds=30)
+                parameters={"Nc": Nc}, print_ref_code=True)
 
 
 
diff --git a/test/test_linalg.py b/test/test_linalg.py
index a833a83fca6ca0ecebf7d168db14065758cdc98e..ffd99a6c7c04037c7eca59881a294e90bd2c1e83 100644
--- a/test/test_linalg.py
+++ b/test/test_linalg.py
@@ -89,7 +89,7 @@ def get_suitable_size(ctx):
 
 def check_float4(result, ref_result):
     for comp in ["x", "y", "z", "w"]:
-        return np.allclose(ref_result[comp], result[comp], rtol=1e-3, atol=1e-3)
+        return np.allclose(ref_result[comp], result[comp], rtol=1e-3, atol=1e-3), None
 
 def test_axpy(ctx_factory):
     ctx = ctx_factory()