move header class generation into legacy codepath
diff --git a/loxi_front_end/frontend.py b/loxi_front_end/frontend.py
index 7d0424f..ab98c26 100644
--- a/loxi_front_end/frontend.py
+++ b/loxi_front_end/frontend.py
@@ -63,12 +63,6 @@
             members = [create_member(m_ast) for m_ast in decl_ast[2]]
             ofclass = OFClass(name=decl_ast[1], members=members)
             ofinput.classes.append(ofclass)
-            if ofclass.name in type_maps.inheritance_map:
-                # Clone class into header class and add to list
-                # TODO figure out if these are actually used
-                ofclass_header = OFClass(ofclass.name + '_header',
-                                         copy.deepcopy(members))
-                ofinput.classes.append(ofclass_header)
         if decl_ast[0] == 'enum':
             enum = OFEnum(name=decl_ast[1], values=[(x[0], x[1]) for x in decl_ast[2]])
             ofinput.enums.append(enum)
diff --git a/loxigen.py b/loxigen.py
index ddb2616..5787791 100755
--- a/loxigen.py
+++ b/loxigen.py
@@ -463,6 +463,15 @@
     lengths of struct members and the set of list and action_id types.
     """
 
+    # Generate header classes for inheritance parents
+    for wire_version, ordered_classes in of_g.ordered_classes.items():
+        classes = versions[of_g.of_version_wire2name[wire_version]]['classes']
+        for cls in ordered_classes:
+            if cls in type_maps.inheritance_map:
+                new_cls = cls + '_header'
+                of_g.ordered_classes[wire_version].append(new_cls)
+                classes[new_cls] = classes[cls]
+
     # Generate action_id classes for OF 1.3
     for wire_version, ordered_classes in of_g.ordered_classes.items():
         if not wire_version in [of_g.VERSION_1_3]: