diff --git a/sigil/common/core/sigil.properties b/sigil/common/core/sigil.properties
index 4d52aab..801ce44 100644
--- a/sigil/common/core/sigil.properties
+++ b/sigil/common/core/sigil.properties
@@ -15,7 +15,8 @@
 	org.apache.felix.sigil.common.config*, \
 	org.apache.felix.sigil.common.core*, \
 	org.apache.felix.sigil.common.model*, \
-	org.apache.felix.sigil.common.repository*,
+	org.apache.felix.sigil.common.repository*, \
+	org.apache.felix.sigil.common.progress*,
 
 -resources: \
 	profiles, \
@@ -40,6 +41,7 @@
 	org.apache.felix.sigil.common.model.eclipse, \
 	org.apache.felix.sigil.common.model.osgi, \
 	org.apache.felix.sigil.common.repository, \
+	org.apache.felix.sigil.common.progress, \
 
 -imports: \
 	aQute.lib.osgi;resolve=compile, \
@@ -53,12 +55,8 @@
 	org.apache.felix.sigil.common.model.osgi, \
 	org.apache.felix.sigil.common.osgi, \
 	org.apache.felix.sigil.common.repository, \
-	org.eclipse.core.runtime, \
 	org.osgi.framework, \
 
--requires: \
-	org.eclipse.equinox.common;version=3.4.0, \
-
 header;Bundle-ActivationPolicy: lazy
 
 # end
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/license/LicensePolicy.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/license/LicensePolicy.java
index d393b0a..06eefd3 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/license/LicensePolicy.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/license/LicensePolicy.java
@@ -21,7 +21,7 @@
 
 import org.apache.felix.sigil.common.core.licence.ILicensePolicy;
 import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.apache.felix.sigil.common.progress.IProgress;
 
 public class LicensePolicy implements ILicensePolicy
 {
@@ -50,7 +50,7 @@
 
     }
 
