diff --git a/com.google.eclipse.protobuf.feature/feature.xml b/com.google.eclipse.protobuf.feature/feature.xml
new file mode 100644
index 0000000..7be8049
--- /dev/null
+++ b/com.google.eclipse.protobuf.feature/feature.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="com.google.eclipse.protobuf"
+      label="Protocol Buffer Editor"
+      version="1.0.1.qualifier"
+      provider-name="Google, Inc.">
+
+   <description url="https://code.google.com/p/protobuf-dt/">
+      An Eclipse-based Development Environment for Protocol Buffers
+   </description>
+
+   <copyright>
+      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
+
+Contributors:
+Google, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="http://www.eclipse.org/legal/epl-v10.html">
+      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
+
+Contributors: 
+Google, Inc. - initial API and implementation
+   </license>
+
+   <url>
+      <update label="protobuf-dt" url="http://protobuf-dt.googlecode.com/svn/trunk/update-site"/>
+   </url>
+
+   <requires>
+      <import plugin="org.eclipse.xtext"/>
+      <import plugin="org.eclipse.xtext.util"/>
+      <import plugin="org.eclipse.emf.ecore"/>
+      <import plugin="org.eclipse.emf.common"/>
+      <import plugin="org.antlr.runtime"/>
+      <import plugin="org.eclipse.core.runtime" version="3.7.0" match="greaterOrEqual"/>
+      <import plugin="org.apache.log4j"/>
+      <import plugin="org.apache.commons.logging"/>
+      <import plugin="org.eclipse.xtext.ui"/>
+      <import plugin="org.eclipse.ui.editors" version="3.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.ui.ide" version="3.5.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.xtext.ui.shared"/>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.xtext.builder"/>
+      <import plugin="com.ibm.icu"/>
+      <import plugin="org.eclipse.emf.databinding"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.core.filesystem" version="1.3.100" match="greaterOrEqual"/>
+   </requires>
+
+   <plugin
+         id="com.google.eclipse.protobuf"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="com.google.eclipse.protobuf.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/syntaxcoloring/ProtobufSemanticHighlightingCalculator.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/syntaxcoloring/ProtobufSemanticHighlightingCalculator.java
index 11b60a4..8993736 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/syntaxcoloring/ProtobufSemanticHighlightingCalculator.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/syntaxcoloring/ProtobufSemanticHighlightingCalculator.java
@@ -65,18 +65,25 @@
       }
       if (element instanceof Field) {
         highlightName(element, acceptor, highlightId);
-        highLightFieldOptionNames((Field) element, acceptor, highlightId);
+        highlightFieldOptionNames((Field) element, acceptor, highlightId);
       }
       if (element instanceof Group) {
-        for (Property property : ((Group) element).getElements()) {
-          highlightName(property, acceptor, highlightId);
-          highLightFieldOptionNames(property, acceptor, highlightId);
-        }
+        highlightElementNames((Group) element, acceptor, highlightId);
       }
     }
   }
 
-  private void highLightFieldOptionNames(Field field, IHighlightedPositionAcceptor acceptor, String highlightId) {
+  private void highlightElementNames(Group group, IHighlightedPositionAcceptor acceptor, String highlightId) {
+    for (GroupElement e : group.getElements()) {
+      if (e instanceof Property) {
+        Field field = (Field) e;
+        highlightName(field, acceptor, highlightId);
+        highlightFieldOptionNames(field, acceptor, highlightId);
+      }
+    }
+  }
+
+  private void highlightFieldOptionNames(Field field, IHighlightedPositionAcceptor acceptor, String highlightId) {
     for (FieldOption option : field.getFieldOptions()) {
       highlightName(option, acceptor, highlightId);
     }
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 d27a97b..3ae2591 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
@@ -54,9 +54,13 @@
 Group:
   modifier=Modifier 'group' name=Name '=' index=INT 
   ('[' (fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)*) ']')? '{'
-  elements+=Property*
+  elements+=GroupElement*
   '}'(';')?;
 
+GroupElement:
+  Field | Option | Enum
+;
+
 Property:
   modifier=Modifier type=AbstractTypeReference name=Name '=' index=INT 
   (
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
index 9758fe2..0d09afb 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
@@ -17,7 +17,7 @@
 
 import org.eclipse.emf.common.util.*;
 import org.eclipse.emf.ecore.*;
-import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.*;
 import org.eclipse.xtext.naming.*;
 import org.eclipse.xtext.resource.*;
 import org.eclipse.xtext.scoping.IScope;
@@ -105,9 +105,9 @@
     Package importRootPackage = finder.packageOf(root);
     List<IEObjectDescription> descriptions = new ArrayList<IEObjectDescription>();
     for (Import anImport : imports) {
-      XtextResource imported = importedResource(anImport);
-      EObject importedRoot = imported.getParseResult().getRootASTElement();
-      if (arePackagesRelated(importRootPackage, importedRoot)) {
+      Resource imported = importedResource(anImport);
+      EObject importedRoot = rootElementOf(imported);
+      if (importedRoot != null && arePackagesRelated(importRootPackage, importedRoot)) {
         descriptions.addAll(typesIn(importedRoot));
         continue;
       }
@@ -116,18 +116,33 @@
     return descriptions;
   }
 
-  private XtextResource importedResource(Import anImport) {
+  private Resource importedResource(Import anImport) {
     ResourceSet resourceSet = finder.rootOf(anImport).eResource().getResourceSet();
     URI importUri = createURI(uriResolver.apply(anImport));
-    return (XtextResource) resourceSet.getResource(importUri, true);
+    try {
+      return resourceSet.getResource(importUri, true);
+    } catch (Throwable t) {
+      t.printStackTrace();
+      return null;
+    }
   }
 
+  private /* Protobuf */ EObject rootElementOf(Resource resource) {
+    if (resource instanceof XtextResource) return ((XtextResource) resource).getParseResult().getRootASTElement();
+    TreeIterator<Object> contents = getAllContents(resource, true);
+    if (contents.hasNext()) {
+      Object next = contents.next();
+      if (next instanceof EObject) return (EObject) next;
+    }
+    return null;
+  }
+  
   private boolean arePackagesRelated(Package aPackage, EObject root) {
     Package p = finder.packageOf(root);
     return packageResolver.areRelated(aPackage, p);
   }
 
-  private <T extends Type> Collection<IEObjectDescription> children(XtextResource resource, Class<T> targetType) {
+  private <T extends Type> Collection<IEObjectDescription> children(Resource resource, Class<T> targetType) {
     List<IEObjectDescription> descriptions = new ArrayList<IEObjectDescription>();
     TreeIterator<Object> contents = getAllContents(resource, true);
     while (contents.hasNext()) {
