diff --git a/com.google.eclipse.protobuf.feature/feature.xml b/com.google.eclipse.protobuf.feature/feature.xml
index c4de350..4fac131 100644
--- a/com.google.eclipse.protobuf.feature/feature.xml
+++ b/com.google.eclipse.protobuf.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.google.eclipse.protobuf"
       label="%featureName"
-      version="1.4.3.qualifier"
+      version="1.5.0.qualifier"
       provider-name="%providerName">
 
    <description url="https://code.google.com/p/protobuf-dt/">
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/model/util/IndexedElements_calculateNewIndexFor_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/model/util/IndexedElements_calculateNewIndexFor_Test.java
index afade5d..db7b19a 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/model/util/IndexedElements_calculateNewIndexFor_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/model/util/IndexedElements_calculateNewIndexFor_Test.java
@@ -40,7 +40,7 @@
   @Test public void should_return_one_for_first_and_only_field() {
     MessageField field = xtext.find("name", MessageField.class);
     long index = indexedElements.calculateNewIndexFor(field);
-    assertThat(index, equalTo(1L));
+    assertThat(index, equalTo(3L));
   }
 
   // syntax = "proto2";
@@ -52,6 +52,6 @@
   @Test public void should_return_max_index_value_plus_one_for_new_field() {
     MessageField field = xtext.find("id", MessageField.class);
     long index = indexedElements.calculateNewIndexFor(field);
-    assertThat(index, equalTo(7L));
+    assertThat(index, equalTo(9L));
   }
 }
diff --git a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
index c71eae4..67642e8 100644
--- a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
+++ b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 1.4.3.qualifier
+Bundle-Version: 1.5.1.qualifier
 Bundle-SymbolicName: com.google.eclipse.protobuf.ui; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: com.google.eclipse.protobuf;visibility:=reexport,
diff --git a/com.google.eclipse.protobuf/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf/META-INF/MANIFEST.MF
index 2476c62..7a531b1 100644
--- a/com.google.eclipse.protobuf/META-INF/MANIFEST.MF
+++ b/com.google.eclipse.protobuf/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Eclipse-ExtensibleAPI: true
 Bundle-Name: %Bundle-Name
 Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 1.4.3.qualifier
+Bundle-Version: 1.5.1.qualifier
 Bundle-SymbolicName: com.google.eclipse.protobuf; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: com.ibm.icu;resolution:=optional,
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
index 57722aa..35f14b9 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
@@ -64,16 +64,22 @@
   elements+=GroupElement*
   '}' (';')?;
 
+UnmodifiedGroup returns Group:
+  =>'group' name=Name '=' index=(LONG | HEX)
+  ('[' (fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)*) ']')? '{'
+  elements+=GroupElement*
+  '}' (';')?;
+
 GroupElement:
   Option | IndexedElement | ComplexType | TypeExtension | Extensions;
-  
+
 OneOf:
-  'oneof' name=Name '{'
-  elements+=OneOfElement*
+  (isRepeated?='repeated')? 'oneof' name=Name '{'
+  elements+=OneOfElement+
   '}' (';')?;
-  
+
 OneOfElement returns MessageElement:
-  Extensions | UnmodifiedMessageField;
+  Extensions | UnmodifiedGroup | UnmodifiedMessageField;
 
 Extensions:
   'extensions' ranges+=Range (',' ranges+=Range)* (';')+;
@@ -87,7 +93,7 @@
   ('[' (fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)*)? ']')? (';')+;
 
 enum Modifier:
