diff --git a/sigil/bld-ivy/example/dependence/dependee/build.xml b/sigil/bld-ivy/example/dependence/dependee/build.xml
index 4eab164..c2c124b 100644
--- a/sigil/bld-ivy/example/dependence/dependee/build.xml
+++ b/sigil/bld-ivy/example/dependence/dependee/build.xml
@@ -48,7 +48,7 @@
 	<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />
 
         <taskdef name="sigil.bundle"
-          classname="org.cauldron.bld.ant.BundleTask"
+          classname="org.apache.felix.sigil.ant.BundleTask"
           classpath="${sigil-ivy-plugin.jar}"/>
     </target>
 
diff --git a/sigil/bld-ivy/example/dependence/depender/build.xml b/sigil/bld-ivy/example/dependence/depender/build.xml
index f2f9190..aebdb1c 100644
--- a/sigil/bld-ivy/example/dependence/depender/build.xml
+++ b/sigil/bld-ivy/example/dependence/depender/build.xml
@@ -48,7 +48,7 @@
 	<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />
 
         <taskdef name="sigil.bundle"
-          classname="org.cauldron.bld.ant.BundleTask"
+          classname="org.apache.felix.sigil.ant.BundleTask"
           classpath="${sigil-ivy-plugin.jar}"/>
     </target>
 
diff --git a/sigil/bld-ivy/example/dependence/settings/ivysettings.xml b/sigil/bld-ivy/example/dependence/settings/ivysettings.xml
index 5dd4e63..ee0ff48 100644
--- a/sigil/bld-ivy/example/dependence/settings/ivysettings.xml
+++ b/sigil/bld-ivy/example/dependence/settings/ivysettings.xml
@@ -23,8 +23,8 @@
     <caches defaultCacheDir="${ivy.settings.dir}/ivy-cache" />
 
     <classpath file="${sigil-ivy-plugin.jar}" />
-    <typedef name="sigil-parser" classname="org.cauldron.bld.ivy.SigilParser" />
-    <typedef name="sigil-resolver" classname="org.cauldron.bld.ivy.SigilResolver" />
+    <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
+    <typedef name="sigil-resolver" classname="org.apache.felix.sigil.ivy.SigilResolver" />
 
     <parsers>
 	<sigil-parser/>
diff --git a/sigil/bld-ivy/example/felix-log/bldcommon/common.xml b/sigil/bld-ivy/example/felix-log/bldcommon/common.xml
index 8431484..aedc2ec 100644
--- a/sigil/bld-ivy/example/felix-log/bldcommon/common.xml
+++ b/sigil/bld-ivy/example/felix-log/bldcommon/common.xml
@@ -55,7 +55,7 @@
 		 classpath="${ivy.jar}"/>
 
 	<taskdef name="sigil.bundle"
-		 classname="org.cauldron.bld.ant.BundleTask"
+		 classname="oorg.apache.felix.sigil.ant.BundleTask"
 		 classpath="${sigil-ivy-plugin.jar}"/>
     </target>    
 
diff --git a/sigil/bld-ivy/example/felix-log/bldcommon/ivysettings.xml b/sigil/bld-ivy/example/felix-log/bldcommon/ivysettings.xml
index dd336c7..a1fb903 100644
--- a/sigil/bld-ivy/example/felix-log/bldcommon/ivysettings.xml
+++ b/sigil/bld-ivy/example/felix-log/bldcommon/ivysettings.xml
@@ -24,8 +24,8 @@
   <settings defaultResolver="local" circularDependencyStrategy="error" />
 
   <classpath file="${sigil-ivy-plugin.jar}" />
-  <typedef name="sigil-parser" classname="org.cauldron.bld.ivy.SigilParser" />
-  <typedef name="sigil" classname="org.cauldron.bld.ivy.SigilResolver" />
+  <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
+  <typedef name="sigil" classname="org.apache.felix.sigil.ivy.SigilResolver" />
 
   <parsers>
     <sigil-parser config="${ivy.settings.dir}/sigil-repos.properties"
