diff --git a/sigil/ivy/resolver/.classpath b/sigil/ivy/resolver/.classpath
index df01fbf..c9ffd60 100644
--- a/sigil/ivy/resolver/.classpath
+++ b/sigil/ivy/resolver/.classpath
@@ -2,7 +2,6 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/org.apache.felix.sigil.common.core"/>
 	<classpathentry kind="con" path="org.apache.felix.sigil.classpathContainer"/>
 	<classpathentry kind="output" path="build/classes"/>
 </classpath>
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 ead0f73..7411ad1 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
@@ -25,15 +25,16 @@
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 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.ModelElementFactory;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.model.osgi.IPackageExport;
@@ -41,8 +42,8 @@
 import org.apache.felix.sigil.model.osgi.IRequiredBundle;
 import org.apache.felix.sigil.repository.AbstractBundleRepository;
 import org.apache.felix.sigil.repository.IRepositoryVisitor;
+import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
-import org.apache.ivy.core.module.id.ModuleRevisionId;
 
 import org.osgi.framework.Version;
 
@@ -246,7 +247,7 @@
 
         for (IBldBundle bb : project.getBundles())
         {
-            IBundleModelElement info = new BundleModelElement();
+            IBundleModelElement info = ModelElementFactory.getInstance().newModelElement(IBundleModelElement.class);
 
             for (IPackageExport pexport : bb.getExports())
             {
@@ -272,77 +273,27 @@
             Version version = new Version(bb.getVersion());
             info.setVersion(version);
 
-            ProjectBundle pb = new ProjectBundle();
+            ISigilBundle pb = ModelElementFactory.getInstance().newModelElement(ISigilBundle.class);
             pb.setBundleInfo(info);
-            pb.setId(bb.getId());
-
+            
+            Map<Object, Object> meta = new HashMap<Object, Object>();
             ModuleDescriptor md = SigilParser.instance().parseDescriptor(uri.toURL());
+            if ( !bb.getId().equals( md.getModuleRevisionId().getName() ) )
+            { // non-default artifact
+                for ( Artifact a : md.getAllArtifacts() ) {
+                    if ( a.getName().equals( bb.getId() ) ) {
+                        meta.put(Artifact.class, a);
+                        break;
+                    }
+                }
+            }
 
-            ModuleRevisionId mrid = md.getModuleRevisionId();
-            pb.setModule(mrid.getName());
-            pb.setOrg(mrid.getOrganisation());
-            // XXX: should revision be configurable?
-            pb.setRevision("latest." + md.getStatus());
-
+            meta.put(ModuleDescriptor.class, md);
+            pb.setMeta(meta);
+            
             list.add(pb);
             Log.debug("ProjectRepository: added " + pb);
             Log.debug("ProjectRepository: exports " + bb.getExports());
         }
     }
-
-    public static class ProjectBundle extends SigilBundle
-    {
-        private String id;
-        private String module;
-        private String org;
-        private String revision;
-
-        @Override
-        public String toString()
-        {
-            return "ProjectBundle[" + org + "@" + module + (id == null ? "" : "$" + id)
-                + "#" + revision + "]";
-        }
-
-        public String getModule()
-        {
-            return module;
-        }
-
-        public void setModule(String module)
-        {
-            this.module = module;
-        }
-
-        public String getId()
-        {
-            return id;
-        }
-
-        public void setId(String id)
-        {
-            this.id = id;
-        }
-
-        public String getRevision()
-        {
-            return revision;
-        }
-
-        public void setRevision(String rev)
-        {
-            this.revision = rev;
-        }
-
-        public String getOrg()
-        {
-            return org;
-        }
-
-        public void setOrg(String org)
-        {
-            this.org = org;
-        }
-    }
-
 }
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 1bb30b9..a215202 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
@@ -537,23 +537,24 @@
                     continue;
                 }
 
-                if ( bundle instanceof ProjectRepository.ProjectBundle )
+                ModuleDescriptor bmd = (ModuleDescriptor) bundle.getMeta().get(ModuleDescriptor.class);
+                if ( bmd != null )
                 {
-                    ProjectRepository.ProjectBundle pb = ( ProjectRepository.ProjectBundle ) bundle;
-                    String org = pb.getOrg();
+                    ModuleRevisionId bmrid = bmd.getModuleRevisionId();
+                    String org = bmrid.getOrganisation();
                     if ( org == null )
                         org = masterMrid.getOrganisation();
-                    String id = pb.getId();
-                    String module = pb.getModule();
-                    String rev = pb.getRevision();
+                    String module = bmrid.getName();
+                    String rev = "latest." + bmd.getStatus();
 
                     mrid = ModuleRevisionId.newInstance( org, module, rev );
+                    
                     dd = new SigilDependencyDescriptor( md, mrid, force, changing, transitive );
 
-                    if ( !id.equals( module ) )
-                    { // non-default artifact
-                        dd.addDependencyArtifact( module, new DefaultDependencyArtifactDescriptor( dd, id, "jar",
-                            "jar", null, null ) );
+                    Artifact artifact = (Artifact) bundle.getMeta().get(Artifact.class);
+                    if ( artifact != null ) {
+                        dd.addDependencyArtifact( mrid.getName(), new DefaultDependencyArtifactDescriptor( dd, artifact.getName(), "jar",
+                            "jar", null, null ) );                        
                     }
                 }
                 else
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 5daad06..dc5c099 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
@@ -39,10 +39,11 @@
 
 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.ModelElementFactory;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.model.osgi.IBundleModelElement;
+import org.apache.felix.sigil.model.osgi.IRequiredBundle;
 import org.apache.felix.sigil.repository.IResolution;
 import org.apache.felix.sigil.repository.ResolutionException;
 import org.apache.ivy.core.module.descriptor.Artifact;
@@ -247,7 +248,7 @@
             range = "[" + revision + "," + revision + "]";
         }
 
-        RequiredBundle bundle = new RequiredBundle();
+        IRequiredBundle bundle = ModelElementFactory.getInstance().newModelElement(IRequiredBundle.class);
         bundle.setSymbolicName( id.getName() );
         bundle.setVersions( VersionRange.parseVersionRange( range ) );
 