-  required | optional | repeated;
+  optional | required | repeated;
 
 TypeLink:
   ScalarTypeLink | ComplexTypeLink;
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java
index 26c8496..bae304a 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java
@@ -8,23 +8,10 @@
  */
 package com.google.eclipse.protobuf;
 
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.xtext.conversion.IValueConverterService;
-import org.eclipse.xtext.naming.IQualifiedNameConverter;
-import org.eclipse.xtext.naming.IQualifiedNameProvider;
-import org.eclipse.xtext.parser.IAstFactory;
-import org.eclipse.xtext.parser.antlr.ISyntaxErrorMessageProvider;
-import org.eclipse.xtext.resource.IGlobalServiceProvider;
-import org.eclipse.xtext.resource.XtextResource;
-import org.eclipse.xtext.resource.XtextResourceSet;
-import org.eclipse.xtext.scoping.impl.ImportUriResolver;
-import org.eclipse.xtext.validation.IResourceValidator;
-
 import com.google.eclipse.protobuf.conversion.ProtobufTerminalConverters;
 import com.google.eclipse.protobuf.linking.ProtobufResource;
 import com.google.eclipse.protobuf.naming.ProtobufQualifiedNameConverter;
 import com.google.eclipse.protobuf.naming.ProtobufQualifiedNameProvider;
-import com.google.eclipse.protobuf.parser.ProtobufAstFactory;
 import com.google.eclipse.protobuf.resource.FastXtextResourceSet;
 import com.google.eclipse.protobuf.resource.GlobalResourceServiceProvider;
 import com.google.eclipse.protobuf.scoping.ExtensionRegistryProvider;
@@ -33,6 +20,17 @@
 import com.google.eclipse.protobuf.validation.ProtobufSyntaxErrorMessageProvider;
 import com.google.inject.Binder;
 
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.parser.antlr.ISyntaxErrorMessageProvider;
+import org.eclipse.xtext.resource.IGlobalServiceProvider;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.scoping.impl.ImportUriResolver;
+import org.eclipse.xtext.validation.IResourceValidator;
+
 /**
  * Use this class to register components to be used at runtime / without the Equinox extension registry.
  */
@@ -49,10 +47,6 @@
     return ProtobufQualifiedNameConverter.class;
   }
   
-  @Override public Class<? extends IAstFactory> bindIAstFactory() {
-    return ProtobufAstFactory.class;
-  }
-
   @Override public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
     return ProtobufQualifiedNameProvider.class;
   }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/parser/ProtobufAstFactory.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/parser/ProtobufAstFactory.java
deleted file mode 100644
index dc8dc4f..0000000
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/parser/ProtobufAstFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.google.eclipse.protobuf.parser;
-import com.google.eclipse.protobuf.protobuf.MessageField;
-import com.google.eclipse.protobuf.protobuf.Modifier;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.xtext.conversion.ValueConverterException;
-import org.eclipse.xtext.nodemodel.INode;
-import org.eclipse.xtext.parser.DefaultEcoreElementFactory;
-
-public class ProtobufAstFactory extends DefaultEcoreElementFactory {
-  private static final String UNMODIFIEDMESSAGEFIELD_RULE = "UnmodifiedMessageField";
-  private static final String ONEOFELEMENT_RULE = "OneOfElement";
-
-  @Override
-  public void add(EObject object, String feature, Object value, String ruleName, INode node)
-      throws ValueConverterException {
-    // TODO(foremans): Auto-generated method stub
-    super.add(object, feature, value, ruleName, node);
-    if (ONEOFELEMENT_RULE.equals(ruleName) && value instanceof MessageField) {
-      MessageField field = (MessageField) value;
-      field.setModifier(Modifier.OPTIONAL);
-    }
-  }
-  
-  @Override
-  public void set(EObject object, String feature, Object value, String ruleName, INode node)
-      throws ValueConverterException {
-    super.set(object, feature, value, ruleName, node);
-    if (UNMODIFIEDMESSAGEFIELD_RULE.equals(ruleName)) {
-      MessageField field = (MessageField) object;
-      field.setModifier(Modifier.OPTIONAL);
-    }
-  }
-}
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java
index 82a7ed5..38bc64e 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java
@@ -75,6 +75,9 @@
     }
     
     EObject container = e.eContainer();
+    if (container instanceof OneOf) {
+      container = container.eContainer();  
+    }
     if (container instanceof Message) {
       Message message = (Message) container;
       Iterable<MessageElement> elements = message.getElements();
