diff --git a/loopy/kernel/__init__.py b/loopy/kernel/__init__.py
index dccaca2ec104a4749289f7cd89c491292f618e3d..622f5e49be1e40b4156113d92907fe8b1d9fb859 100644
--- a/loopy/kernel/__init__.py
+++ b/loopy/kernel/__init__.py
@@ -1111,7 +1111,8 @@ class LoopKernel(ImmutableRecordWithoutPickling):
 
         return embedding
 
-    def stringify(self, what=None, with_dependencies=False):
+    def stringify(self, what=None, with_dependencies=False, use_separators=True,
+            show_labels=True):
         all_what = set([
             "name",
             "arguments",
@@ -1150,7 +1151,10 @@ class LoopKernel(ImmutableRecordWithoutPickling):
 
         kernel = self
 
-        sep = 75*"-"
+        if use_separators:
+            sep = [75*"-"]
+        else:
+            sep = []
 
         def natorder(key):
             # Return natural ordering for strings, as opposed to dictionary order.
@@ -1167,44 +1171,50 @@ class LoopKernel(ImmutableRecordWithoutPickling):
             return sorted(seq, key=lambda y: natorder(key(y)))
 
         if "name" in what:
-            lines.append(sep)
+            lines.extend(sep)
             lines.append("KERNEL: " + kernel.name)
 
         if "arguments" in what:
-            lines.append(sep)
-            lines.append("ARGUMENTS:")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("ARGUMENTS:")
             for arg_name in natsorted(kernel.arg_dict):
                 lines.append(str(kernel.arg_dict[arg_name]))
 
         if "domains" in what:
-            lines.append(sep)
-            lines.append("DOMAINS:")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("DOMAINS:")
             for dom, parents in zip(kernel.domains, kernel.all_parents_per_domain()):
                 lines.append(len(parents)*"  " + str(dom))
 
         if "tags" in what:
-            lines.append(sep)
-            lines.append("INAME IMPLEMENTATION TAGS:")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("INAME IMPLEMENTATION TAGS:")
             for iname in natsorted(kernel.all_inames()):
                 line = "%s: %s" % (iname, kernel.iname_to_tag.get(iname))
                 lines.append(line)
 
         if "variables" in what and kernel.temporary_variables:
-            lines.append(sep)
-            lines.append("TEMPORARIES:")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("TEMPORARIES:")
             for tv in natsorted(six.itervalues(kernel.temporary_variables),
                     key=lambda tv: tv.name):
                 lines.append(str(tv))
 
         if "rules" in what and kernel.substitutions:
-            lines.append(sep)
-            lines.append("SUBSTIUTION RULES:")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("SUBSTIUTION RULES:")
             for rule_name in natsorted(six.iterkeys(kernel.substitutions)):
                 lines.append(str(kernel.substitutions[rule_name]))
 
         if "instructions" in what:
-            lines.append(sep)
-            lines.append("INSTRUCTIONS:")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("INSTRUCTIONS:")
             loop_list_width = 35
 
             # {{{ topological sort
@@ -1319,18 +1329,20 @@ class LoopKernel(ImmutableRecordWithoutPickling):
                 dep_lines.append("%s : %s" % (insn.id, ",".join(insn.depends_on)))
 
         if "Dependencies" in what and dep_lines:
-            lines.append(sep)
-            lines.append("DEPENDENCIES: "
-                    "(use loopy.show_dependency_graph to visualize)")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("DEPENDENCIES: "
+                        "(use loopy.show_dependency_graph to visualize)")
             lines.extend(dep_lines)
 
         if "schedule" in what and kernel.schedule is not None:
-            lines.append(sep)
-            lines.append("SCHEDULE:")
+            lines.extend(sep)
+            if show_labels:
+                lines.append("SCHEDULE:")
             from loopy.schedule import dump_schedule
             lines.append(dump_schedule(kernel, kernel.schedule))
 
-        lines.append(sep)
+        lines.extend(sep)
 
         return "\n".join(lines)