diff --git a/wireshark_gen/__init__.py b/wireshark_gen/__init__.py
index 5c02e06..e92ebf2 100644
--- a/wireshark_gen/__init__.py
+++ b/wireshark_gen/__init__.py
@@ -55,6 +55,17 @@
     else:
         return "read_" + m.oftype.replace(')', '').replace('(', '_')
 
+def get_peeker(version, cls, m):
+    """
+    Decide on a peeker function to use for the given field
+    """
+    ofproto = loxi_globals.ir[version]
+    enum = ofproto.enum_by_name(m.oftype)
+    if enum and 'wire_type' in enum.params:
+        return "peek_" + enum.params['wire_type']
+    else:
+        return "peek_" + m.oftype.replace(')', '').replace('(', '_')
+
 def get_field_info(version, cls, name, oftype):
     """
     Decide on a Wireshark type and base for a given field.
diff --git a/wireshark_gen/templates/_ofclass_dissector.lua b/wireshark_gen/templates/_ofclass_dissector.lua
index 0eb45eb..39c7c41 100644
--- a/wireshark_gen/templates/_ofclass_dissector.lua
+++ b/wireshark_gen/templates/_ofclass_dissector.lua
@@ -26,7 +26,7 @@
 :: # under the EPL.
 ::
 :: from loxi_ir import *
-:: from wireshark_gen import make_field_name, get_reader
+:: from wireshark_gen import make_field_name, get_reader, get_peeker
 :: attrs = []
 :: if ofclass.virtual: attrs.append("virtual")
 :: if ofclass.superclass: attrs.append("child")
@@ -46,7 +46,15 @@
 :: #endif
 :: field_name = make_field_name(version, ofclass.name, m.name)
 :: reader_name = get_reader(version, ofclass, m)
+:: peeker_name = get_peeker(version, ofclass, m)
+:: if (field_name == discriminator_name):
+    return ${peeker_name}(reader, ${version.wire_version}, subtree, '${field_name}')
+::    break
+:: else:
     ${reader_name}(reader, ${version.wire_version}, subtree, '${field_name}')
+:: #endif
 :: #endfor
+:: if not ofclass.virtual:
     return '${ofclass.name}'
+:: #endif
 end
diff --git a/wireshark_gen/templates/_oftype_readers.lua b/wireshark_gen/templates/_oftype_readers.lua
index 9a5e4fa..e9eb9fa 100644
--- a/wireshark_gen/templates/_oftype_readers.lua
+++ b/wireshark_gen/templates/_oftype_readers.lua
@@ -51,6 +51,32 @@
     end
 end
 
+function peek_scalar(reader, subtree, field_name, length)
+    return reader.read(length):uint()
+end
+
+function peek_uint8_t(reader, version, subtree, field_name)
+    return peek_scalar(reader, subtree, field_name, 1)
+end
+
+function peek_uint16_t(reader, version, subtree, field_name)
+    return peek_scalar(reader, subtree, field_name, 2)
+end
+
+function peek_uint32_t(reader, version, subtree, field_name)
+    return peek_scalar(reader, subtree, field_name, 4)
+end
+
+function peek_uint64_t(reader, version, subtree, field_name)
+    return peek_scalar(reader, subtree, field_name, 8)
+end
+
+function peek_of_octets_t(reader, version, subtree, field_name)
+    if not reader.is_empty() then
+        return reader.peek_all()
+    end
+end
+
 function read_list_of_hello_elem_t(reader, version, subtree, field_name)
     -- TODO
 end
@@ -105,6 +131,14 @@
     end
 end
 
+function peek_of_fm_cmd_t(reader, version, subtree, field_name)
+    if version == 1 then
+        return peek_scalar(reader, subtree, field_name, 2)
+    else
+        return peek_scalar(reader, subtree, field_name, 1)
+    end
+end
+
 function read_list_of_action_t(reader, version, subtree, field_name)
     if reader.is_empty() then
         return
