diff --git a/sigil/ivy/resolver/sigil.properties b/sigil/ivy/resolver/sigil.properties
index 18622f6..820e8c4 100644
--- a/sigil/ivy/resolver/sigil.properties
+++ b/sigil/ivy/resolver/sigil.properties
@@ -5,18 +5,18 @@
 	org.apache.felix.sigil.ivy.resolver, \
 
 -contents: \
-  org.apache.felix.sigil.*, \
-  profiles.*, \
-  org.osgi.framework, \
+	profiles.*, \
+	org.osgi.framework, \
+	org.apache.felix.sigil.*, \
 
 -imports: \
 	org.apache.felix.sigil.bnd, \
+	org.apache.felix.sigil.common.osgi, \
 	org.apache.felix.sigil.config, \
 	org.apache.felix.sigil.core, \
 	org.apache.felix.sigil.core.licence, \
 	org.apache.felix.sigil.core.repository, \
 	org.apache.felix.sigil.model, \
-	org.apache.felix.sigil.model.common, \
 	org.apache.felix.sigil.model.eclipse, \
 	org.apache.felix.sigil.model.osgi, \
 	org.apache.felix.sigil.obr, \
@@ -37,6 +37,7 @@
 	org.apache.ivy.util, \
 	org.apache.tools.ant, \
 	org.apache.tools.ant.types, \
+	org.eclipse.core.runtime;version=3.4.0, \
 	org.osgi.framework, \
 
 -requires: \
diff --git a/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/ProjectRepository.java b/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/ProjectRepository.java
index dec8b2b..004b4d5 100644
--- a/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/ProjectRepository.java
+++ b/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/ProjectRepository.java
@@ -28,13 +28,13 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.felix.sigil.common.osgi.VersionRange;
 import org.apache.felix.sigil.config.BldFactory;
 import org.apache.felix.sigil.config.IBldProject;
 import org.apache.felix.sigil.config.IBldProject.IBldBundle;
 import org.apache.felix.sigil.core.internal.model.eclipse.SigilBundle;
 import org.apache.felix.sigil.core.internal.model.osgi.BundleModelElement;
 import org.apache.felix.sigil.core.licence.ILicensePolicy;
-import org.apache.felix.sigil.model.common.VersionRange;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.model.osgi.IPackageExport;
diff --git a/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilParser.java b/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilParser.java
index 54555e7..1bb30b9 100644
--- a/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilParser.java
+++ b/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilParser.java
@@ -31,10 +31,10 @@
 import java.util.Map;
 import java.util.regex.Pattern;
 
+import org.apache.felix.sigil.common.osgi.VersionRange;
 import org.apache.felix.sigil.config.BldFactory;
 import org.apache.felix.sigil.config.IBldProject;
 import org.apache.felix.sigil.model.IModelElement;
-import org.apache.felix.sigil.model.common.VersionRange;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.model.osgi.IPackageImport;
diff --git a/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilResolver.java b/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilResolver.java
index f41a3aa..5daad06 100644
--- a/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilResolver.java
+++ b/sigil/ivy/resolver/src/org/apache/felix/sigil/ivy/SigilResolver.java
@@ -37,10 +37,10 @@
 import java.util.jar.JarInputStream;
 import java.util.jar.Manifest;
 
+import org.apache.felix.sigil.common.osgi.VersionRange;
 import org.apache.felix.sigil.config.BldFactory;
 import org.apache.felix.sigil.core.internal.model.osgi.RequiredBundle;
 import org.apache.felix.sigil.model.IModelElement;
-import org.apache.felix.sigil.model.common.VersionRange;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.repository.IResolution;
@@ -54,6 +54,7 @@
 import org.apache.ivy.plugins.resolver.BasicResolver;
 import org.apache.ivy.plugins.resolver.util.ResolvedResource;
 import org.apache.ivy.util.FileUtil;
+import org.eclipse.core.runtime.IPath;
 
 
 /**
@@ -386,11 +387,10 @@
 
         private boolean bundleContains( ISigilBundle bundle, String j )
         {
-            URI uri = bundle.getBundleInfo().getUpdateLocation();
             InputStream is = null;
             try
             {
-                URL url = ( uri != null ) ? uri.toURL() : bundle.getLocation().toFile().toURL();
+                URL url = getURL( bundle );
                 is = url.openStream();
                 JarInputStream js = new JarInputStream( is, false );
                 JarEntry entry;
@@ -427,11 +427,10 @@
             if ( bundle == null )
                 return null;
 
-            URI uri = bundle.getBundleInfo().getUpdateLocation();
             InputStream is = null;
             try
             {
-                URL url = ( uri != null ) ? uri.toURL() : bundle.getLocation().toFile().toURL();
+                URL url = getURL( bundle );
                 is = url.openStream();
                 JarInputStream js = new JarInputStream( is, false );
                 Manifest m = js.getManifest();
@@ -459,6 +458,22 @@
         }
 
 
+        private URL getURL( ISigilBundle bundle ) throws MalformedURLException
+        {
+            URI uri = bundle.getBundleInfo().getUpdateLocation();
+            if ( uri != null ) {
+                return uri.toURL();
+            }
+            else {
+                IPath path = bundle.getLocation();
+                if ( path == null ) {
+                    throw new NullPointerException( "Missing location for " + bundle.getSymbolicName() );
+                }
+                return path.toFile().toURI().toURL();
+            }
+        }
+
+
         public String toString()
         {
             return "SigilIvy[" + name + "]";
