diff --git a/wireshark_gen/__init__.py b/wireshark_gen/__init__.py
index 9bc3662..0ab5a95 100644
--- a/wireshark_gen/__init__.py
+++ b/wireshark_gen/__init__.py
@@ -35,7 +35,7 @@
 
 templates_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'templates')
 
-DissectorField = namedtuple("DissectorField", ["fullname", "name", "type", "base"])
+DissectorField = namedtuple("DissectorField", ["fullname", "name", "type", "base", "enum_table"])
 
 proto_names = { 1: 'of10', 2: 'of11', 3: 'of12', 4: 'of13' }
 def make_field_name(wire_version, ofclass_name, member_name):
@@ -50,10 +50,14 @@
     Returns (type, base)
     """
     if oftype.startswith("list"):
-        return "bytes", "NONE"
+        return "bytes", "NONE", "nil"
 
     ofproto = of_g.ir[version]
+
     enum = ofproto.enum_by_name(oftype)
+    if not enum and (cls, name) in field_info.class_field_to_enum:
+        enum_name = field_info.class_field_to_enum[(cls, name)]
+        enum = ofproto.enum_by_name(enum_name)
 
     if enum:
         field_type = "uint32"
@@ -76,7 +80,12 @@
         print "WARN missing oftype_to_base for", oftype
         field_base = "NONE"
 
-    return field_type, field_base
+    if enum:
+        enum_table = 'enum_v%d_%s' % (version, enum.name)
+    else:
+        enum_table = 'nil'
+
+    return field_type, field_base, enum_table
 
 def create_fields():
     r = []
@@ -86,39 +95,13 @@
                 if isinstance(m, OFPadMember):
                     continue
                 fullname = make_field_name(wire_version, ofclass.name, m.name)
-                field_type, field_base = get_field_info(wire_version, ofclass.name, m.name, m.oftype)
-                r.append(DissectorField(fullname, m.name, field_type, field_base))
+                field_type, field_base, enum_table = get_field_info(wire_version, ofclass.name, m.name, m.oftype)
+                r.append(DissectorField(fullname, m.name, field_type, field_base, enum_table))
 
     return r
 
-enum_tables = {
-    'of13.flow_mod.type': 'enum_v4_ofp_type',
-    'of13.error_msg.type': 'enum_v4_ofp_type',
-    'of13.stats_request.type': 'enum_v4_ofp_type',
-    'of13.stats_request.stats_type': 'enum_v4_ofp_stats_type',
-    'of13.stats_request.flags': 'enum_v4_ofp_stats_request_flags',
-    'of13.stats_reply.type': 'enum_v4_ofp_type',
-    'of13.stats_reply.stats_type': 'enum_v4_ofp_stats_type',
-    'of13.stats_reply.flags': 'enum_v4_ofp_stats_reply_flags',
-    'of13.flow_mod.table_id': 'enum_v4_ofp_table',
-    'of13.flow_mod._command': 'enum_v4_ofp_flow_mod_command',
-    'of13.flow_mod.out_port': 'enum_v4_ofp_port',
-    'of13.flow_mod.out_group': 'enum_v4_ofp_group',
-    'of13.error_msg.err_type': 'enum_v4_ofp_error_type',
-    'of13.port_mod.type': 'enum_v4_ofp_type',
-    'of13.hello.type': 'enum_v4_ofp_type',
-    'of13.features_request.type': 'enum_v4_ofp_type',
-    'of13.features_reply.type': 'enum_v4_ofp_type',
-    'of13.barrier_request.type': 'enum_v4_ofp_type',
-    'of13.barrier_reply.type': 'enum_v4_ofp_type',
-    'of13.echo_request.type': 'enum_v4_ofp_type',
-    'of13.echo_reply.type': 'enum_v4_ofp_type',
-    'of13.match_t.type': 'enum_v4_ofp_match_type'
-}
-
 def generate(out, name):
     context = {
         'fields': create_fields(),
-        'enum_tables': enum_tables,
     }
     utils.render_template(out, "openflow.lua", [templates_dir], context)
