diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java
index 7250bba..289428b 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/LaunchHelper.java
@@ -55,7 +55,7 @@
 
     public static String[] getProgramArgs( ILaunchConfiguration config )
     {
-        return new String[] { "-p", "9090", "-a", "localhost" };
+        return new String[] { "-p", "9090", "-a", "localhost", "-c" };
     }
 
     public static long getBackoff( ILaunchConfiguration config )
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
index cab1f2f..5cbcbdb 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/OSGiLauncher.java
@@ -77,6 +77,7 @@
         SigilCore.log( "VM=" + install.getName() );
         SigilCore.log( "Main=" + vmconfig.getClassToLaunch() );
         SigilCore.log( "VMArgs=" + Arrays.asList( vmconfig.getVMArguments() ) );
+        SigilCore.log( "Boot Classpath=" + Arrays.asList( vmconfig.getBootClassPath() ) );
         SigilCore.log( "Classpath=" + Arrays.asList( vmconfig.getClassPath() ) );
         SigilCore.log( "Args=" + Arrays.asList( vmconfig.getProgramArguments() ) );
         SigilCore.log( "Working Dir=" + vmconfig.getWorkingDirectory() );
@@ -91,7 +92,7 @@
         {
             String name = LaunchHelper.getRepositoryManagerName(config);
             IRepositoryManager manager = SigilCore.getRepositoryManager(name);
-            client.apply(form.resolve(new RuntimeBundleResolver(manager)));
+            client.apply(form.resolve(new RuntimeBundleResolver(manager, config)));
         }
         catch (Exception e)
         {
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java
index 8c4416d..2c4a399 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/RuntimeBundleResolver.java
@@ -10,6 +10,7 @@
 import org.apache.felix.sigil.common.runtime.BundleForm.Resolver;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
+import org.apache.felix.sigil.eclipse.runtime.source.SigilSourcePathProvider;
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
 import org.apache.felix.sigil.model.osgi.IRequiredBundle;
@@ -19,6 +20,7 @@
 import org.apache.felix.sigil.repository.ResolutionConfig;
 import org.apache.felix.sigil.repository.ResolutionException;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
 import org.osgi.framework.Version;
 
 public class RuntimeBundleResolver implements ResolutionContext
@@ -55,6 +57,8 @@
                     ISigilProjectModel p = b.getAncestor(ISigilProjectModel.class);
                     if ( p != null ) {
                         uris.add(p.findBundleLocation().toFile().toURI());
+                        SigilCore.log("Adding project source to source path " + p.getName());
+                        SigilSourcePathProvider.addProjectSource(launchConfig, p);
                     }
                     else {
                         b.synchronize(null);
@@ -80,9 +84,11 @@
     }
     
     private final IRepositoryManager manager;
+    private final ILaunchConfiguration launchConfig;
     
-    public RuntimeBundleResolver(IRepositoryManager manager) {
+    public RuntimeBundleResolver(IRepositoryManager manager, ILaunchConfiguration launchConfig) {
         this.manager = manager;
+        this.launchConfig = launchConfig;
     }
 
     public Resolver findResolver(URI uri)
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java
index b39a713..47a3d36 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationConstants.java
@@ -5,5 +5,6 @@
 
     String FORM_FILE_LOCATION = "org.apache.felix.sigil.form.location";
     String AUTOMATIC_ADD = "org.apache.felix.sigil.automatic.add";
+    String CLASSPATH_PROVIDER = "org.apache.felix.sigil.classpath.Provider";
 
 }
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java
index bfc27e8..e3d3179 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/config/OSGiLaunchConfigurationTab.java
@@ -29,6 +29,7 @@
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyAdapter;
@@ -151,6 +152,8 @@
     public void performApply( ILaunchConfigurationWorkingCopy config )
     {
         config.setAttribute(OSGiLaunchConfigurationConstants.FORM_FILE_LOCATION, formLocation);
+        config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_SOURCE_PATH_PROVIDER, OSGiLaunchConfigurationConstants.CLASSPATH_PROVIDER );
+        config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH_PROVIDER, OSGiLaunchConfigurationConstants.CLASSPATH_PROVIDER);    
     }
 
     /* (non-Javadoc)
diff --git a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java
index 63ddf0a..2b6f170 100644
--- a/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java
+++ b/sigil/eclipse/runtime/src/org/apache/felix/sigil/eclipse/runtime/source/SigilSourcePathProvider.java
@@ -28,7 +28,7 @@
         ArrayList<IRuntimeClasspathEntry> all = new ArrayList<IRuntimeClasspathEntry>(entries.length);
         
         all.addAll( workbenchSourcePath(entries, configuration) );
-        all.addAll( launchOverridePath( configuration ) );
+//        all.addAll( launchOverridePath( configuration ) );
 //        all.addAll( newtonSourcePath( configuration ) );
         Set<IRuntimeClasspathEntry> dynamic = dynamicRuntime.get( configuration );
         if ( dynamic != null ) {
