diff --git a/cmdline.py b/cmdline.py
index aafa019..6395fff 100644
--- a/cmdline.py
+++ b/cmdline.py
@@ -29,14 +29,6 @@
 
 from loxi_globals import OFVersions
 
-##
-# Command line options
-options = {}
-
-##
-# Command line arguments
-args = []
-
 ##@var config_default
 # The default configuration dictionary for LOXI code generation
 options_default = {
@@ -77,10 +69,6 @@
     @param cfg_dflt The default configuration dictionary
     @return A pair (options, args) as per parser return
     """
-    global options
-    global args
-    global target_version_list
-
     parser = OptionParser(version="%prog 0.1")
 
     #@todo Add options via dictionary
diff --git a/loxi_front_end/frontend.py b/loxi_front_end/frontend.py
index bc79ed9..7b96fe3 100644
--- a/loxi_front_end/frontend.py
+++ b/loxi_front_end/frontend.py
@@ -112,7 +112,6 @@
                     ofinput.wire_versions.add(int(decl_ast[2]))
                 else:
                     raise InputError("Unrecognized wire protocol version %r" % decl_ast[2])
-                found_wire_version = True
 
     if not ofinput.wire_versions:
         raise InputError("Missing #version metadata")
diff --git a/loxi_ir/ir.py b/loxi_ir/ir.py
index c8ca04d..0e95473 100644
--- a/loxi_ir/ir.py
+++ b/loxi_ir/ir.py
@@ -220,7 +220,7 @@
         else:
             raise Exception("Not a fixed length member: {}.{} [{}]".format(
                 self.of_class.name,
-                self.name if hasattr("self", name) else "(unnnamed)",
+                self.name if hasattr("self", "name") else "(unnnamed)",
                 type(self).__name__))
 
 """
diff --git a/loxi_ir/ir_offset.py b/loxi_ir/ir_offset.py
index 2e6d004..9c6a5c1 100644
--- a/loxi_ir/ir_offset.py
+++ b/loxi_ir/ir_offset.py
@@ -172,7 +172,6 @@
     """
     count, base_type = type_dec_to_count_base(fe_member.oftype)
 
-    len_update = 0
     if base_type in of_mixed_types:
         base_type = of_mixed_types[base_type][version.wire_version]
 
diff --git a/loxigen.py b/loxigen.py
index 700168a..fcb2788 100755
--- a/loxigen.py
+++ b/loxigen.py
@@ -132,7 +132,6 @@
     filenames = [x for x in filenames if not x.endswith('~')]
 
     # Read input files
-    all_ofinputs = []
     for filename in filenames:
         log("Processing struct file: " + filename)
         ofinput = process_input_file(filename)
@@ -167,20 +166,9 @@
     lang_file = "lang_%s" % options.lang
     lang_module = __import__(lang_file)
 
-    if hasattr(lang_module, "config_sanity_check") and not lang_module.config_sanity_check():
-        debug("Config sanity check failed\n")
-        sys.exit(1)
-
-    # If list files, just list auto-gen files to stdout and exit
-    if options.list_files:
-        for name in lang_module.targets:
-            print options.install_dir + '/' + name
-        sys.exit(0)
-
     log("\nGenerating files for target language %s\n" % options.lang)
 
     loxi_globals.OFVersions.target_versions = target_versions
     inputs = read_input()
     build_ir(inputs)
-    #log_all_class_info()
     lang_module.generate(options.install_dir)
