diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java
index a588a40..3c8a5eb 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilModelRoot.java
@@ -31,17 +31,10 @@
 import org.apache.felix.sigil.common.model.IRequirementModelElement;
 import org.apache.felix.sigil.common.model.eclipse.ILibrary;
 import org.apache.felix.sigil.common.model.eclipse.ILibraryImport;
-import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.common.model.osgi.IPackageImport;
-import org.apache.felix.sigil.common.repository.IBundleResolver;
-import org.apache.felix.sigil.common.repository.IResolution;
-import org.apache.felix.sigil.common.repository.ResolutionConfig;
-import org.apache.felix.sigil.common.repository.ResolutionException;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilModelRoot;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
-import org.apache.felix.sigil.eclipse.progress.ProgressAdapter;
-import org.apache.felix.sigil.eclipse.repository.ResolutionMonitorAdapter;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
@@ -170,29 +163,4 @@
 
         return dependents;
     }
-
-    public Collection<ISigilBundle> resolveBundles(ISigilProjectModel sigil,
-        IModelElement element, boolean includeOptional, IProgressMonitor monitor)
-        throws CoreException
-    {
-        int options = ResolutionConfig.INCLUDE_DEPENDENTS;
-        if (includeOptional)
-        {
-            options |= ResolutionConfig.INCLUDE_OPTIONAL;
-        }
-
-        ResolutionConfig config = new ResolutionConfig(options);
-        try
-        {
-            IBundleResolver resolver = SigilCore.getRepositoryManager(sigil).getBundleResolver();
-            IResolution resolution = resolver.resolve(element, config,
-                new ResolutionMonitorAdapter(monitor));
-            resolution.synchronize(new ProgressAdapter(monitor));
-            return resolution.getBundles();
-        }
-        catch (ResolutionException e)
-        {
-            throw SigilCore.newCoreException(e.getMessage(), e);
-        }
-    }
 }
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilModelRoot.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilModelRoot.java
index 4544c88..6d262aa 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilModelRoot.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/project/ISigilModelRoot.java
@@ -19,14 +19,12 @@
 
 package org.apache.felix.sigil.eclipse.model.project;
 
+
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
 import org.apache.felix.sigil.common.model.ICapabilityModelElement;
-import org.apache.felix.sigil.common.model.IModelElement;
-import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 
 public interface ISigilModelRoot
@@ -35,8 +33,4 @@
 
     Set<ISigilProjectModel> resolveDependentProjects(
         Collection<ICapabilityModelElement> caps, IProgressMonitor monitor);
-
-    Collection<ISigilBundle> resolveBundles(ISigilProjectModel sigil,
-        IModelElement element, boolean includeOptional, IProgressMonitor monitor)
-        throws CoreException;
 }
