diff --git a/plyxproto/model.py b/plyxproto/model.py
index 3f33704..9cbdccc 100644
--- a/plyxproto/model.py
+++ b/plyxproto/model.py
@@ -83,7 +83,7 @@
 class FieldDefinition(SourceElement):
     def __init__(self, field_modifier, ftype, name, fieldId, fieldDirective, linespan=None, lexspan=None, p=None):
         super(FieldDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
-        self._fields += ['field_modifier', 'ftype', 'name', 'fieldId', 'fieldDirective']
+        self._fields += ['field_modifier', 'ftype', 'name', 'fieldId', 'policy', 'fieldDirective']
         self.name = name
         Base.p(self.name, self)
         self.field_modifier = field_modifier
@@ -91,6 +91,9 @@
         self.ftype = ftype
         Base.p(self.ftype, self)
         self.fieldId = fieldId
+        Base.p(self.policy, self)
+        self.policy = policy
+
         Base.p(self.fieldId, self)
         self.fieldDirective = fieldDirective
         Base.p(self.fieldDirective, self)
@@ -162,13 +165,19 @@
             visitor.visit_LinkSpec_post(self)
 
 class MessageDefinition(SourceElement):
-    def __init__(self, name, bases, body, linespan=None, lexspan=None, p=None):
+    def __init__(self, name, policy, bases, body, linespan=None, lexspan=None, p=None):
         super(MessageDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
-        self._fields += ['name', 'bases', 'body']
+        self._fields += ['name', 'policy', 'bases', 'body']
+
         self.name = name
         Base.p(self.name, self)
+
+        self.policy = policy
+        Base.p(self.policy, self)
+
         self.bases = bases
         Base.p(self.bases, self)
+
         self.body = body
         Base.p(self.body, self)
 
diff --git a/plyxproto/parser.py b/plyxproto/parser.py
index 443ebb1..6736e8a 100755
--- a/plyxproto/parser.py
+++ b/plyxproto/parser.py
@@ -171,6 +171,14 @@
         p[0] = FieldDirective(Name(LU.i(p, 1)), LU.i(p, 3))
         self.lh.set_parse_object(p[0], p)
 
+    def p_policy_opt_explicit(self, p):
+        '''policy_opt : DOUBLECOLON NAME'''
+        p[0] = p[2]
+
+
+    def p_policy_opt_empty(self, p):
+        '''policy_opt : empty'''
+        p[0] = None
 
     def p_csv_expr(self, p):
         '''csv_expr : LPAR csv RPAR'''
@@ -266,8 +274,8 @@
 
     # Root of the field declaration.
     def p_field_definition(self, p):
-        '''field_definition : field_modifier field_type field_name EQ field_id field_directives SEMI'''
-        p[0] = FieldDefinition(LU.i(p,1), LU.i(p,2), LU.i(p, 3), LU.i(p,5), LU.i(p,6))
+        '''field_definition : field_modifier field_type field_name policy_opt EQ field_id field_directives SEMI'''
+        p[0] = FieldDefinition(LU.i(p,1), LU.i(p,2), LU.i(p, 3), LU.i(p,4), LU.i(p,6), LU.i(p,7))
         self.lh.set_parse_object(p[0], p)
 
     # Root of the enum field declaration.
@@ -358,8 +366,8 @@
     # Root of the message declaration.
     # message_definition = MESSAGE_ - ident("messageId") + LBRACE + message_body("body") + RBRACE
     def p_message_definition(self, p):
-        '''message_definition : MESSAGE NAME csv_expr LBRACE message_body RBRACE'''
-        p[0] = MessageDefinition(Name(LU.i(p, 2)), LU.i(p, 3), LU.i(p,5))
+        '''message_definition : MESSAGE NAME policy_opt csv_expr LBRACE message_body RBRACE'''
+        p[0] = MessageDefinition(Name(LU.i(p, 2)), LU.i(p,3), LU.i(p, 4), LU.i(p,6))
         self.lh.set_parse_object(p[0], p)
 
     # method_definition ::= 'rpc' ident '(' [ ident ] ')' 'returns' '(' [ ident ] ')' ';'
