diff --git a/lang_python.py b/lang_python.py
index 4d64e8d..4db9e38 100644
--- a/lang_python.py
+++ b/lang_python.py
@@ -65,7 +65,7 @@
     1: "of10",
     2: "of11",
     3: "of12",
-    4: "of13"
+    4: "of13",
 }
 
 prefix = 'pyloxi/loxi'
diff --git a/py_gen/codegen.py b/py_gen/codegen.py
index 67529e0..b8e014f 100644
--- a/py_gen/codegen.py
+++ b/py_gen/codegen.py
@@ -74,7 +74,8 @@
 # Create intermediate representation
 def build_ofclasses(version):
     blacklist = ["of_action", "of_action_header", "of_header", "of_queue_prop",
-                 "of_queue_prop_header", "of_experimenter", "of_action_experimenter"]
+                 "of_queue_prop_header", "of_experimenter", "of_action_experimenter",
+                 "of_oxm"]
     ofclasses = []
     for cls in of_g.standard_class_order:
         if version not in of_g.unified[cls] or cls in blacklist:
@@ -135,14 +136,14 @@
 def generate_action(out, name, version):
     ofclasses = [x for x in build_ofclasses(version)
                  if utils.class_is_action(x.name)]
-    util.render_template(out, 'action.py', ofclasses=ofclasses)
+    util.render_template(out, 'action.py', ofclasses=ofclasses, version=version)
 
 def generate_common(out, name, version):
     ofclasses = [x for x in build_ofclasses(version)
                  if not utils.class_is_message(x.name)
                     and not utils.class_is_action(x.name)
                     and not utils.class_is_list(x.name)]
-    util.render_template(out, 'common.py', ofclasses=ofclasses)
+    util.render_template(out, 'common.py', ofclasses=ofclasses, version=version)
 
 def generate_const(out, name, version):
     groups = {}
diff --git a/py_gen/templates/action.py b/py_gen/templates/action.py
index 089cc53..8462dfd 100644
--- a/py_gen/templates/action.py
+++ b/py_gen/templates/action.py
@@ -26,6 +26,7 @@
 :: # under the EPL.
 ::
 :: import itertools
+:: import of_g
 :: include('_copyright.py')
 
 :: include('_autogen.py')
@@ -54,7 +55,11 @@
 
 :: #endfor
 
+:: if version == of_g.VERSION_1_0:
 def parse_vendor(buf):
+:: else:
+def parse_experimenter(buf):
+:: #endif
     if len(buf) < 16:
         raise loxi.ProtocolError("experimenter action too short")
 
diff --git a/py_gen/templates/common.py b/py_gen/templates/common.py
index c9af309..99d3f71 100644
--- a/py_gen/templates/common.py
+++ b/py_gen/templates/common.py
@@ -58,4 +58,9 @@
 
 :: #endfor
 
+:: if version == 1:
 match = match_v1
+:: elif version == 4:
+:: # HACK
+match = match_v3
+:: #endif
diff --git a/py_gen/templates/message.py b/py_gen/templates/message.py
index 71a2871..69c3fe1 100644
--- a/py_gen/templates/message.py
+++ b/py_gen/templates/message.py
@@ -26,6 +26,7 @@
 :: # under the EPL.
 ::
 :: import itertools
+:: import of_g
 :: include('_copyright.py')
 
 :: include('_autogen.py')
@@ -128,6 +129,7 @@
     else:
         raise loxi.ProtocolError("unexpected flow mod cmd %u" % cmd)
 
+:: if version < of_g.VERSION_1_3:
 def parse_stats_reply(buf):
     if len(buf) < 8 + 2:
         raise loxi.ProtocolError("message too short")
@@ -145,8 +147,31 @@
         return stats_request_parsers[stats_type](buf)
     else:
         raise loxi.ProtocolError("unexpected stats type %u" % stats_type)
