diff --git a/plyproto/model.py b/plyproto/model.py
index 4b184fe..e94566c 100644
--- a/plyproto/model.py
+++ b/plyproto/model.py
@@ -199,15 +199,21 @@
             self.v(self.name, visitor)
 
 class LinkDefinition(SourceElement):
-    def __init__(self, link_type, src_port, name, dst_port, linespan=None, lexspan=None, p=None):
+    def __init__(self, link_type, src_port, name, through, dst_port, linespan=None, lexspan=None, p=None):
         super(LinkDefinition, self).__init__(linespan=linespan, lexspan=lexspan, p=p)
-        self._fields += ['link_type', 'src_port', 'name', 'dst_port']
+        self._fields += ['link_type', 'src_port', 'name', 'dst_port', 'through']
         self.link_type = link_type
         Base.p(self.link_type, self)
+
         self.src_port = src_port
         Base.p(self.src_port, self)
+
         self.name = name
         Base.p(self.name, self)
+
+        self.through = through
+        Base.p(self.through, self)
+
         self.dst_port = dst_port
         Base.p(self.dst_port, self)
 
diff --git a/plyproto/parser.py b/plyproto/parser.py
index 585d0b9..2051c8f 100755
--- a/plyproto/parser.py
+++ b/plyproto/parser.py
@@ -13,19 +13,18 @@
 class ProtobufLexer(object):
     keywords = ('double', 'float', 'int32', 'int64', 'uint32', 'uint64', 'sint32', 'sint64',
                 'fixed32', 'fixed64', 'sfixed32', 'sfixed64', 'bool', 'string', 'bytes',
-                'message', 'required', 'optional', 'repeated', 'enum', 'extensions', 'max', 'extends', 'extend',
+                'message', 'required', 'optional', 'repeated', 'enum', 'extensions', 'max',  'extend',
                 'to', 'package', '_service', 'rpc', 'returns', 'true', 'false', 'option', 'import', 'manytoone', 'manytomany', 'onetoone')
 
     tokens = [
         'NAME',
-        'PLUS',
         'NUM',
         'STRING_LITERAL',
-        'LINE_COMMENT', 'BLOCK_COMMENT',
+        #'LINE_COMMENT', 'BLOCK_COMMENT',
 
         'LBRACE', 'RBRACE', 'LBRACK', 'RBRACK',
         'LPAR', 'RPAR', 'EQ', 'SEMI', 'DOT',
-        'ARROW', 'COLON', 'COMMA',
+        'ARROW', 'COLON', 'COMMA', 'SLASH',
         'STARTTOKEN'
 
     ] + [k.upper() for k in keywords]
@@ -45,18 +44,18 @@
     t_RBRACK = '\\]'
     t_LPAR = '\\('
     t_RPAR = '\\)'
-    t_PLUS = '\\+'
     t_EQ = '='
     t_SEMI = ';'
     t_ARROW = '\\-\\>'
     t_COLON = '\\:'
+    t_SLASH = '\\/'
     t_COMMA = '\\,'
     t_DOT = '\\.'
     t_ignore = ' \t\f'
     t_STARTTOKEN = '\\+'
 
     def t_NAME(self, t):
-        '[A-Za-z_$][A-Za-z0-9_$]*'
+        '[A-Za-z_$][A-Za-z0-9_+$]*'
         if t.value in ProtobufLexer.keywords:
             #print "type: %s val %s t %s" % (t.type, t.value, t)
             t.type = t.value.upper()
@@ -247,9 +246,9 @@
 
     # Hack for cases when there is a field named 'message' or 'max'
     def p_fieldName(self, p):
-        '''field_name : NAME
+        '''field_name : STARTTOKEN
+                      | NAME
                       | MESSAGE
-                      | PLUS
                       | MAX'''
         p[0] = Name(LU.i(p,1))
         self.lh.set_parse_object(p[0], p)
@@ -266,6 +265,15 @@
         self.lh.set_parse_object(p[0], p)
         p[0].deriveLex()
 
+    def p_slash_name(self, p):
+        '''slash_name : SLASH NAME'''
+        p[0] = p[2]
+        #self.lh.set_parse_object(p[0], p)
+
+    def p_slash_name2(self, p):
+        '''slash_name : empty'''
+        p[0] = None
+
     def p_colon_fieldname(self, p):
         '''colon_fieldname : COLON field_name'''
         p[0] = p[2]
@@ -277,10 +285,10 @@
 
     # TODO: Add directives to link definition
     def p_link_definition(self, p):
-        '''link_definition : field_modifier link_type field_name ARROW NAME colon_fieldname EQ field_id field_directives SEMI'''
+        '''link_definition : field_modifier link_type field_name ARROW NAME slash_name colon_fieldname EQ field_id field_directives SEMI'''
         p[0] = LinkSpec(
-                FieldDefinition(LU.i(p,1), Name('int32'), LU.i(p, 3), LU.i(p, 8), [FieldDirective(Name('type'), Name('link')), FieldDirective(Name('model'),LU.i(p, 5))] + srcPort(LU.i(p,6)) + LU.i(p,9)),
-                LinkDefinition(LU.i(p,2), LU.i(p,3), LU.i(p,5), LU.i(p,6)))
+                FieldDefinition(LU.i(p,1), Name('int32'), LU.i(p, 3), LU.i(p, 9), [FieldDirective(Name('type'), Name('link')), FieldDirective(Name('model'),LU.i(p, 5))] + srcPort(LU.i(p,7)) + LU.i(p,10)),
+                LinkDefinition(LU.i(p,2), LU.i(p,3), LU.i(p,5), LU.i(p,6), LU.i(p,7)))
 
         self.lh.set_parse_object(p[0], p)
 
