diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/QualifiedNames_addLeadingDot_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/QualifiedNames_addLeadingDot_Test.java
new file mode 100644
index 0000000..ff1cea0
--- /dev/null
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/QualifiedNames_addLeadingDot_Test.java
@@ -0,0 +1,35 @@
+/*
+ * 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.scoping;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+import org.eclipse.xtext.naming.QualifiedName;
+import org.junit.Test;
+
+/**
+ * Tests for <code>{@link QualifiedNames#addLeadingDot(QualifiedName)}</code>.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class QualifiedNames_addLeadingDot_Test {
+
+  @Test public void should_add_leading_dot() {
+    QualifiedName name = QualifiedName.create("jedis", "Luke");
+    QualifiedName withLeadingDot = QualifiedNames.addLeadingDot(name);
+    assertThat(withLeadingDot.toString(), equalTo(".jedis.Luke"));
+  }
+
+  @Test public void should_not_add_leading_dot_if_qualified_name_already_has_it() {
+    QualifiedName name = QualifiedName.create("", "jedis", "Luke");
+    QualifiedName withLeadingDot = QualifiedNames.addLeadingDot(name);
+    assertThat(withLeadingDot.toString(), equalTo(".jedis.Luke"));
+  }
+}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
index 5a11f2a..68441f6 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
@@ -55,7 +55,6 @@
   @Inject private Literals literals;
   @Inject private Properties properties;
 
-  /** {@inheritDoc} */
   @Override public void completeProtobuf_Syntax(EObject model, Assignment assignment, ContentAssistContext context,
       ICompletionProposalAcceptor acceptor) {
   }
@@ -340,11 +339,6 @@
     return imageHelper.getImage(images.defaultImage());
   }
 
-  @Override public void complete_FieldOption(EObject model, RuleCall ruleCall, ContentAssistContext context,
-      ICompletionProposalAcceptor acceptor) {
-    System.out.println("complete_FieldOption");
-  }
-
   @Override public void completeFieldOption_Name(EObject model, Assignment assignment, ContentAssistContext context,
       ICompletionProposalAcceptor acceptor) {
     Field field = extractFieldFrom(context);
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 1f00280..61a0f2c 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
@@ -31,7 +31,7 @@
   'import' importURI=STRING ';';
 
 QualifiedName:
-  Name ('.' Name)*;
+  '.'? Name ('.' Name)*;
 
 Option:
   'option' name=Name '=' value=ValueRef ';';
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 562a552..7feb1fb 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
@@ -8,6 +8,7 @@
  */
 package com.google.eclipse.protobuf.scoping;
 
+import static com.google.eclipse.protobuf.scoping.QualifiedNames.addLeadingDot;
 import static java.util.Collections.emptyList;
 import static org.eclipse.emf.common.util.URI.createURI;
 import static org.eclipse.emf.ecore.util.EcoreUtil.getAllContents;
@@ -91,7 +92,7 @@
       for (int i = level; i < nameCount; i++) {
         descriptions.add(create(names.get(i), element));
       }
-      descriptions.add(create(nameProvider.getFullyQualifiedName(element), element));
+      descriptions.addAll(fullyQualifiedNamesOf(element));
       // TODO investigate if groups can have messages, and if so, add those messages to the scope.
       if (element instanceof Message) {
         descriptions.addAll(children(element, targetType, level + 1));
@@ -136,7 +137,7 @@
     }
     return null;
   }
-  
+
   private boolean arePackagesRelated(Package aPackage, EObject root) {
     Package p = finder.packageOf(root);
     return packageResolver.areRelated(aPackage, p);
@@ -149,7 +150,7 @@
       Object next = contents.next();
       if (!targetType.isInstance(next)) continue;
       T type = targetType.cast(next);
-      descriptions.add(create(nameProvider.getFullyQualifiedName(type), type));
+      descriptions.addAll(fullyQualifiedNamesOf(type));
       for (QualifiedName name : importedNamesProvider.namesOf(type)) {
         descriptions.add(create(name, type));
       }
@@ -157,6 +158,14 @@
     return descriptions;
   }
 
+  private Collection<IEObjectDescription> fullyQualifiedNamesOf(EObject obj) {
+    List<IEObjectDescription> descriptions = new ArrayList<IEObjectDescription>();
+    QualifiedName fqn = nameProvider.getFullyQualifiedName(obj);
+    descriptions.add(create(fqn, obj));
+    descriptions.add(create(addLeadingDot(fqn), obj));
+    return descriptions;
+  }
+
   @SuppressWarnings("unused")
   IScope scope_LiteralRef_literal(LiteralRef literalRef, EReference reference) {
     EObject container = literalRef.eContainer();
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/QualifiedNames.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/QualifiedNames.java
index 047a80a..23c73cb 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/QualifiedNames.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/QualifiedNames.java
@@ -11,27 +11,34 @@
 import static java.util.Collections.*;
 import static org.eclipse.xtext.util.Strings.isEmpty;
 
-import com.google.eclipse.protobuf.protobuf.Package;
+import java.util.*;
 
 import org.eclipse.xtext.naming.*;
 
-import java.util.*;
+import com.google.eclipse.protobuf.protobuf.Package;
 
 /**
  * @author alruiz@google.com (Alex Ruiz)
  */
 final class QualifiedNames {
 
-  static List<QualifiedName> addPackageNameSegments(QualifiedName qualifiedName, Package p,
-      IQualifiedNameConverter converter) {
-    QualifiedName name = qualifiedName;
+  static QualifiedName addLeadingDot(QualifiedName name) {
+    if (name.getFirstSegment().equals("")) return name;
+    List<String> segments = new ArrayList<String>();
+    segments.addAll(name.getSegments());
+    segments.add(0, "");
+    return QualifiedName.create(segments.toArray(new String[segments.size()]));
+  }
+
+  static List<QualifiedName> addPackageNameSegments(QualifiedName name, Package p, IQualifiedNameConverter converter) {
+    QualifiedName current = name;
     List<String> segments = fqnSegments(p, converter);
     int segmentCount = segments.size();
     if (segmentCount <= 1) return emptyList();
     List<QualifiedName> allNames = new ArrayList<QualifiedName>();
     for (int i = segmentCount - 1; i > 0; i--) {
-      name = QualifiedName.create(segments.get(i)).append(name);
-      allNames.add(name);
+      current = QualifiedName.create(segments.get(i)).append(current);
+      allNames.add(current);
     }
     return unmodifiableList(allNames);
   }
@@ -42,6 +49,6 @@
     if (isEmpty(packageName)) return emptyList();
     return converter.toQualifiedName(packageName).getSegments();
   }
-  
+
   private QualifiedNames() {}
 }