+:: else:
+def parse_multipart_reply(buf):
+    if len(buf) < 8 + 2:
+        raise loxi.ProtocolError("message too short")
+    multipart_type, = struct.unpack_from("!H", buf, 8)
+    if multipart_type in multipart_reply_parsers:
+        return multipart_reply_parsers[multipart_type](buf)
+    else:
+        raise loxi.ProtocolError("unexpected multipart type %u" % multipart_type)
 
+def parse_multipart_request(buf):
+    if len(buf) < 8 + 2:
+        raise loxi.ProtocolError("message too short")
+    multipart_type, = struct.unpack_from("!H", buf, 8)
+    if multipart_type in multipart_request_parsers:
+        return multipart_request_parsers[multipart_type](buf)
+    else:
+        raise loxi.ProtocolError("unexpected multipart type %u" % multipart_type)
+:: #endif
+
+:: if version == of_g.VERSION_1_0:
 def parse_vendor(buf):
+:: else:
+def parse_experimenter(buf):
+:: #endif
     if len(buf) < 16:
         raise loxi.ProtocolError("experimenter message too short")
 
@@ -184,6 +209,7 @@
     const.OFPFC_DELETE_STRICT : flow_delete_strict.unpack,
 }
 
+:: if version < of_g.VERSION_1_3:
 stats_reply_parsers = {
     const.OFPST_DESC : desc_stats_reply.unpack,
     const.OFPST_FLOW : flow_stats_reply.unpack,
@@ -203,6 +229,9 @@
     const.OFPST_QUEUE : queue_stats_request.unpack,
     const.OFPST_VENDOR : experimenter_stats_request.unpack,
 }
+:: else:
+
+:: #endif
 
 :: experimenter_ofclasses = [x for x in ofclasses if x.type_members[1].value == 'const.OFPT_VENDOR']
 :: sort_key = lambda x: x.type_members[2].value
