diff --git a/loxi_front_end/frontend.py b/loxi_front_end/frontend.py
index 256ae70..7d0424f 100644
--- a/loxi_front_end/frontend.py
+++ b/loxi_front_end/frontend.py
@@ -33,10 +33,11 @@
 class InputError(Exception):
     pass
 
-# TODO handle type members
 def create_member(m_ast):
     if m_ast[0] == 'pad':
         return OFPadMember(length=m_ast[1])
+    elif m_ast[0] == 'type':
+        return OFTypeMember(name=m_ast[2], oftype=m_ast[1], value=m_ast[3])
     elif m_ast[0] == 'data':
         if m_ast[2] == 'length' or m_ast[2] == 'len': # Should be moved to parser
             return OFLengthMember(name=m_ast[2], oftype=m_ast[1])
diff --git a/loxi_front_end/parser.py b/loxi_front_end/parser.py
index ab6bfc4..503a05a 100644
--- a/loxi_front_end/parser.py
+++ b/loxi_front_end/parser.py
@@ -51,8 +51,9 @@
 
 # Structs
 pad_member = P.Group(kw('pad') - s('(') - integer - s(')'))
+type_member = P.Group(tag('type') + any_type + identifier + s('==') + integer)
 data_member = P.Group(tag('data') + any_type - identifier)
-struct_member = pad_member | data_member;
+struct_member = pad_member | type_member | data_member;
 struct = kw('struct') - identifier - s('{') + \
          P.Group(P.ZeroOrMore(struct_member - s(';'))) + \
          s('}') - s(';')
diff --git a/utest/test_frontend.py b/utest/test_frontend.py
index 2119363..1f284b0 100755
--- a/utest/test_frontend.py
+++ b/utest/test_frontend.py
@@ -52,7 +52,7 @@
 
 struct of_echo_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 3;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -86,7 +86,7 @@
             ['metadata', 'version', '2'],
             ['struct', 'of_echo_reply', [
                 ['data', 'uint8_t', 'version'],
-                ['data', 'uint8_t', 'type'],
+                ['type', 'uint8_t', 'type', 3],
                 ['data', 'uint16_t', 'length'],
                 ['data', 'uint32_t', 'xid'],
                 ['data', 'of_octets_t', 'data']]],
@@ -107,7 +107,7 @@
         expected_classes = [
             OFClass('of_echo_reply', [
                 OFDataMember('version', 'uint8_t'), # XXX
-                OFDataMember('type', 'uint8_t'), # XXX
+                OFTypeMember('type', 'uint8_t', 3),
                 OFLengthMember('length', 'uint16_t'),
                 OFDataMember('xid', 'uint32_t'),
                 OFDataMember('data', 'of_octets_t')]),
diff --git a/utest/test_parser.py b/utest/test_parser.py
index a4a0e63..cb22a9c 100755
--- a/utest/test_parser.py
+++ b/utest/test_parser.py
@@ -83,7 +83,7 @@
         self.assertEquals(ast,
             [['struct', 'foo', [['data', 'list(of_action_t)', 'bar']]]])
 
-    def test_pad_type(self):
+    def test_pad_member(self):
         src = """\
 struct foo {
     pad(1);
@@ -93,6 +93,16 @@
         self.assertEquals(ast,
             [['struct', 'foo', [['pad', 1]]]])
 
+    def test_type_member(self):
+        src = """\
+struct foo {
+    uint16_t foo == 0x10;
+};
+"""
+        ast = parser.parse(src)
+        self.assertEquals(ast,
+            [['struct', 'foo', [['type', 'uint16_t', 'foo', 0x10]]]])
+
 class EnumTests(unittest.TestCase):
     def test_empty(self):
         src = """\
