diff --git a/loopy/kernel.py b/loopy/kernel.py
index 9155f75e47477f5a7a7e099cdb45e2290e3c8ec1..35904443aa5d509fff7da930828de2e937efb27c 100644
--- a/loopy/kernel.py
+++ b/loopy/kernel.py
@@ -1830,75 +1830,6 @@ class DomainChanger:
 
 # }}}
 
-# {{{ maxima export
-
-from pymbolic.maxima import MaximaStringifyMapper as MaximaStringifyMapperBase
-
-class MaximaStringifyMapper(MaximaStringifyMapperBase):
-    def map_subscript(self, expr, enclosing_prec):
-        res = self.rec(expr.aggregate, enclosing_prec)
-        idx = expr.index
-        if not isinstance(idx, tuple):
-            idx = (idx,)
-        for i in idx:
-            if isinstance(i, int):
-                res += "_%d" % i
-
-        return res
-
-def get_loopy_instructions_as_maxima(kernel, prefix):
-    """Sample use for code comparison::
-
-        load("knl-optFalse.mac");
-        load("knl-optTrue.mac");
-
-        vname: bessel_j_8;
-
-        un_name : concat(''un_, vname);
-        opt_name : concat(''opt_, vname);
-
-        print(ratsimp(ev(un_name - opt_name)));
-    """
-    from loopy.preprocess import add_boostability_and_automatic_dependencies
-    kernel = add_boostability_and_automatic_dependencies(kernel)
-
-    my_variable_names = (
-            insn.get_assignee_var_name() for insn in kernel.instructions)
-
-    from pymbolic import var
-    subst_dict = dict(
-            (vn, var(prefix+vn)) for vn in my_variable_names)
-
-    mstr = MaximaStringifyMapper()
-    from loopy.symbolic import SubstitutionMapper
-    from pymbolic.mapper.substitutor import make_subst_func
-    substitute = SubstitutionMapper(make_subst_func(subst_dict))
-
-    result = ["ratprint:false;"]
-
-    written_insn_ids = set()
-
-    def write_insn(insn):
-        if not isinstance(insn, Instruction):
-            insn = kernel.id_to_insn[insn]
-
-        for dep in insn.insn_deps:
-            if dep not in written_insn_ids:
-                write_insn(dep)
-
-        result.append("%s%s : %s;" % (
-            prefix, insn.get_assignee_var_name(),
-            mstr(substitute(insn.expression))))
-
-        written_insn_ids.add(insn.id)
-
-    for insn in kernel.instructions:
-        if insn.id not in written_insn_ids:
-            write_insn(insn)
-
-    return "\n".join(result)
-
-# }}}
 
 # {{{ dot export
 
diff --git a/loopy/maxima.py b/loopy/maxima.py
new file mode 100644
index 0000000000000000000000000000000000000000..1726e44e265283c34018d37c88213a1006163648
--- /dev/null
+++ b/loopy/maxima.py
@@ -0,0 +1,70 @@
+"""Export to maxima."""
+
+from __future__ import division
+from pymbolic.maxima import MaximaStringifyMapper as MaximaStringifyMapperBase
+
+class MaximaStringifyMapper(MaximaStringifyMapperBase):
+    def map_subscript(self, expr, enclosing_prec):
+        res = self.rec(expr.aggregate, enclosing_prec)
+        idx = expr.index
+        if not isinstance(idx, tuple):
+            idx = (idx,)
+        for i in idx:
+            if isinstance(i, int):
+                res += "_%d" % i
+
+        return res
+
+def get_loopy_instructions_as_maxima(kernel, prefix):
+    """Sample use for code comparison::
+
+        load("knl-optFalse.mac");
+        load("knl-optTrue.mac");
+
+        vname: bessel_j_8;
+
+        un_name : concat(''un_, vname);
+        opt_name : concat(''opt_, vname);
+
+        print(ratsimp(ev(un_name - opt_name)));
+    """
+    from loopy.preprocess import add_boostability_and_automatic_dependencies
+    kernel = add_boostability_and_automatic_dependencies(kernel)
+
+    my_variable_names = (
+            insn.get_assignee_var_name() for insn in kernel.instructions)
+
+    from pymbolic import var
+    subst_dict = dict(
+            (vn, var(prefix+vn)) for vn in my_variable_names)
+
+    mstr = MaximaStringifyMapper()
+    from loopy.symbolic import SubstitutionMapper
+    from pymbolic.mapper.substitutor import make_subst_func
+    substitute = SubstitutionMapper(make_subst_func(subst_dict))
+
+    result = ["ratprint:false;"]
+
+    written_insn_ids = set()
+
+    from loopy.kernel import Instruction
+
+    def write_insn(insn):
+        if not isinstance(insn, Instruction):
+            insn = kernel.id_to_insn[insn]
+
+        for dep in insn.insn_deps:
+            if dep not in written_insn_ids:
+                write_insn(dep)
+
+        result.append("%s%s : %s;" % (
+            prefix, insn.get_assignee_var_name(),
+            mstr(substitute(insn.expression))))
+
+        written_insn_ids.add(insn.id)
+
+    for insn in kernel.instructions:
+        if insn.id not in written_insn_ids:
+            write_insn(insn)
+
+    return "\n".join(result)