diff --git a/mako/compat.py b/mako/compat.py
index c53091d..2dba143 100644
--- a/mako/compat.py
+++ b/mako/compat.py
@@ -126,36 +126,6 @@
 else:
     callable = callable
 
-################################################
-# cross-compatible exec_()
-# Copyright (c) 2010-2012 Benjamin Peterson
-if py3k:
-    import builtins
-    exec_ = getattr(builtins, "exec")
-
-
-    def reraise(tp, value, tb=None):
-        if value.__traceback__ is not tb:
-            raise value.with_traceback(tb)
-        raise value
-
-
-    print_ = getattr(builtins, "print")
-    del builtins
-
-else:
-    def exec_(code, globs=None, locs=None):
-        """Execute code in a namespace."""
-        if globs is None:
-            frame = sys._getframe(1)
-            globs = frame.f_globals
-            if locs is None:
-                locs = frame.f_locals
-            del frame
-        elif locs is None:
-            locs = globs
-        exec("""exec code in globs, locs""")
-################################################
 
 ################################################
 # cross-compatible metaclass implementation
diff --git a/mako/template.py b/mako/template.py
index acbf05e..9a513e3 100644
--- a/mako/template.py
+++ b/mako/template.py
@@ -639,11 +639,12 @@
         cid = cid.encode()
     module = types.ModuleType(cid)
     code = compile(source, cid, 'exec')
+
+    # this exec() works for 2.4->3.3.
     exec(code, module.__dict__, module.__dict__)
     return (source, module)
 
 def _compile_module_file(template, text, filename, outputpath, module_writer):
-    identifier = template.module_id
     source, lexer = _compile(template, text, filename,
                         generate_magic_comment=True)
 