-    public void save(IProgressMonitor monitor)
+    public void save(IProgress progress)
     {
         // TODO Auto-generated method stub
 
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
index 98d1146..a5f5a4c 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/core/internal/model/eclipse/SigilBundle.java
@@ -43,8 +43,7 @@
 import org.apache.felix.sigil.common.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.common.model.osgi.IPackageExport;
 import org.apache.felix.sigil.common.model.osgi.IPackageImport;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubMonitor;
+import org.apache.felix.sigil.common.progress.IProgress;
 import org.osgi.framework.Version;
 
 /**
@@ -74,17 +73,17 @@
         packages = new String[0];
     }
 
-    public void synchronize(IProgressMonitor monitor) throws IOException
+    public void synchronize(IProgress progress) throws IOException
     {
-        SubMonitor progress = SubMonitor.convert(monitor, 100);
-        progress.subTask("Synchronizing " + bundle.getSymbolicName() + " binary");
+        progress = progress.newTask(100);
+        progress.report("Synchronizing " + bundle.getSymbolicName() + " binary");
         sync(location, bundle.getUpdateLocation(), progress.newChild(45));
 
         if (bundle.getSourceLocation() != null)
         {
             try
             {
-                progress.subTask("Synchronizing " + bundle.getSymbolicName() + " source");
+                progress.report("Synchronizing " + bundle.getSymbolicName() + " source");
                 sync(sourcePathLocation, bundle.getSourceLocation(),
                     progress.newChild(45));
             }
@@ -99,7 +98,7 @@
         {
             try
             {
-                progress.subTask("Synchronizing " + bundle.getSymbolicName() + " licence");
+                progress.report("Synchronizing " + bundle.getSymbolicName() + " licence");
                 sync(licencePathLocation, bundle.getLicenseURI(), progress.newChild(10));
             }
             catch (IOException e)
@@ -133,7 +132,7 @@
         return location == null || location.exists();
     }
 
-    private static void sync(File local, URI remote, IProgressMonitor monitor)
+    private static void sync(File local, URI remote, IProgress progress)
         throws IOException
     {
         try
@@ -146,7 +145,8 @@
                     URLConnection connection = url.openConnection();
                     int contentLength = connection.getContentLength();
 
-                    monitor.beginTask("Downloading from " + url.getHost(), contentLength);
+                    progress = progress.newTask(contentLength);
+                    progress.report("Downloading from " + url.getHost());
 
                     InputStream in = null;
                     OutputStream out = null;
@@ -162,7 +162,7 @@
                         in = conn.getInputStream();
                         local.getParentFile().mkdirs();
                         out = new FileOutputStream(local);
-                        stream(in, out, monitor);
+                        stream(in, out, progress);
                     }
                     finally
                     {
@@ -174,7 +174,7 @@
                         {
                             out.close();
                         }
-                        monitor.done();
+                        progress.done();
                     }
                 }
             }
@@ -186,13 +186,13 @@
         }
     }
 
-    private static void stream(InputStream in, OutputStream out, IProgressMonitor monitor)
+    private static void stream(InputStream in, OutputStream out, IProgress progress)
         throws IOException
     {
         byte[] b = new byte[1024];
         for (;;)
         {
-            if (monitor.isCanceled())
+            if (progress.isCanceled())
             {
                 throw new InterruptedIOException("User canceled download");
             }
@@ -200,7 +200,7 @@
             if (r == -1)
                 break;
             out.write(b, 0, r);
-            monitor.worked(r);
+            progress.worked(r);
         }
 
         out.flush();
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/licence/ILicensePolicy.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/licence/ILicensePolicy.java
index eefef3c..450e6f0 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/licence/ILicensePolicy.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/core/licence/ILicensePolicy.java
@@ -20,7 +20,7 @@
 package org.apache.felix.sigil.common.core.licence;
 
 import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.apache.felix.sigil.common.progress.IProgress;
 
 public interface ILicensePolicy
 {
@@ -30,5 +30,5 @@
 
     boolean accept(ISigilBundle bundle);
 
-    void save(IProgressMonitor monitor);
+    void save(IProgress progress);
 }
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/BundleResolver.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/BundleResolver.java
index b7c8bf8..7028461 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/BundleResolver.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/BundleResolver.java
@@ -42,6 +42,7 @@
 import org.apache.felix.sigil.common.model.osgi.IPackageExport;
 import org.apache.felix.sigil.common.model.osgi.IPackageImport;
 import org.apache.felix.sigil.common.model.osgi.IRequiredBundle;
+import org.apache.felix.sigil.common.progress.IProgress;
 import org.apache.felix.sigil.common.repository.IBundleRepository;
 import org.apache.felix.sigil.common.repository.IBundleResolver;
 import org.apache.felix.sigil.common.repository.IRepositoryManager;
@@ -49,8 +50,6 @@
 import org.apache.felix.sigil.common.repository.IResolutionMonitor;
 import org.apache.felix.sigil.common.repository.ResolutionConfig;
 import org.apache.felix.sigil.common.repository.ResolutionException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubMonitor;
 import org.osgi.framework.Version;
 
 public class BundleResolver implements IBundleResolver
@@ -279,14 +278,14 @@
             return true;
         }
 
-        public void synchronize(IProgressMonitor monitor)
+        public void synchronize(IProgress progress)
         {
             Set<ISigilBundle> bundles = getBundles();
-            SubMonitor progress = SubMonitor.convert(monitor, bundles.size());
+            progress = progress.newTask(bundles.size());
 
             for (ISigilBundle b : bundles)
             {
-                if (monitor.isCanceled())
+                if (progress.isCanceled())
                 {
                     break;
                 }
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/ProgressWrapper.java b/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/ProgressWrapper.java
deleted file mode 100644
index e1db339..0000000
--- a/sigil/common/core/src/org/apache/felix/sigil/common/core/repository/ProgressWrapper.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.felix.sigil.common.core.repository;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.apache.felix.sigil.common.repository.IResolutionMonitor;
-
-public class ProgressWrapper implements IProgressMonitor
-{
-
-    private IResolutionMonitor monitor;
-
-    public ProgressWrapper(IResolutionMonitor monitor)
-    {
-        this.monitor = monitor;
-    }
-
-    public boolean isCanceled()
-    {
-        return monitor.isCanceled();
-    }
-
-    public void beginTask(String name, int totalWork)
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void done()
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void internalWorked(double work)
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void setCanceled(boolean value)
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void setTaskName(String name)
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void subTask(String name)
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void worked(int work)
-    {
-        // TODO Auto-generated method stub
-
-    }
-}
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/model/eclipse/ISigilBundle.java b/sigil/common/core/src/org/apache/felix/sigil/common/model/eclipse/ISigilBundle.java
index 5dcde31..a597ac9 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/model/eclipse/ISigilBundle.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/model/eclipse/ISigilBundle.java
@@ -23,13 +23,13 @@
 import java.io.IOException;
 import java.util.Collection;
 
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.apache.felix.sigil.common.config.Resource;
 import org.apache.felix.sigil.common.model.ICompoundModelElement;
 import org.apache.felix.sigil.common.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.common.model.osgi.IPackageExport;
 import org.apache.felix.sigil.common.model.osgi.IPackageImport;
 import org.apache.felix.sigil.common.model.osgi.IVersionedModelElement;
+import org.apache.felix.sigil.common.progress.IProgress;
 
 /**
  * @author dave
@@ -37,7 +37,7 @@
  */
 public interface ISigilBundle extends ICompoundModelElement, IVersionedModelElement
 {
-    void synchronize(IProgressMonitor monitor) throws IOException;
+    void synchronize(IProgress progress) throws IOException;
 
     boolean isSynchronized();
 
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/progress/IProgress.java b/sigil/common/core/src/org/apache/felix/sigil/common/progress/IProgress.java
new file mode 100644
index 0000000..93a8dc1
--- /dev/null
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/progress/IProgress.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.sigil.common.progress;
+
+/**
+ * @author dave
+ *
+ */
+public interface IProgress
+{
+
+    /**
+     * @return
+     */
+    boolean isCanceled();
+
+    /**
+     * @param totalWork
+     * @return
+     */
+    IProgress newChild(int totalWork);
+    
+    /**
+     * @param name
+     * @param totalWork
+     * @return
+     */
+    IProgress newTask(int totalWork);
+    
+    /**
+     * @param msg
+     */
+    void report(String msg);
+
+    /**
+     * @param work
+     */
+    void worked(int work);
+
+    /**
+     * 
+     */
+    void done();
+
+}
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/repository/IResolution.java b/sigil/common/core/src/org/apache/felix/sigil/common/repository/IResolution.java
index 9a63899..f9b053f 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/repository/IResolution.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/common/repository/IResolution.java
@@ -22,9 +22,9 @@
 import java.util.List;
 import java.util.Set;
 
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.apache.felix.sigil.common.model.IModelElement;
 import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
+import org.apache.felix.sigil.common.progress.IProgress;
 
 public interface IResolution
 {
@@ -34,7 +34,7 @@
 
     List<IModelElement> getMatchedRequirements(ISigilBundle bundle);
 
-    void synchronize(IProgressMonitor monitor);
+    void synchronize(IProgress progress);
 
     boolean isSynchronized();
 }
diff --git a/sigil/eclipse/core/sigil.properties b/sigil/eclipse/core/sigil.properties
index defecb4..e9689e1 100644
--- a/sigil/eclipse/core/sigil.properties
+++ b/sigil/eclipse/core/sigil.properties
@@ -25,6 +25,7 @@
 	org.apache.felix.sigil.eclipse.model.repository, \
 	org.apache.felix.sigil.eclipse.model.util, \
 	org.apache.felix.sigil.eclipse.preferences, \
+	org.apache.felix.sigil.eclipse.repository, \
 
 -imports: \
 	org.apache.commons.lang, \
@@ -37,6 +38,7 @@
 	org.apache.felix.sigil.common.model.eclipse, \
 	org.apache.felix.sigil.common.model.osgi, \
 	org.apache.felix.sigil.common.osgi, \
+	org.apache.felix.sigil.common.progress;version=0.9.0, \
 	org.apache.felix.sigil.common.repository, \
 	org.apache.felix.sigil.eclipse, \
 	org.apache.felix.sigil.eclipse.install, \
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 7188cfe..a588a40 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
@@ -37,10 +37,11 @@
 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.common.repository.ResolutionMonitorAdapter;
 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;
@@ -186,7 +187,7 @@
             IBundleResolver resolver = SigilCore.getRepositoryManager(sigil).getBundleResolver();
             IResolution resolution = resolver.resolve(element, config,
                 new ResolutionMonitorAdapter(monitor));
-            resolution.synchronize(monitor);
+            resolution.synchronize(new ProgressAdapter(monitor));
             return resolution.getBundles();
         }
         catch (ResolutionException e)
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java
index 6efbe9a..aadb284 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java
@@ -48,12 +48,13 @@
 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.common.repository.ResolutionMonitorAdapter;
 import org.apache.felix.sigil.eclipse.PathUtil;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.job.ThreadProgressMonitor;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
 import org.apache.felix.sigil.eclipse.model.util.JavaHelper;
+import org.apache.felix.sigil.eclipse.progress.ProgressAdapter;
+import org.apache.felix.sigil.eclipse.repository.ResolutionMonitorAdapter;
 import org.apache.felix.sigil.utils.GlobCompiler;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
@@ -195,7 +196,7 @@
             // pull remote bundles from repositories to be added to classpath
             if (!resolution.isSynchronized())
             {
-                resolution.synchronize(progress.newChild(80));
+                resolution.synchronize(new ProgressAdapter(progress.newChild(80)));
             }
         }
         catch (ResolutionException e)
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
index c01c9d2..fe34711 100644
--- a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/model/util/JavaHelper.java
@@ -54,10 +54,11 @@
 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.common.repository.ResolutionMonitorAdapter;
 import org.apache.felix.sigil.eclipse.PathUtil;
 import org.apache.felix.sigil.eclipse.SigilCore;
 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.IFile;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
