diff --git a/py_gen/codegen.py b/py_gen/codegen.py
index e552d61..d6d8b32 100644
--- a/py_gen/codegen.py
+++ b/py_gen/codegen.py
@@ -217,4 +217,4 @@
     util.render_template(out, 'pp.py')
 
 def generate_util(out, name, version):
-    util.render_template(out, 'util.py')
+    util.render_template(out, 'util.py', version=version)
diff --git a/py_gen/oftype.py b/py_gen/oftype.py
index 3717036..3f37f57 100644
--- a/py_gen/oftype.py
+++ b/py_gen/oftype.py
@@ -55,7 +55,15 @@
         elif self.base == 'of_ipv6_t':
             v = repr('\x00' * 16)
         elif self.base == 'of_wc_bmap_t':
-            v = 'const.OFPFW_ALL'
+            if self.version in [1,2]:
+                v = 'const.OFPFW_ALL'
+            else:
+                v = 0
+        elif self.base == "of_match_bmap_t":
+            if self.version in [1,2]:
+                v = 'const.OFPFW_ALL'
+            else:
+                v = 0
         elif self.base in ['of_octets_t', 'of_port_name_t', 'of_table_name_t',
                            'of_desc_str_t', 'of_serial_num_t']:
             v = '""'
diff --git a/py_gen/templates/_pretty_print.py b/py_gen/templates/_pretty_print.py
index 5709227..86cb237 100644
--- a/py_gen/templates/_pretty_print.py
+++ b/py_gen/templates/_pretty_print.py
@@ -48,7 +48,7 @@
                 q.text(util.pretty_mac(self.${m.name}))
 :: elif m.oftype.base == 'uint32_t' and m.name.startswith("ipv4"):
                 q.text(util.pretty_ipv4(self.${m.name}))
-:: elif m.oftype.base == 'of_wc_bmap_t':
+:: elif m.oftype.base == 'of_wc_bmap_t' and version in [1,2]:
                 q.text(util.pretty_wildcards(self.${m.name}))
 :: elif m.oftype.base == 'of_port_no_t':
                 q.text(util.pretty_port(self.${m.name}))
diff --git a/py_gen/templates/util.py b/py_gen/templates/util.py
index f2f7a96..397c184 100644
--- a/py_gen/templates/util.py
+++ b/py_gen/templates/util.py
@@ -52,6 +52,7 @@
         set_flags.append("%#x" % v)
     return '|'.join(set_flags) or '0'
 
+:: if version in [1,2]:
 def pretty_wildcards(v):
     if v == const.OFPFW_ALL:
         return 'OFPFW_ALL'
@@ -60,6 +61,7 @@
                   'OFPFW_NW_SRC_MASK', 'OFPFW_NW_DST_MASK', 'OFPFW_DL_VLAN_PCP',
                   'OFPFW_NW_TOS']
     return pretty_flags(v, flag_names)
+:: #endif
 
 def pretty_port(v):
     named_ports = [(k,v2) for (k,v2) in const.__dict__.iteritems() if k.startswith('OFPP_')]
diff --git a/py_gen/tests/of11.py b/py_gen/tests/of11.py
index 2fdec9e..dd76b0d 100644
--- a/py_gen/tests/of11.py
+++ b/py_gen/tests/of11.py
@@ -69,9 +69,7 @@
         self.klasses.sort(key=lambda x: str(x))
 
     def test_serialization(self):
-        expected_failures = [
-            ofp.common.table_stats_entry,
-        ]
+        expected_failures = []
         for klass in self.klasses:
             def fn():
                 obj = klass()
@@ -85,8 +83,7 @@
                 fn()
 
     def test_show(self):
-        expected_failures = [
-        ]
+        expected_failures = []
         for klass in self.klasses:
             def fn():
                 obj = klass()
diff --git a/py_gen/tests/of12.py b/py_gen/tests/of12.py
index a176253..b557730 100644
--- a/py_gen/tests/of12.py
+++ b/py_gen/tests/of12.py
@@ -157,9 +157,7 @@
         self.klasses.sort(key=lambda x: str(x))
 
     def test_serialization(self):
-        expected_failures = [
-            ofp.common.table_stats_entry,
-        ]
+        expected_failures = []
         for klass in self.klasses:
             def fn():
                 obj = klass()
@@ -173,9 +171,7 @@
                 fn()
 
     def test_show(self):
-        expected_failures = [
-            ofp.common.table_stats_entry,
-        ]
+        expected_failures = []
         for klass in self.klasses:
             def fn():
                 obj = klass()