diff --git a/sigil/bld-ivy/example/multi-project/common/common.xml b/sigil/bld-ivy/example/multi-project/common/common.xml
index f464e32..311cffd 100644
--- a/sigil/bld-ivy/example/multi-project/common/common.xml
+++ b/sigil/bld-ivy/example/multi-project/common/common.xml
@@ -56,7 +56,7 @@
 		 classpath="${ivy.jar}"/>
 
 	<taskdef name="sigil.bundle"
-		 classname="org.cauldron.bld.ant.BundleTask"
+		 classname="org.apache.felix.sigil.ant.BundleTask"
 		 classpath="${sigil-ivy-plugin.jar}"/>
     </target>    
 
diff --git a/sigil/bld-ivy/example/multi-project/common/ivysettings.xml b/sigil/bld-ivy/example/multi-project/common/ivysettings.xml
index 614aa0e..f2f7454 100644
--- a/sigil/bld-ivy/example/multi-project/common/ivysettings.xml
+++ b/sigil/bld-ivy/example/multi-project/common/ivysettings.xml
@@ -24,8 +24,8 @@
   <settings defaultResolver="shared" circularDependencyStrategy="error" />
 
   <classpath file="${ivy.settings.dir}/../../../lib/sigil-ivy-plugin.jar" />
-  <typedef name="sigil-parser" classname="org.cauldron.bld.ivy.SigilParser" />
-  <typedef name="sigil-resolver" classname="org.cauldron.bld.ivy.SigilResolver" />
+  <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
+  <typedef name="sigil-resolver" classname="org.apache.felix.sigil.ivy.SigilResolver" />
 
   <parsers>
     <sigil-parser quiet="true"/>
diff --git a/sigil/bld-ivy/sigil-ivy-plugin.bnd b/sigil/bld-ivy/sigil-ivy-plugin.bnd
index 7fb4156..799b4c4 100644
--- a/sigil/bld-ivy/sigil-ivy-plugin.bnd
+++ b/sigil/bld-ivy/sigil-ivy-plugin.bnd
@@ -12,7 +12,7 @@
 
 # embed other dependencies directly in the plugin
 Private-Package: \
-  org.cauldron.*, \
+  org.apache.felix.sigil.*, \
   profiles.*, \
   org.eclipse.core.runtime, \
   org.osgi.framework
diff --git a/sigil/bld-ivy/test/config/proj1/newton-project.xml b/sigil/bld-ivy/test/config/proj1/newton-project.xml
deleted file mode 100644
index 98a52cd..0000000
--- a/sigil/bld-ivy/test/config/proj1/newton-project.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!--
-  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.
--->
-<sigil:bundle xmlns:sigil="http://sigil.codecauldron.org/xml/sigil-namespace">
-<classpathEntry>&lt;classpathentry kind="lib" path="lib/dependee.jar"/&gt;</classpathEntry>
-<classpathEntry>&lt;classpathentry kind="src" path="src"/&gt;</classpathEntry>
-<bundle>
-<bundle-version>0.0.0</bundle-version>
-<bundle-vendor>Paremus Limited</bundle-vendor>
-<bundle-symbolicName>org.example.helloworld</bundle-symbolicName>
-<fragment-host bundle="com.springsource.org.apache.commons.lang" version="[2.0.0,2.4.0)"/>
-<export-package package="org.example.helloworld.api" version="0.0.0"/><import-package package="org.cauldron.newton.command" version="1.2.0"/><import-package package="org.apache.log4j" version="[1.2.14,1.3)"/><import-package package="org.example.helloworld.api" version="0"/><import-package package="org.cauldron.newton.command.console" version="1.2.0"/></bundle>
-<sigil:composite xmlns:sigil="http://sigil.codecauldron.org/xml/sigil-namespace">
-<location>sca/org.example.helloworld.service.composite</location>
-</sigil:composite>
-<sigil:composite xmlns:sigil="http://sigil.codecauldron.org/xml/sigil-namespace">
-<location>sca/org.example.helloworld.cli.composite</location>
-</sigil:composite>
-</sigil:bundle>
diff --git a/sigil/bld-ivy/test/dependence/dependee/build.xml b/sigil/bld-ivy/test/dependence/dependee/build.xml
index 925d95a..f35c2f9 100644
--- a/sigil/bld-ivy/test/dependence/dependee/build.xml
+++ b/sigil/bld-ivy/test/dependence/dependee/build.xml
@@ -50,7 +50,7 @@
       <ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />
 
 	<taskdef name="sigil.bundle"
