diff --git a/doc/reference.rst b/doc/reference.rst
index 251d86eb44b01cd851a334f6389736b9fdc81549..fb579a2b560a120f65504c58c15f033d0f42aa82 100644
--- a/doc/reference.rst
+++ b/doc/reference.rst
@@ -133,6 +133,8 @@ Instructions
 
 .. _assignments:
 
+.. autoclass:: UniqueName
+
 Assignments
 ~~~~~~~~~~~
 
diff --git a/loopy/__init__.py b/loopy/__init__.py
index f5056d123a96fb18aaa230a9ed77edba38032745..439388f4d471eb943cafc73a5ab80ed6472db85c 100644
--- a/loopy/__init__.py
+++ b/loopy/__init__.py
@@ -59,7 +59,7 @@ from loopy.kernel.tools import (
         get_dot_dependency_graph,
         add_argument_dtypes,
         add_and_infer_argument_dtypes)
-from loopy.kernel.creation import make_kernel
+from loopy.kernel.creation import make_kernel, UniqueName
 from loopy.library.reduction import register_reduction_parser
 from loopy.subst import extract_subst, expand_subst
 from loopy.precompute import precompute
@@ -86,7 +86,9 @@ __all__ = [
         "default_function_mangler", "single_arg_function_mangler",
         "opencl_function_mangler", "opencl_symbol_mangler",
         "default_preamble_generator",
-        "make_kernel",
+
+        "make_kernel", "UniqueName",
+
         "register_reduction_parser",
 
         "extract_subst", "expand_subst",
diff --git a/loopy/kernel/__init__.py b/loopy/kernel/__init__.py
index 8fed3bafeaa1963f37e17bc92a06ab6f36ad335c..d1ce500298ef5d7f121af7359fdc72e11375b7f7 100644
--- a/loopy/kernel/__init__.py
+++ b/loopy/kernel/__init__.py
@@ -178,11 +178,11 @@ class LoopKernel(Record):
 
         # {{{ make instruction ids unique
 
-        from loopy.kernel.creation import MakeUnique
+        from loopy.kernel.creation import UniqueName
 
         insn_ids = set()
         for insn in instructions:
-            if insn.id is not None and not isinstance(insn.id, MakeUnique):
+            if insn.id is not None and not isinstance(insn.id, UniqueName):
                 if insn.id in insn_ids:
                     raise RuntimeError("duplicate instruction id: %s" % insn.id)
                 insn_ids.add(insn.id)
@@ -195,7 +195,7 @@ class LoopKernel(Record):
             if insn.id is None:
                 new_instructions.append(
                         insn.copy(id=insn_id_gen("insn")))
-            elif isinstance(insn.id, MakeUnique):
+            elif isinstance(insn.id, UniqueName):
                 new_instructions.append(
                         insn.copy(id=insn_id_gen(insn.id.name)))
             else:
diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
index 8a25404a51276c7e39cbc98d6582f230b1cbfbee..d51f788a5c97888f1fc7a8c40a2013e917654933 100644
--- a/loopy/kernel/creation.py
+++ b/loopy/kernel/creation.py
@@ -47,7 +47,7 @@ def _gather_isl_identifiers(s):
     return set(_IDENTIFIER_RE.findall(s)) - set(["and", "or", "exists"])
 
 
-class MakeUnique:
+class UniqueName:
     """A tag for a string that identifies a partial identifier that is to
     be made unique by the UI.
     """
@@ -200,7 +200,7 @@ def parse_insn(insn):
                 if opt_key == "id":
                     insn_id = opt_value
                 elif opt_key == "id_prefix":
-                    insn_id = MakeUnique(opt_value)
+                    insn_id = UniqueName(opt_value)
                 elif opt_key == "priority":
                     priority = int(opt_value)
                 elif opt_key == "dep":