diff --git a/py_gen/tests/of13.py b/py_gen/tests/of13.py
new file mode 100644
index 0000000..512d4aa
--- /dev/null
+++ b/py_gen/tests/of13.py
@@ -0,0 +1,388 @@
+#!/usr/bin/env python
+# Copyright 2013, Big Switch Networks, Inc.
+#
+# LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
+# the following special exception:
+#
+# LOXI Exception
+#
+# As a special exception to the terms of the EPL, you may distribute libraries
+# generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
+# that copyright and licensing notices generated by LoxiGen are not altered or removed
+# from the LoxiGen Libraries and the notice provided below is (i) included in
+# the LoxiGen Libraries, if distributed in source code form and (ii) included in any
+# documentation for the LoxiGen Libraries, if distributed in binary form.
+#
+# Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
+#
+# You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
+# a copy of the EPL at:
+#
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# EPL for the specific language governing permissions and limitations
+# under the EPL.
+import unittest
+
+try:
+    import loxi.of13 as ofp
+except ImportError:
+    exit("loxi package not found. Try setting PYTHONPATH.")
+
+class TestImports(unittest.TestCase):
+    def test_toplevel(self):
+        import loxi
+        self.assertTrue(hasattr(loxi, "ProtocolError"))
+        ofp = loxi.protocol(4)
+        self.assertEquals(ofp.OFP_VERSION, 4)
+        self.assertTrue(hasattr(ofp, "action"))
+        self.assertTrue(hasattr(ofp, "common"))
+        self.assertTrue(hasattr(ofp, "const"))
+        self.assertTrue(hasattr(ofp, "message"))
+
+    def test_version(self):
+        import loxi
+        self.assertTrue(hasattr(loxi.of13, "ProtocolError"))
+        self.assertTrue(hasattr(loxi.of13, "OFP_VERSION"))
+        self.assertEquals(loxi.of13.OFP_VERSION, 4)
+        self.assertTrue(hasattr(loxi.of13, "action"))
+        self.assertTrue(hasattr(loxi.of13, "common"))
+        self.assertTrue(hasattr(loxi.of13, "const"))
+        self.assertTrue(hasattr(loxi.of13, "message"))
+
+class TestAllOF13(unittest.TestCase):
+    """
+    Round-trips every class through serialization/deserialization.
+    Not a replacement for handcoded tests because it only uses the
+    default member values.
+    """
+
+    def setUp(self):
+        mods = [ofp.action,ofp.message,ofp.common]
+        self.klasses = [klass for mod in mods
+                              for klass in mod.__dict__.values()
+                              if hasattr(klass, 'show')]
+        self.klasses.sort(key=lambda x: str(x))
+
+    def test_serialization(self):
+        expected_failures = [
+            ofp.common.action_id,
+            ofp.common.action_id_bsn_mirror,
+            ofp.common.action_id_bsn_set_tunnel_dst,
+            ofp.common.action_id_copy_ttl_in,
+            ofp.common.action_id_copy_ttl_out,
+            ofp.common.action_id_dec_mpls_ttl,
+            ofp.common.action_id_dec_nw_ttl,
+            ofp.common.action_id_experimenter,
+            ofp.common.action_id_group,
+            ofp.common.action_id_header,
+            ofp.common.action_id_nicira_dec_ttl,
+            ofp.common.action_id_output,
+            ofp.common.action_id_pop_mpls,
+            ofp.common.action_id_pop_pbb,
+            ofp.common.action_id_pop_vlan,
+            ofp.common.action_id_push_mpls,
+            ofp.common.action_id_push_pbb,
+            ofp.common.action_id_push_vlan,
+            ofp.common.action_id_set_field,
+            ofp.common.action_id_set_mpls_ttl,
+            ofp.common.action_id_set_nw_ttl,
+            ofp.common.action_id_set_queue,
+            ofp.common.flow_stats_entry,
+            ofp.common.group_desc_stats_entry,
+            ofp.common.hello_elem,
+            ofp.common.hello_elem_header,
+            ofp.common.hello_elem_versionbitmap,
+            ofp.common.instruction,
+            ofp.common.instruction_apply_actions,
+            ofp.common.instruction_clear_actions,
+            ofp.common.instruction_experimenter,
+            ofp.common.instruction_goto_table,
+            ofp.common.instruction_header,
+            ofp.common.instruction_meter,
+            ofp.common.instruction_write_actions,
+            ofp.common.instruction_write_metadata,
+            ofp.common.match_v3,
+            ofp.common.meter_band,
+            ofp.common.meter_band_drop,
+            ofp.common.meter_band_dscp_remark,
+            ofp.common.meter_band_experimenter,
+            ofp.common.meter_band_header,
+            ofp.common.oxm_arp_op,
+            ofp.common.oxm_arp_op_masked,
+            ofp.common.oxm_arp_sha,
+            ofp.common.oxm_arp_sha_masked,
+            ofp.common.oxm_arp_spa,
+            ofp.common.oxm_arp_spa_masked,
+            ofp.common.oxm_arp_tha,
+            ofp.common.oxm_arp_tha_masked,
+            ofp.common.oxm_arp_tpa,
+            ofp.common.oxm_arp_tpa_masked,
+            ofp.common.oxm_eth_dst,
+            ofp.common.oxm_eth_dst_masked,
+            ofp.common.oxm_eth_src,
+            ofp.common.oxm_eth_src_masked,
+            ofp.common.oxm_eth_type,
+            ofp.common.oxm_eth_type_masked,
+            ofp.common.oxm_header,
+            ofp.common.oxm_icmpv4_code,
+            ofp.common.oxm_icmpv4_code_masked,
+            ofp.common.oxm_icmpv4_type,
+            ofp.common.oxm_icmpv4_type_masked,
+            ofp.common.oxm_icmpv6_code,
+            ofp.common.oxm_icmpv6_code_masked,
+            ofp.common.oxm_icmpv6_type,
+            ofp.common.oxm_icmpv6_type_masked,
+            ofp.common.oxm_in_phy_port,
+            ofp.common.oxm_in_phy_port_masked,
+            ofp.common.oxm_in_port,
+            ofp.common.oxm_in_port_masked,
+            ofp.common.oxm_ip_dscp,
+            ofp.common.oxm_ip_dscp_masked,
+            ofp.common.oxm_ip_ecn,
+            ofp.common.oxm_ip_ecn_masked,
+            ofp.common.oxm_ip_proto,
+            ofp.common.oxm_ip_proto_masked,
+            ofp.common.oxm_ipv4_dst,
+            ofp.common.oxm_ipv4_dst_masked,
+            ofp.common.oxm_ipv4_src,
+            ofp.common.oxm_ipv4_src_masked,
+            ofp.common.oxm_ipv6_dst,
+            ofp.common.oxm_ipv6_dst_masked,
+            ofp.common.oxm_ipv6_flabel,
+            ofp.common.oxm_ipv6_flabel_masked,
+            ofp.common.oxm_ipv6_nd_sll,
+            ofp.common.oxm_ipv6_nd_sll_masked,
+            ofp.common.oxm_ipv6_nd_target,
+            ofp.common.oxm_ipv6_nd_target_masked,
+            ofp.common.oxm_ipv6_nd_tll,
+            ofp.common.oxm_ipv6_nd_tll_masked,
+            ofp.common.oxm_ipv6_src,
+            ofp.common.oxm_ipv6_src_masked,
+            ofp.common.oxm_metadata,
+            ofp.common.oxm_metadata_masked,
+            ofp.common.oxm_mpls_label,
+            ofp.common.oxm_mpls_label_masked,
+            ofp.common.oxm_mpls_tc,
+            ofp.common.oxm_mpls_tc_masked,
+            ofp.common.oxm_sctp_dst,
+            ofp.common.oxm_sctp_dst_masked,
+            ofp.common.oxm_sctp_src,
+            ofp.common.oxm_sctp_src_masked,
+            ofp.common.oxm_tcp_dst,
+            ofp.common.oxm_tcp_dst_masked,
+            ofp.common.oxm_tcp_src,
+            ofp.common.oxm_tcp_src_masked,
+            ofp.common.oxm_udp_dst,
+            ofp.common.oxm_udp_dst_masked,
+            ofp.common.oxm_udp_src,
+            ofp.common.oxm_udp_src_masked,
+            ofp.common.oxm_vlan_pcp,
+            ofp.common.oxm_vlan_pcp_masked,
+            ofp.common.oxm_vlan_vid,
+            ofp.common.oxm_vlan_vid_masked,
+            ofp.common.table_feature_prop,
+            ofp.common.table_feature_prop_apply_actions,
+            ofp.common.table_feature_prop_apply_actions_miss,
+            ofp.common.table_feature_prop_apply_setfield,
+            ofp.common.table_feature_prop_apply_setfield_miss,
+            ofp.common.table_feature_prop_experimenter,
+            ofp.common.table_feature_prop_header,
+            ofp.common.table_feature_prop_instructions,
+            ofp.common.table_feature_prop_instructions_miss,
+            ofp.common.table_feature_prop_match,
+            ofp.common.table_feature_prop_next_tables,
+            ofp.common.table_feature_prop_next_tables_miss,
+            ofp.common.table_feature_prop_wildcards,
+            ofp.common.table_feature_prop_write_actions,
+            ofp.common.table_feature_prop_write_actions_miss,
+            ofp.common.table_feature_prop_write_setfield,
+            ofp.common.table_feature_prop_write_setfield_miss,
+            ofp.message.aggregate_stats_request,
+            ofp.message.flow_add,
+            ofp.message.flow_delete,
+            ofp.message.flow_delete_strict,
+            ofp.message.flow_modify,
+            ofp.message.flow_modify_strict,
+            ofp.message.flow_removed,
+            ofp.message.flow_stats_request,
+            ofp.message.group_desc_stats_reply,
+            ofp.message.group_mod,
+            ofp.message.group_stats_reply,
+            ofp.message.meter_features_stats_reply,
+            ofp.message.meter_stats_reply,
+            ofp.message.packet_in,
+            ofp.message.table_features_stats_reply,
+            ofp.message.table_features_stats_request,
+        ]
+        for klass in self.klasses:
+            def fn():
+                obj = klass()
+                if hasattr(obj, "xid"): obj.xid = 42
+                buf = obj.pack()
+                obj2 = klass.unpack(buf)
+                self.assertEquals(obj, obj2)
+            if klass in expected_failures:
+                self.assertRaises(Exception, fn)
+            else:
+                fn()
+
+    def test_show(self):
+        expected_failures = [
+            ofp.common.action_id,
+            ofp.common.action_id_bsn_mirror,
+            ofp.common.action_id_bsn_set_tunnel_dst,
+            ofp.common.action_id_copy_ttl_in,
+            ofp.common.action_id_copy_ttl_out,
+            ofp.common.action_id_dec_mpls_ttl,
+            ofp.common.action_id_dec_nw_ttl,
+            ofp.common.action_id_experimenter,
+            ofp.common.action_id_group,
+            ofp.common.action_id_header,
+            ofp.common.action_id_nicira_dec_ttl,
+            ofp.common.action_id_output,
+            ofp.common.action_id_pop_mpls,
+            ofp.common.action_id_pop_pbb,
+            ofp.common.action_id_pop_vlan,
+            ofp.common.action_id_push_mpls,
+            ofp.common.action_id_push_pbb,
+            ofp.common.action_id_push_vlan,
+            ofp.common.action_id_set_field,
+            ofp.common.action_id_set_mpls_ttl,
+            ofp.common.action_id_set_nw_ttl,
+            ofp.common.action_id_set_queue,
+            ofp.common.flow_stats_entry,
+            ofp.common.group_desc_stats_entry,
+            ofp.common.hello_elem,
+            ofp.common.hello_elem_header,
+            ofp.common.hello_elem_versionbitmap,
+            ofp.common.instruction,
+            ofp.common.instruction_apply_actions,
+            ofp.common.instruction_clear_actions,
+            ofp.common.instruction_experimenter,
+            ofp.common.instruction_goto_table,
+            ofp.common.instruction_header,
+            ofp.common.instruction_meter,
+            ofp.common.instruction_write_actions,
+            ofp.common.instruction_write_metadata,
+            ofp.common.match_v3,
+            ofp.common.meter_band,
+            ofp.common.meter_band_drop,
+            ofp.common.meter_band_dscp_remark,
+            ofp.common.meter_band_experimenter,
+            ofp.common.meter_band_header,
+            ofp.common.oxm_arp_op,
+            ofp.common.oxm_arp_op_masked,
+            ofp.common.oxm_arp_sha,
+            ofp.common.oxm_arp_sha_masked,
+            ofp.common.oxm_arp_spa,
+            ofp.common.oxm_arp_spa_masked,
+            ofp.common.oxm_arp_tha,
+            ofp.common.oxm_arp_tha_masked,
+            ofp.common.oxm_arp_tpa,
+            ofp.common.oxm_arp_tpa_masked,
+            ofp.common.oxm_eth_dst,
+            ofp.common.oxm_eth_dst_masked,
+            ofp.common.oxm_eth_src,
+            ofp.common.oxm_eth_src_masked,
+            ofp.common.oxm_eth_type,
+            ofp.common.oxm_eth_type_masked,
+            ofp.common.oxm_header,
+            ofp.common.oxm_icmpv4_code,
+            ofp.common.oxm_icmpv4_code_masked,
+            ofp.common.oxm_icmpv4_type,
+            ofp.common.oxm_icmpv4_type_masked,
+            ofp.common.oxm_icmpv6_code,
+            ofp.common.oxm_icmpv6_code_masked,
+            ofp.common.oxm_icmpv6_type,
+            ofp.common.oxm_icmpv6_type_masked,
+            ofp.common.oxm_in_phy_port,
+            ofp.common.oxm_in_phy_port_masked,
+            ofp.common.oxm_in_port,
+            ofp.common.oxm_in_port_masked,
+            ofp.common.oxm_ip_dscp,
+            ofp.common.oxm_ip_dscp_masked,
+            ofp.common.oxm_ip_ecn,
+            ofp.common.oxm_ip_ecn_masked,
+            ofp.common.oxm_ip_proto,
+            ofp.common.oxm_ip_proto_masked,
+            ofp.common.oxm_ipv4_dst,
+            ofp.common.oxm_ipv4_dst_masked,
+            ofp.common.oxm_ipv4_src,
+            ofp.common.oxm_ipv4_src_masked,
+            ofp.common.oxm_ipv6_dst,
+            ofp.common.oxm_ipv6_dst_masked,
+            ofp.common.oxm_ipv6_flabel,
+            ofp.common.oxm_ipv6_flabel_masked,
+            ofp.common.oxm_ipv6_nd_sll,
+            ofp.common.oxm_ipv6_nd_sll_masked,
+            ofp.common.oxm_ipv6_nd_target,
+            ofp.common.oxm_ipv6_nd_target_masked,
+            ofp.common.oxm_ipv6_nd_tll,
+            ofp.common.oxm_ipv6_nd_tll_masked,
+            ofp.common.oxm_ipv6_src,
+            ofp.common.oxm_ipv6_src_masked,
+            ofp.common.oxm_metadata,
+            ofp.common.oxm_metadata_masked,
+            ofp.common.oxm_mpls_label,
+            ofp.common.oxm_mpls_label_masked,
+            ofp.common.oxm_mpls_tc,
+            ofp.common.oxm_mpls_tc_masked,
+            ofp.common.oxm_sctp_dst,
+            ofp.common.oxm_sctp_dst_masked,
+            ofp.common.oxm_sctp_src,
+            ofp.common.oxm_sctp_src_masked,
+            ofp.common.oxm_tcp_dst,
+            ofp.common.oxm_tcp_dst_masked,
+            ofp.common.oxm_tcp_src,
+            ofp.common.oxm_tcp_src_masked,
+            ofp.common.oxm_udp_dst,
+            ofp.common.oxm_udp_dst_masked,
+            ofp.common.oxm_udp_src,
+            ofp.common.oxm_udp_src_masked,
+            ofp.common.oxm_vlan_pcp,
+            ofp.common.oxm_vlan_pcp_masked,
+            ofp.common.oxm_vlan_vid,
+            ofp.common.oxm_vlan_vid_masked,
+            ofp.common.table_feature_prop,
+            ofp.common.table_feature_prop_apply_actions,
+            ofp.common.table_feature_prop_apply_actions_miss,
+            ofp.common.table_feature_prop_apply_setfield,
+            ofp.common.table_feature_prop_apply_setfield_miss,
+            ofp.common.table_feature_prop_experimenter,
+            ofp.common.table_feature_prop_header,
+            ofp.common.table_feature_prop_instructions,
+            ofp.common.table_feature_prop_instructions_miss,
+            ofp.common.table_feature_prop_match,
+            ofp.common.table_feature_prop_next_tables,
+            ofp.common.table_feature_prop_next_tables_miss,
+            ofp.common.table_feature_prop_wildcards,
+            ofp.common.table_feature_prop_write_actions,
+            ofp.common.table_feature_prop_write_actions_miss,
+            ofp.common.table_feature_prop_write_setfield,
+            ofp.common.table_feature_prop_write_setfield_miss,
+            ofp.message.aggregate_stats_request,
+            ofp.message.flow_add,
+            ofp.message.flow_delete,
+            ofp.message.flow_delete_strict,
+            ofp.message.flow_modify,
+            ofp.message.flow_modify_strict,
+            ofp.message.flow_removed,
+            ofp.message.flow_stats_request,
+            ofp.message.packet_in,
+        ]
+        for klass in self.klasses:
+            def fn():
+                obj = klass()
+                if hasattr(obj, "xid"): obj.xid = 42
+                obj.show()
+            if klass in expected_failures:
+                self.assertRaises(Exception, fn)
+            else:
+                fn()
+
+if __name__ == '__main__':
+    unittest.main()