-	  classname="org.cauldron.bld.ant.BundleTask"
+	  classname="org.apache.felix.sigil.ant.BundleTask"
 	  classpath="${basedir}/../../../target/sigil-ivy-plugin.jar"/>
     </target>
 
diff --git a/sigil/bld-ivy/test/dependence/settings/ivysettings.xml b/sigil/bld-ivy/test/dependence/settings/ivysettings.xml
index 9312a85..2127496 100644
--- a/sigil/bld-ivy/test/dependence/settings/ivysettings.xml
+++ b/sigil/bld-ivy/test/dependence/settings/ivysettings.xml
@@ -28,8 +28,8 @@
   </caches>
 
   <classpath file="${ivy.settings.dir}/../../../target/sigil-ivy-plugin.jar" />
-  <typedef name="sigil-parser" classname="org.cauldron.bld.ivy.SigilParser" />
-  <typedef name="sigil" classname="org.cauldron.bld.ivy.SigilResolver" />
+  <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
+  <typedef name="sigil" classname="org.apache.felix.sigil.ivy.SigilResolver" />
 
   <parsers>
     <sigil-parser/>
diff --git a/sigil/bld-ivy/test/multi-project/common/common.xml b/sigil/bld-ivy/test/multi-project/common/common.xml
index 4e54d1d..07883a2 100644
--- a/sigil/bld-ivy/test/multi-project/common/common.xml
+++ b/sigil/bld-ivy/test/multi-project/common/common.xml
@@ -76,7 +76,7 @@
 		 classpath="${ivy.jar.file}"/>
 
 	<taskdef name="sigil.bundle"
-		 classname="org.cauldron.bld.ant.BundleTask"
+		 classname="org.apache.felix.sigil.ant.BundleTask"
 		 classpath="${sigil-ivy-plugin.jar}:${bndlib.jar}"/>
     </target>    
 
diff --git a/sigil/bld-ivy/test/multi-project/common/ivysettings.xml b/sigil/bld-ivy/test/multi-project/common/ivysettings.xml
index 03440c4..217bab5 100644
--- a/sigil/bld-ivy/test/multi-project/common/ivysettings.xml
+++ b/sigil/bld-ivy/test/multi-project/common/ivysettings.xml
@@ -36,8 +36,8 @@
   Loading sigil-ivy-plugin.jar in ivy-taskdefs, uses the same ClassLoader
   to load sigil-ivy-plugin, and thus avoids re-initialising ProjectRepositiory.
   -->
-  <typedef name="sigil-parser" classname="org.cauldron.bld.ivy.SigilParser" />
-  <typedef name="sigil" classname="org.cauldron.bld.ivy.SigilResolver" />
+  <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
+  <typedef name="sigil" classname="org.apache.felix.sigil.ivy.SigilResolver" />
 
   <parsers>
     <sigil-parser quiet="true"/>
diff --git a/sigil/bld-junit/sigil.properties b/sigil/bld-junit/sigil.properties
index 65fcec3..f0d1603 100644
--- a/sigil/bld-junit/sigil.properties
+++ b/sigil/bld-junit/sigil.properties
@@ -1,7 +1,7 @@
 
 # sigil project file, saved by plugin.
 
--activator: org.cauldron.sigil.junit.activator.Activator
+-activator: org.apache.felix.sigil.junit.activator.Activator
 
 version: 0.8.0
 
diff --git a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/config/BldFactory.java b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/config/BldFactory.java
index 3c69ea3..6ce36f5 100644
--- a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/config/BldFactory.java
+++ b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/config/BldFactory.java
@@ -68,7 +68,7 @@
 			p.load();
 			projects.put(uri, p);
     			
