diff --git a/examples/wave/wave-eager-mpi.py b/examples/wave/wave-eager-mpi.py
index 40ddbb7b1fb2049f54e173e0c5696a8a5a2d19e3..a2c9b14bad7e5d5799b4a5d0645339f7ec222996 100644
--- a/examples/wave/wave-eager-mpi.py
+++ b/examples/wave/wave-eager-mpi.py
@@ -87,7 +87,7 @@ def wave_operator(discr, c, w):
                 discr.face_mass(
                     wave_flux(discr, c=c, w_tpair=interior_trace_pair(discr, w))
                     + wave_flux(discr, c=c, w_tpair=TracePair(
-                        BTAG_ALL, dir_bval, dir_bc))
+                        BTAG_ALL, interior=dir_bval, exterior=dir_bc))
                     + sum(
                         wave_flux(discr, c=c, w_tpair=tpair)
                         for tpair in cross_rank_trace_pairs(discr, w))
diff --git a/examples/wave/wave-eager-var-velocity.py b/examples/wave/wave-eager-var-velocity.py
index 9ac8a4c4f2a4a47f46d0a62f7c9271a7dda4f140..741d38ec72d983fd49ca5f4edf875a9fac2e76d3 100644
--- a/examples/wave/wave-eager-var-velocity.py
+++ b/examples/wave/wave-eager-var-velocity.py
@@ -102,7 +102,7 @@ def wave_operator(discr, c, w):
                     dd_allfaces_quad,
                     wave_flux(discr, c=c, w_tpair=interior_trace_pair(discr, w))
                     + wave_flux(discr, c=c, w_tpair=TracePair(
-                        BTAG_ALL, dir_bval, dir_bc))
+                        BTAG_ALL, interior=dir_bval, exterior=dir_bc))
                     ))
                 )
 
diff --git a/examples/wave/wave-eager.py b/examples/wave/wave-eager.py
index 52ab08244d480ccfe6d58a4476e440fe4ad0e100..a7b11fbe4b5ad2a56a86dab3191f24a286fecffa 100644
--- a/examples/wave/wave-eager.py
+++ b/examples/wave/wave-eager.py
@@ -85,7 +85,7 @@ def wave_operator(discr, c, w):
                 discr.face_mass(
                     wave_flux(discr, c=c, w_tpair=interior_trace_pair(discr, w))
                     + wave_flux(discr, c=c, w_tpair=TracePair(
-                        BTAG_ALL, dir_bval, dir_bc))
+                        BTAG_ALL, interior=dir_bval, exterior=dir_bc))
                     ))
                 )
 
diff --git a/grudge/eager.py b/grudge/eager.py
index 4cff62c5efe9dda454cff20b06789f0db0412f44..3cf9368e7b8f6e53471d073a6aae6c3f44ef73bf 100644
--- a/grudge/eager.py
+++ b/grudge/eager.py
@@ -354,7 +354,7 @@ def interior_trace_pair(discrwb, vec):
                 lambda el: discrwb.opposite_face_connection()(el),
                 i)
 
-    return TracePair("int_faces", i, e)
+    return TracePair("int_faces", interior=i, exterior=e)
 
 
 # {{{ distributed-memory functionality
diff --git a/grudge/symbolic/primitives.py b/grudge/symbolic/primitives.py
index 1daf063a401db2ef13aed97c25901f48431e3f57..5376865883c3e397a152f432037d9ac963adbdff 100644
--- a/grudge/symbolic/primitives.py
+++ b/grudge/symbolic/primitives.py
@@ -690,7 +690,7 @@ class TracePair:
         an expression representing the exterior value to
         be used for the flux.
     """
-    def __init__(self, dd, interior, exterior):
+    def __init__(self, dd, *, interior, exterior):
         """
         """
 
@@ -734,7 +734,7 @@ def int_tpair(expression, qtag=None):
     else:
         q_dd = "int_faces"
 
-    return TracePair(q_dd, i, e)
+    return TracePair(q_dd, interior=i, exterior=e)
 
 
 def bdry_tpair(dd, interior, exterior):
@@ -746,7 +746,7 @@ def bdry_tpair(dd, interior, exterior):
         representing the exterior value to be used
         for the flux.
     """
-    return TracePair(dd, interior, exterior)
+    return TracePair(dd, interior=interior, exterior=exterior)
 
 
 def bv_tpair(dd, interior, exterior):
@@ -760,7 +760,7 @@ def bv_tpair(dd, interior, exterior):
     """
     from grudge.symbolic.operators import project
     interior = cse(project("vol", dd)(interior))
-    return TracePair(dd, interior, exterior)
+    return TracePair(dd, interior=interior, exterior=exterior)
 
 # }}}