@@ -416,7 +417,7 @@
         {
             if (other == null)
             {
-                provider.synchronize(monitor);
+                provider.synchronize(new ProgressAdapter(monitor));
                 return newBundleEntry(provider, rules, attrs, false);
             }
             else
diff --git a/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/progress/ProgressAdapter.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/progress/ProgressAdapter.java
new file mode 100644
index 0000000..06216d0
--- /dev/null
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/progress/ProgressAdapter.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.sigil.eclipse.progress;
+
+import org.apache.felix.sigil.common.progress.IProgress;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+
+/**
+ * @author dave
+ *
+ */
+public class ProgressAdapter implements IProgress
+{
+    
+    private final IProgressMonitor monitor;
+    private final SubMonitor sub;
+
+    public ProgressAdapter(IProgressMonitor monitor) {
+        this.monitor = monitor;
+        sub = SubMonitor.convert(monitor);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.felix.sigil.common.progress.IProgress#done()
+     */
+    public void done()
+    {
+        monitor.done();
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.felix.sigil.common.progress.IProgress#isCanceled()
+     */
+    public boolean isCanceled()
+    {
+        return monitor.isCanceled();
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.felix.sigil.common.progress.IProgress#newChild(int)
+     */
+    public IProgress newChild(int totalWork)
+    {
+        return new ProgressAdapter(sub.newChild(totalWork));
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.felix.sigil.common.progress.IProgress#newTask(int)
+     */
+    public IProgress newTask(int totalWork)
+    {
+        SubMonitor sub = SubMonitor.convert(monitor);
+        return new ProgressAdapter(sub);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.felix.sigil.common.progress.IProgress#worked(int)
+     */
+    public void worked(int work)
+    {
+        monitor.worked(work);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.felix.sigil.common.progress.IProgress#report(java.lang.String)
+     */
+    public void report(String msg)
+    {
+        sub.subTask(msg);
+    }
+
+}
diff --git a/sigil/common/core/src/org/apache/felix/sigil/common/repository/ResolutionMonitorAdapter.java b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/repository/ResolutionMonitorAdapter.java
similarity index 92%
rename from sigil/common/core/src/org/apache/felix/sigil/common/repository/ResolutionMonitorAdapter.java
rename to sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/repository/ResolutionMonitorAdapter.java
index 9e5db18..916c275 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/common/repository/ResolutionMonitorAdapter.java
+++ b/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/repository/ResolutionMonitorAdapter.java
@@ -17,11 +17,12 @@
  * under the License.
  */
 
-package org.apache.felix.sigil.common.repository;
+package org.apache.felix.sigil.eclipse.repository;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.apache.felix.sigil.common.model.IModelElement;
 import org.apache.felix.sigil.common.model.eclipse.ISigilBundle;
+import org.apache.felix.sigil.common.repository.IResolutionMonitor;
 
 public class ResolutionMonitorAdapter implements IResolutionMonitor
 {
diff --git a/sigil/eclipse/ui/sigil.properties b/sigil/eclipse/ui/sigil.properties
index 5b6f3e2..a3e57e9 100644
--- a/sigil/eclipse/ui/sigil.properties
+++ b/sigil/eclipse/ui/sigil.properties
@@ -39,6 +39,7 @@
 	org.apache.felix.sigil.eclipse.model.repository, \
 	org.apache.felix.sigil.eclipse.model.util, \
 	org.apache.felix.sigil.eclipse.preferences, \
+	org.apache.felix.sigil.eclipse.repository;version=0.9.0, \
 	org.apache.felix.sigil.eclipse.ui, \
 	org.apache.felix.sigil.eclipse.ui.actions, \
 	org.apache.felix.sigil.eclipse.ui.util, \
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java
index 8cf101a..ad954c5 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/eclipse/ui/internal/views/resolution/BundleResolverView.java
@@ -31,9 +31,9 @@
 import org.apache.felix.sigil.common.repository.IResolutionMonitor;
 import org.apache.felix.sigil.common.repository.ResolutionConfig;
 import org.apache.felix.sigil.common.repository.ResolutionException;
-import org.apache.felix.sigil.common.repository.ResolutionMonitorAdapter;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
+import org.apache.felix.sigil.eclipse.repository.ResolutionMonitorAdapter;
 import org.apache.felix.sigil.eclipse.ui.SigilUI;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
