diff --git a/py_gen/oftype.py b/py_gen/oftype.py
index 7719432..3717036 100644
--- a/py_gen/oftype.py
+++ b/py_gen/oftype.py
@@ -148,6 +148,8 @@
             return self._gen_string_unpack_expr(reader_expr, 256)
         elif self.base == 'of_meter_features_t':
             return 'common.meter_features.unpack(%s)' % (reader_expr)
+        elif self.base == 'of_list_instruction_t':
+            return 'instruction.unpack_list(%s)' % (reader_expr)
         elif utils.class_is_list(self.base):
             element_cls = utils.list_to_entry_type(self.base)[:-2]
             if ((element_cls, self.version) in of_g.is_fixed_length) \
diff --git a/py_gen/templates/common.py b/py_gen/templates/common.py
index 1ab91cf..1ab2f68 100644
--- a/py_gen/templates/common.py
+++ b/py_gen/templates/common.py
@@ -32,6 +32,9 @@
 import sys
 import struct
 import action
+:: if version >= 2:
+import instruction # for unpack_list
+:: #endif
 :: if version >= 4:
 import meter_band # for unpack_list
 :: #endif
diff --git a/py_gen/templates/message.py b/py_gen/templates/message.py
index 228d2d0..196cd6c 100644
--- a/py_gen/templates/message.py
+++ b/py_gen/templates/message.py
@@ -36,6 +36,9 @@
 import const
 import common
 import action # for unpack_list
+:: if version >= 2:
+import instruction # for unpack_list
+:: #endif
 :: if version >= 4:
 import meter_band # for unpack_list
 :: #endif
diff --git a/py_gen/tests/of11.py b/py_gen/tests/of11.py
index 3b1b584..2fdec9e 100644
--- a/py_gen/tests/of11.py
+++ b/py_gen/tests/of11.py
@@ -70,13 +70,7 @@
 
     def test_serialization(self):
         expected_failures = [
-            ofp.common.flow_stats_entry,
             ofp.common.table_stats_entry,
-            ofp.message.flow_add,
-            ofp.message.flow_modify,
-            ofp.message.flow_modify_strict,
-            ofp.message.flow_delete,
-            ofp.message.flow_delete_strict,
         ]
         for klass in self.klasses:
             def fn():
diff --git a/py_gen/tests/of12.py b/py_gen/tests/of12.py
index 92dbe70..a176253 100644
--- a/py_gen/tests/of12.py
+++ b/py_gen/tests/of12.py
@@ -158,13 +158,7 @@
 
     def test_serialization(self):
         expected_failures = [
-            ofp.common.flow_stats_entry,
             ofp.common.table_stats_entry,
-            ofp.message.flow_add,
-            ofp.message.flow_modify,
-            ofp.message.flow_modify_strict,
-            ofp.message.flow_delete,
-            ofp.message.flow_delete_strict,
         ]
         for klass in self.klasses:
             def fn():
diff --git a/py_gen/tests/of13.py b/py_gen/tests/of13.py
index 6ec9897..3c9772f 100644
--- a/py_gen/tests/of13.py
+++ b/py_gen/tests/of13.py
@@ -395,8 +395,59 @@
     ## Flow-mods
 
     def test_flow_add(self):
-        # TODO
-        pass
+        obj = ofp.message.flow_add(
+            xid=0x12345678,
+            cookie=0xFEDCBA9876543210,
+            cookie_mask=0xFF00FF00FF00FF00,
+            table_id=3,
+            idle_timeout=5,
+            hard_timeout=10,
+            priority=6000,
+            buffer_id=50,
+            out_port=6,
+            out_group=8,
+            flags=0,
+            match=ofp.match(oxm_list=[]),
+            instructions=[
+                ofp.instruction.goto_table(table_id=4),
+                ofp.instruction.goto_table(table_id=7)])
+        buf = ''.join([
+            '\x04', '\x0e', # version, type
+            '\x00\x48', # length
+            '\x12\x34\x56\x78', # xid
+
+            '\xfe\xdc\xba\x98\x76\x54\x32\x10', # cookie
+
+            '\xff\x00\xff\x00\xff\x00\xff\x00', # cookie_mask
+
+            '\x03', # table_id
+            '\x00', # _command
+            '\x00\x05', # idle_timeout
+            '\x00\x0a', # hard_timeout
+            '\x17\x70', # priority
+
+            '\x00\x00\x00\x32', # buffer_id
+            '\x00\x00\x00\x06', # out_port
+
+            '\x00\x00\x00\x08', # out_group
+            '\x00\x00', # flags
+            '\x00' * 2, # pad
+
+            '\x00\x01', # match.type
+            '\x00\x04', # match.length
+            '\x00' * 4, # pad
+
+            '\x00\x01', # instructions[0].type
+            '\x00\x08', # instructions[0].length
+            '\x04', # instructions[0].table_id
+            '\x00' * 3, # pad
+
+            '\x00\x01', # instructions[1].type
+            '\x00\x08', # instructions[1].length
+            '\x07', # instructions[1].table_id
+            '\x00' * 3, # pad
+        ])
+        test_serialization(obj, buf)
 
     def test_flow_modify(self):
         # TODO
@@ -934,19 +985,11 @@
 
     def test_serialization(self):
         expected_failures = [
-            ofp.common.flow_stats_entry,
             ofp.common.table_feature_prop_apply_actions,
             ofp.common.table_feature_prop_apply_actions_miss,
-            ofp.common.table_feature_prop_instructions,
-            ofp.common.table_feature_prop_instructions_miss,
             ofp.common.table_feature_prop_write_actions,
             ofp.common.table_feature_prop_write_actions_miss,
             ofp.common.table_features,
-            ofp.message.flow_add,
-            ofp.message.flow_delete,
-            ofp.message.flow_delete_strict,
-            ofp.message.flow_modify,
-            ofp.message.flow_modify_strict,
             ofp.message.table_features_stats_reply,
             ofp.message.table_features_stats_request,
         ]
