diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/bugs/Issue168_GroupsCanHaveMessagesAndExtensions_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/bugs/Issue168_GroupsCanHaveMessagesAndExtensions_Test.java
new file mode 100644
index 0000000..088c366
--- /dev/null
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/bugs/Issue168_GroupsCanHaveMessagesAndExtensions_Test.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.bugs;
+
+import static com.google.eclipse.protobuf.junit.core.Setups.unitTestSetup;
+import static com.google.eclipse.protobuf.junit.core.XtextRule.createWith;
+
+import com.google.eclipse.protobuf.junit.core.*;
+
+import org.junit.*;
+
+/**
+ * Tests fix for <a href="http://code.google.com/p/protobuf-dt/issues/detail?id=168">Issue 168</a>.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class Issue168_GroupsCanHaveMessagesAndExtensions_Test {
+
+  @Rule public XtextRule xtext = createWith(unitTestSetup());
+  
+  // syntax = "proto2";
+  //
+  // message TopMessage {
+  //   message MidMessage {
+  //     message BottomMessage {
+  //       extensions 4 to max;
+  //     }
+  //
+  //     optional group BottomGroup = 1 {
+  //      extensions 4 to max;
+  //     }
+  //   }
+  //
+  //   optional group MidGroup = 2 {
+  //     message BottomMessage {
+  //       extensions 4 to max;
+  //     }
+  //
+  //     optional group BottomGroup = 3 {
+  //       extensions 4 to max;
+  //     }
+  //   }
+  // }
+  @Test public void should_recognize_messages_and_extensions_in_groups() {
+    // should not find syntax errors
+  }
+}
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 0a95feb..a620330 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
@@ -49,9 +49,6 @@
 MessageElement:
   Option | Extensions | ComplexType | MessageField | MessageExtension;
 
-Extensions:
-  'extensions' ranges+=Range (',' ranges+=Range)* ';';
-
 Range:
   from=LONG ('to' to=RangeMax)?;
 
@@ -65,7 +62,10 @@
   '}' (';')?;
 
 GroupElement:
-  Option | IndexedElement | Enum | MessageExtension;
+  Option | IndexedElement | ComplexType | MessageExtension | Extensions;
+
+Extensions:
+  'extensions' ranges+=Range (',' ranges+=Range)* ';';
 
 MessageField:
   =>modifier=Modifier type=TypeLink name=Name '=' index=(LONG | HEX)