-    		if (Boolean.getBoolean("org.cauldron.bld.config.test")) {
+    		if (Boolean.getBoolean("org.apache.felix.sigil.config.test")) {
     			File path = new File(uri.getPath() + ".tmp");
     			System.out.println("XXX: config.test writing: " + path);
     			p.saveAs(path);
diff --git a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/BundleModelElement.java b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/BundleModelElement.java
index d1c65ee..b2270f8 100644
--- a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/BundleModelElement.java
+++ b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/BundleModelElement.java
@@ -93,214 +93,127 @@
 		libraries.remove(library);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getCategory()
-	 */
     public String getCategory() {
         return category;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setCategory(java.lang.String)
-	 */
     public void setCategory(String category) {
         this.category = category;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getContactAddress()
-	 */
     public String getContactAddress() {
         return contactAddress;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setContactAddress(java.lang.String)
-	 */
     public void setContactAddress(String contactAddress) {
         this.contactAddress = contactAddress;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getCopyright()
-	 */
     public String getCopyright() {
         return copyright;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setCopyright(java.lang.String)
-	 */
     public void setCopyright(String copyright) {
         this.copyright = copyright;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getDocURI()
-	 */
     public URI getDocURI() {
         return docURI;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setDocURI(java.net.URI)
-	 */
     public void setDocURI(URI docURI) {
         this.docURI = docURI;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getExports()
-	 */
     public Set<IPackageExport> getExports() {
         return exports;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#addExport(org.cauldron.sigil.model.osgi.PackageExport)
-	 */
     public void addExport(IPackageExport packageExport) {
         exports.add(packageExport);
         packageExport.setParent(this);
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#removeExport(org.cauldron.sigil.model.osgi.PackageExport)
-	 */
     public void removeExport(IPackageExport packageExport) {
     	if ( exports.remove(packageExport) ) {
     		packageExport.setParent(null);
     	}
     }
     
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getImports()
-	 */
     public Set<IPackageImport> getImports() {
         return imports;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#addImport(org.cauldron.sigil.model.osgi.PackageImport)
-	 */
     public void addImport(IPackageImport packageImport) {
         imports.add(packageImport);
         packageImport.setParent(this);
     }
     
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#removeImport(org.cauldron.sigil.model.osgi.PackageImport)
-	 */
     public void removeImport(IPackageImport packageImport) {
     	if ( imports.remove( packageImport ) ) {
     		packageImport.setParent(null);
     	}
     }
     
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getRequiredBundles()
-	 */
     public Set<IRequiredBundle> getRequiredBundles() {
         return requires;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#addRequiredBundle(org.cauldron.sigil.model.osgi.RequiresBundle)
-	 */
     public void addRequiredBundle(IRequiredBundle bundle) {
         requires.add( bundle );
         bundle.setParent(this);
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#removeRequiredBundle(org.cauldron.sigil.model.osgi.RequiresBundle)
-	 */
     public void removeRequiredBundle(IRequiredBundle bundle) {
     	if ( requires.remove(bundle) ) {
     		bundle.setParent(null);
     	}
     }
     
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getLicenseURI()
-	 */
     public URI getLicenseURI() {
         return licenseURI;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setLicenseURI(java.net.URI)
-	 */
     public void setLicenseURI(URI licenseURI) {
         this.licenseURI = licenseURI;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getSourceLocation()
-	 */
     public URI getSourceLocation() {
         return sourceLocation;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setSourceLocation(java.net.URI)
-	 */
     public void setSourceLocation(URI sourceLocation) {
         this.sourceLocation = sourceLocation;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getSymbolicName()
-	 */
     public String getSymbolicName() {
         return symbolicName;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setSymbolicName(java.lang.String)
-	 */
     public void setSymbolicName(String symbolicName) {
         this.symbolicName = symbolicName == null ? null : symbolicName.intern();
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getUpdateLocation()
-	 */
     public URI getUpdateLocation() {
         return updateLocation;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setUpdateLocation(java.net.URI)
-	 */
     public void setUpdateLocation(URI updateLocation) {
         this.updateLocation = updateLocation;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getVendor()
-	 */
     public String getVendor() {
     		return vendor;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setVendor(java.lang.String)
-	 */
     public void setVendor(String vendor) {
         this.vendor = vendor;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#getVersion()
-	 */
     public Version getVersion() {
     	return version;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.model.osgi.IBundleModelElement#setVersion(java.lang.String)
-	 */
     public void setVersion(Version version) {
         this.version = version == null ? Version.emptyVersion : version;
     }
diff --git a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageExport.java b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageExport.java
index cbc92bd..5af3251 100644
--- a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageExport.java
+++ b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageExport.java
@@ -39,23 +39,14 @@
 		super("OSGi Package Export");
 	}
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageExport#getPackageName()
-	 */
     public String getPackageName() {
         return name;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageExport#setPackageName(java.lang.String)
-	 */
     public void setPackageName(String packageName) {
         this.name = packageName;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageExport#getVersion()
-	 */
     public Version getVersion() {
     	Version result;
         if(version != null) {
@@ -75,9 +66,6 @@
     	return version;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageExport#setVersion(java.lang.String)
-	 */
     public void setVersion(Version version) {
         this.version = version; // == null ? Version.emptyVersion : version;
     }
@@ -131,6 +119,5 @@
 				return version.compareTo(other);
 			}
 		}
-	}
-	
+	}	
 }
diff --git a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageImport.java b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageImport.java
index 7bc862a..15db4c2 100644
--- a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageImport.java
+++ b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/PackageImport.java
@@ -49,16 +49,10 @@
     	}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageImport#isOptional()
-	 */
     public boolean isOptional() {
         return optional;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageImport#setOptional(boolean)
-	 */
     public void setOptional(boolean optional) {
         this.optional = optional;
     }
@@ -83,23 +77,14 @@
         return name;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageImport#setName(java.lang.String)
-	 */
     public void setPackageName(String name) {
         this.name = name;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageImport#getVersion()
-	 */
     public VersionRange getVersions() {
         return versions;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IPackageImport#setVersion(java.lang.String)
-	 */
     public void setVersions(VersionRange versions) {
         this.versions = versions == null ? VersionRange.ANY_VERSION : versions;
     }
diff --git a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/RequiredBundle.java b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/RequiredBundle.java
index a676aba..451f241 100644
--- a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/RequiredBundle.java
+++ b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/internal/model/osgi/RequiredBundle.java
@@ -36,30 +36,18 @@
 		super("OSGi Bundle Requirement");
 	}
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IRequiresBundle#getSymbolicName()
-	 */
     public String getSymbolicName() {
         return symbolicName;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IRequiresBundle#setSymbolicName(java.lang.String)
-	 */
     public void setSymbolicName(String symbolicName) {
         this.symbolicName = symbolicName == null ? null : symbolicName.intern();
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IRequiresBundle#getVersion()
-	 */
     public VersionRange getVersions() {
         return versions;
     }
 
-    /* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.model.osgi.IRequiresBundle#setVersion(java.lang.String)
-	 */
     public void setVersions(VersionRange versions) {
         this.versions = versions == null ? VersionRange.ANY_VERSION : versions;
     }
diff --git a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/licence/ILicenseManager.java b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/licence/ILicenseManager.java
index de15489..9fec40c 100644
--- a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/licence/ILicenseManager.java
+++ b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/core/licence/ILicenseManager.java
@@ -22,8 +22,6 @@
 import java.util.Set;
 import java.util.regex.Pattern;
 
-//import org.cauldron.sigil.model.project.ISigilProjectModel;
-
 public interface ILicenseManager {
 	void addLicense(String name, Pattern pattern);
 	void removeLicense(String name);
diff --git a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/repository/AbstractRepositoryManager.java b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/repository/AbstractRepositoryManager.java
index ad00f45..fd61b9b 100644
--- a/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/repository/AbstractRepositoryManager.java
+++ b/sigil/org.cauldron.bld.core/src/org/apache/felix/sigil/repository/AbstractRepositoryManager.java
@@ -164,9 +164,6 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.repository.IRepositoryManager#getRepositories()
-	 */
 	public Collection<IBundleRepository> getRepositories() {
 		initialise();
 		ArrayList<IBundleRepository> safe = null;
@@ -236,36 +233,24 @@
 		return found;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.repository.IRepositoryManager#addLibrary(org.cauldron.sigil.model.eclipse.ILibrary)
-	 */
 	public void addLibrary(ILibrary library) {
 		synchronized( libraries ) {
 			libraries.add(library);
 		}
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.repository.IRepositoryManager#removeLibrary(org.cauldron.sigil.model.eclipse.ILibrary)
-	 */
 	public void removeLibrary(ILibrary library) {
 		synchronized( libraries ) {
 			libraries.remove(library);
 		}
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.repository.IRepositoryManager#getLibraries()
-	 */
 	public Collection<ILibrary> getLibraries() {
 		synchronized( libraries ) {
 			return libraries;
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.internal.repository.IRepositoryManager#resolveLibrary(org.cauldron.sigil.model.eclipse.ILibraryImport)
-	 */
 	public ILibrary resolveLibrary(final ILibraryImport l) {
 		final ArrayList<ILibrary> found = new ArrayList<ILibrary>(1);
 		//ISigilProjectModel p = l.getAncestor(ISigilProjectModel.class);
diff --git a/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryConfiguration.java b/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryConfiguration.java
index 8599062..c0e93db 100644
--- a/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryConfiguration.java
+++ b/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryConfiguration.java
@@ -62,9 +62,6 @@
 	
 	public static final String REPOSITORY_DEFAULT_SET = REPOSITORY + "default.set";
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.repository.management.IRepositoryManagement#loadRepositories()
-	 */
 	public List<IRepositoryModel> loadRepositories() {
 		IPreferenceStore prefs = SigilCore.getDefault().getPreferenceStore();
 		
@@ -101,9 +98,6 @@
 		return null;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.repository.management.IRepositoryManagement#saveRepositories(java.util.List)
-	 */
 	public void saveRepositories(List<IRepositoryModel> repositories) throws CoreException {
 		IPreferenceStore prefs = getPreferences();
 		
@@ -117,9 +111,6 @@
 		timeStamp(prefs);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.repository.management.IRepositoryManagement#loadRepositoryTypes()
-	 */
 	public List<RepositoryType> loadRepositoryTypes() {
 		List<RepositoryType> repositories = new ArrayList<RepositoryType>();
 		
@@ -141,9 +132,6 @@
 		return repositories;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.repository.management.IRepositoryManagement#newRepositoryElement(org.cauldron.sigil.repository.management.RepositoryType)
-	 */
 	public IRepositoryModel newRepositoryElement(IRepositoryType type) {
 		String id = UUID.randomUUID().toString();
 		PreferenceStore prefs = new PreferenceStore();
diff --git a/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryModel.java b/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryModel.java
index bfc555a..042e8a8 100644
--- a/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryModel.java
+++ b/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryModel.java
@@ -39,37 +39,22 @@
 		this.preferences = preferences;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryModel#getPreferences()
-	 */
 	public PreferenceStore getPreferences() {
 		return preferences;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryModel#getType()
-	 */
 	public IRepositoryType getType() {
 		return type;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryModel#getId()
-	 */
 	public String getId() {
 		return id;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryModel#getName()
-	 */
 	public String getName() {
 		return name;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.wizard.repository.IRepositoryModel#setName(java.lang.String)
-	 */
 	public void setName(String name) {
 		this.name = name;
 	}
diff --git a/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryType.java b/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryType.java
index beaa0ea..1675057 100644
--- a/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryType.java
+++ b/sigil/org.cauldron.sigil.core/src/org/apache/felix/sigil/eclipse/internal/model/repository/RepositoryType.java
@@ -36,30 +36,18 @@
 		this.icon = icon;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryType#getType()
-	 */
 	public String getType() {
 		return type;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryType#getId()
-	 */
 	public String getId() {
 		return id;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryType#getIcon()
-	 */
 	public Image getIcon() {
 		return icon;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.preferences.repository.IRepositoryType#isDynamic()
-	 */
 	public boolean isDynamic() {
 		return dynamic;
 	}
diff --git a/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DownloadSection.java b/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DownloadSection.java
index eff4321..0de878b 100644
--- a/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DownloadSection.java
+++ b/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DownloadSection.java
@@ -60,9 +60,6 @@
 		super( page, parent, project );
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.editors.project.SigilSection#createSection(org.eclipse.ui.forms.widgets.Section, org.eclipse.ui.forms.widgets.FormToolkit)
-	 */
 	@Override
 	protected void createSection(Section section, FormToolkit toolkit) throws CoreException {
 		setTitle( "Codebase" );
diff --git a/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java b/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java
index 9ddbe34..ea1d3bb 100644
--- a/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java
+++ b/sigil/org.cauldron.sigil.ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ResourceBuildSection.java
@@ -65,9 +65,6 @@
 		super( page, parent, project );
 	}
 
-	/* (non-Javadoc)
-	 * @see org.cauldron.sigil.ui.editors.project.SigilSection#createSection(org.eclipse.ui.forms.widgets.Section, org.eclipse.ui.forms.widgets.FormToolkit)
-	 */
 	@Override
 	protected void createSection(Section section, FormToolkit toolkit) {
 		setTitle( "Resources" );
diff --git a/sigil/org.cauldron.sigil.updatesite/site.xml b/sigil/org.cauldron.sigil.updatesite/site.xml
index 6b32f0a..166116e 100644
--- a/sigil/org.cauldron.sigil.updatesite/site.xml
+++ b/sigil/org.cauldron.sigil.updatesite/site.xml
@@ -18,87 +18,6 @@
   under the License.
 -->
 <site>
-   <feature url="features/org.cauldron.sigil.core_0.3.0.jar" id="org.cauldron.sigil.core" version="0.3.0">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.1.jar" id="org.cauldron.sigil.core" version="0.3.1">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.2.jar" id="org.cauldron.sigil.core" version="0.3.2">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.3.jar" id="org.cauldron.sigil.core" version="0.3.3">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.4.jar" id="org.cauldron.sigil.core" version="0.3.4">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.5.jar" id="org.cauldron.sigil.core" version="0.3.5">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.6.jar" id="org.cauldron.sigil.core" version="0.3.6">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.7.jar" id="org.cauldron.sigil.core" version="0.3.7">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.8.jar" id="org.cauldron.sigil.core" version="0.3.8">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.9.jar" id="org.cauldron.sigil.core" version="0.3.9">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.10.jar" id="org.cauldron.sigil.core" version="0.3.10">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.11.jar" id="org.cauldron.sigil.core" version="0.3.11">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.12.jar" id="org.cauldron.sigil.core" version="0.3.12">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.13.jar" id="org.cauldron.sigil.core" version="0.3.13">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.14.jar" id="org.cauldron.sigil.core" version="0.3.14">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.15.jar" id="org.cauldron.sigil.core" version="0.3.15">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.16.jar" id="org.cauldron.sigil.core" version="0.3.16">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.17.jar" id="org.cauldron.sigil.core" version="0.3.17">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.3.18.jar" id="org.cauldron.sigil.core" version="0.3.18">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.0.jar" id="org.cauldron.sigil.core" version="0.4.0">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.1.jar" id="org.cauldron.sigil.core" version="0.4.1">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.2.jar" id="org.cauldron.sigil.core" version="0.4.2">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.3.jar" id="org.cauldron.sigil.core" version="0.4.3">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.4.jar" id="org.cauldron.sigil.core" version="0.4.4">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.5.jar" id="org.cauldron.sigil.core" version="0.4.5">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.6.jar" id="org.cauldron.sigil.core" version="0.4.6">
-      <category name="Sigil"/>
-   </feature>
-   <feature url="features/org.cauldron.sigil.core_0.4.7.jar" id="org.cauldron.sigil.core" version="0.4.7">
-      <category name="Sigil"/>
-   </feature>
    <category-def name="Sigil" label="Sigil">
       <description>
          Sigil is an SDK for developing applications to be deployed on the Newton framework (http://newton.codecauldron.org)
diff --git a/sigil/sigil-builder/build.xml b/sigil/sigil-builder/build.xml
index 4161e54..c35162d 100644
--- a/sigil/sigil-builder/build.xml
+++ b/sigil/sigil-builder/build.xml
@@ -80,13 +80,13 @@
         </fileset>
       </classpath>
     </javac>
-    <taskdef name="findbundle" classname="org.cauldron.sigil.build.FindBundlesTask">
+    <taskdef name="findbundle" classname="org.apache.felix.sigil.build.FindBundlesTask">
       <classpath>
         <pathelement location="build-libs/osgi.core.jar"/>
         <pathelement location="build-libs/classes"/>
       </classpath>
     </taskdef>
-    <taskdef name="siteInsertFeatures" classname="org.cauldron.sigil.build.SiteInsertFeatures">
+    <taskdef name="siteInsertFeatures" classname="org.apache.felix.sigil.build.SiteInsertFeatures">
       <classpath>
         <pathelement location="build-libs/classes"/>
       </classpath>
