diff --git a/src/python/loxi/of12/util.py b/src/python/loxi/of12/util.py
index b908451..59be12e 100644
--- a/src/python/loxi/of12/util.py
+++ b/src/python/loxi/of12/util.py
@@ -5,9 +5,13 @@
 # Automatically generated by LOXI from template util.py
 # Do not modify
 
+import struct
 import loxi
 import const
-import struct
+import common
+import action
+import instruction
+import oxm
 
 def pretty_mac(mac):
     return ':'.join(["%02x" % x for x in mac])
@@ -66,9 +70,6 @@
 def unpack_match_bmap(reader):
     return reader.read("!Q")[0]
 
-def pack_list(values):
-    return "".join([x.pack() for x in values])
-
 MASK64 = (1 << 64) - 1
 
 def pack_bitmap_128(value):
@@ -88,3 +89,13 @@
         i += 1
         x >>= 1
     return value
+
+def unpack_list_hello_elem(reader):
+    def deserializer(reader):
+        typ, length, = reader.peek('!HH')
+        reader = reader.slice(length)
+        try:
+            return common.hello_elem.unpack(reader)
+        except loxi.ProtocolError:
+            return None
+    return [x for x in loxi.generic_util.unpack_list(reader, deserializer) if x != None]
