diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ImportUriFixer_fixUri_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/scoping/ProtobufImportUriFixer_fixUri_Test.java
similarity index 91%
rename from com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ImportUriFixer_fixUri_Test.java
rename to com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/scoping/ProtobufImportUriFixer_fixUri_Test.java
index a168d75..4cf9927 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ImportUriFixer_fixUri_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/scoping/ProtobufImportUriFixer_fixUri_Test.java
@@ -6,7 +6,7 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.scoping;
+package com.google.eclipse.protobuf.ui.scoping;
 
 import static org.eclipse.emf.common.util.URI.createURI;
 import static org.hamcrest.core.IsEqual.equalTo;
@@ -16,12 +16,14 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.eclipse.protobuf.scoping.ResourceChecker;
+
 /**
  * Tests for <code>{@link ProtobufImportUriFixer#fixUri(String, URI, ResourceChecker)}</code>.
  *
  * @author alruiz@google.com (Alex Ruiz)
  */
-public class ImportUriFixer_fixUri_Test {
+public class ProtobufImportUriFixer_fixUri_Test {
 
   private URI resourceUri;
   private ResourceCheckerStub resourceChecker;
@@ -62,7 +64,7 @@
       super(null);
     }
 
-    @Override boolean resourceExists(String uri) {
+    @Override public boolean resourceExists(String uri) {
       return resourceShouldAlwaysExist;
     }
   }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/ProtobufUiModule.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/ProtobufUiModule.java
index 8a14bb3..322cdcc 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/ProtobufUiModule.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/ProtobufUiModule.java
@@ -16,11 +16,13 @@
 import org.eclipse.xtext.ui.editor.outline.actions.IOutlineContribution;
 import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer;
 
+import com.google.eclipse.protobuf.scoping.ImportUriFixer;
 import com.google.eclipse.protobuf.ui.builder.AutoAddNatureEditorCallback;
 import com.google.eclipse.protobuf.ui.outline.LinkWithEditor;
 import com.google.eclipse.protobuf.ui.outline.ProtobufOutlinePage;
 import com.google.eclipse.protobuf.ui.preferences.compiler.CompilerPreferencesInitializer;
 import com.google.eclipse.protobuf.ui.preferences.paths.PathsPreferencesInitializer;
+import com.google.eclipse.protobuf.ui.scoping.ProtobufImportUriFixer;
 import com.google.inject.Binder;
 
 /**
@@ -61,4 +63,8 @@
       Class<? extends IPreferenceStoreInitializer> initializerType) {
     binder.bind(IPreferenceStoreInitializer.class).annotatedWith(named(name)).to(initializerType);
   }
+  
+  public void configureImportUriResolver(Binder binder) {
+    binder.bind(ImportUriFixer.class).to(ProtobufImportUriFixer.class);
+  }
 }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufImportUriFixer.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/scoping/ProtobufImportUriFixer.java
similarity index 92%
rename from com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufImportUriFixer.java
rename to com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/scoping/ProtobufImportUriFixer.java
index d1b9360..970c2fd 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufImportUriFixer.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/scoping/ProtobufImportUriFixer.java
@@ -6,7 +6,7 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.scoping;
+package com.google.eclipse.protobuf.ui.scoping;
 
 import static org.eclipse.emf.common.util.URI.createURI;
 import static org.eclipse.xtext.util.Tuples.pair;
@@ -17,13 +17,14 @@
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.xtext.util.Pair;
 
+import com.google.eclipse.protobuf.scoping.ImportUriFixer;
+import com.google.eclipse.protobuf.scoping.ResourceChecker;
+
 /**
  * @author alruiz@google.com (Alex Ruiz)
  */
-public class ProtobufImportUriFixer {
+public class ProtobufImportUriFixer implements ImportUriFixer {
   
-  public static final String PREFIX = "platform:/resource";
-
   private static final String SEPARATOR = "/";
 
   /*
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ImportUriFixer.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ImportUriFixer.java
new file mode 100644
index 0000000..5337acd
--- /dev/null
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ImportUriFixer.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 org.eclipse.emf.common.util.URI;
+
+import com.google.eclipse.protobuf.protobuf.Import;
+
+/**
+ * Fixes partial URIs in <code>{@link Import}</code>s by resolving them to existing files with matching URIs.
+ * 
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public interface ImportUriFixer {
+
+  /**
+   * Prefix present in complete import URIs.
+   */
+  String PREFIX = "platform:/resource";
+  
+  /**
+   * Returns a "fixed" full URI based on the given partial URI.
+   * @param importUri the partial URI (comes from a {@code Import}.)
+   * @param resourceUri the URI of the resource declaring the import.
+   * @param checker indicates whether the resolved URI belongs to an existing file.
+   * @return the "fixed" full URI.
+   */
+  String fixUri(String importUri, URI resourceUri, ResourceChecker checker);
+}
\ No newline at end of file
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufImportUriResolver.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufImportUriResolver.java
index e35f303..4f4f764 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufImportUriResolver.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufImportUriResolver.java
@@ -8,7 +8,7 @@
  */
 package com.google.eclipse.protobuf.scoping;
 
-import static com.google.eclipse.protobuf.scoping.ProtobufImportUriFixer.PREFIX;
+import static com.google.eclipse.protobuf.scoping.ImportUriFixer.PREFIX;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
@@ -30,7 +30,7 @@
  */
 public class ProtobufImportUriResolver extends ImportUriResolver {
 
-  @Inject private ProtobufImportUriFixer uriFixer;
+  @Inject private ImportUriFixer uriFixer;
   
   /**
    * Prefix used by EMF for resource URIs: "platform:/resource/".
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ResourceChecker.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ResourceChecker.java
index 4742208..5231cd3 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ResourceChecker.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ResourceChecker.java
@@ -14,17 +14,24 @@
 import org.eclipse.emf.ecore.resource.ResourceSet;
 
 /**
+ * Verifies that resources exist.
+ *  
  * @author alruiz@google.com (Alex Ruiz)
  */
-class ResourceChecker {
+public class ResourceChecker {
 
   private final ResourceSet resourceSet;
 
-  ResourceChecker(ResourceSet resourceSet) {
+  public ResourceChecker(ResourceSet resourceSet) {
     this.resourceSet = resourceSet;
   }
   
-  boolean resourceExists(String uri) {
+  /**
+   * Indicates whether the given URI belongs to an existing resource.
+   * @param uri the URI to check, as a {@code String}.
+   * @return {@code true} if the given URI belongs to an existing resource, {@code false} otherwise.
+   */
+  public boolean resourceExists(String uri) {
     Resource resource = resourceSet.getResource(createURI(uri), true);
     return resource != null && resource.getErrors().isEmpty();
   }
