diff --git a/karaf/assembly/pom.xml b/karaf/assembly/pom.xml
index 936d36a..20c26c3 100644
--- a/karaf/assembly/pom.xml
+++ b/karaf/assembly/pom.xml
@@ -43,12 +43,20 @@
             <artifactId>org.apache.servicemix.kernel.client</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel</groupId>
-            <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
+            <groupId>org.apache.servicemix.kernel.deployer</groupId>
+            <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel</groupId>
-            <artifactId>org.apache.servicemix.kernel.spring</artifactId>
+            <groupId>org.apache.servicemix.kernel.deployer</groupId>
+            <artifactId>org.apache.servicemix.kernel.deployer.spring</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.kernel.deployer</groupId>
+            <artifactId>org.apache.servicemix.kernel.deployer.blueprint</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.kernel.deployer</groupId>
+            <artifactId>org.apache.servicemix.kernel.deployer.features</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.kernel.gshell</groupId>
diff --git a/karaf/assembly/src/main/descriptors/unix-bin.xml b/karaf/assembly/src/main/descriptors/unix-bin.xml
index 3dd8246..f8490a7 100644
--- a/karaf/assembly/src/main/descriptors/unix-bin.xml
+++ b/karaf/assembly/src/main/descriptors/unix-bin.xml
@@ -218,8 +218,6 @@
             <useProjectArtifact>false</useProjectArtifact>
             <outputFileNameMapping>org/apache/servicemix/kernel/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
             <includes>
-                <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.filemonitor</include>
-                <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.spring</include>
                 <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.management</include>
             </includes>
         </dependencySet>
@@ -227,6 +225,18 @@
             <outputDirectory>/system</outputDirectory>
             <unpack>false</unpack>
             <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/servicemix/kernel/deployer/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.filemonitor</include>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.spring</include>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.blueprint</include>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.features</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
             <outputFileNameMapping>org/apache/servicemix/kernel/gshell/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
             <includes>
                 <include>org.apache.servicemix.kernel.gshell:org.apache.servicemix.kernel.gshell.core</include>
diff --git a/karaf/assembly/src/main/descriptors/windows-bin.xml b/karaf/assembly/src/main/descriptors/windows-bin.xml
index 0901795..9509f54 100644
--- a/karaf/assembly/src/main/descriptors/windows-bin.xml
+++ b/karaf/assembly/src/main/descriptors/windows-bin.xml
@@ -210,8 +210,6 @@
             <useProjectArtifact>false</useProjectArtifact>
             <outputFileNameMapping>org/apache/servicemix/kernel/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
             <includes>
-                <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.filemonitor</include>
-                <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.spring</include>
                 <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.management</include>
             </includes>
         </dependencySet>
@@ -219,6 +217,18 @@
             <outputDirectory>/system</outputDirectory>
             <unpack>false</unpack>
             <useProjectArtifact>false</useProjectArtifact>
+            <outputFileNameMapping>org/apache/servicemix/kernel/deployer/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+            <includes>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.filemonitor</include>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.spring</include>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.blueprint</include>
+                <include>org.apache.servicemix.kernel.deployer:org.apache.servicemix.kernel.deployer.features</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
+            <outputDirectory>/system</outputDirectory>
+            <unpack>false</unpack>
+            <useProjectArtifact>false</useProjectArtifact>
             <outputFileNameMapping>org/apache/servicemix/kernel/gshell/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
             <includes>
                 <include>org.apache.servicemix.kernel.gshell:org.apache.servicemix.kernel.gshell.core</include>
diff --git a/karaf/assembly/src/main/filtered-resources/etc/startup.properties b/karaf/assembly/src/main/filtered-resources/etc/startup.properties
index 06519d6..fe1b9b8 100644
--- a/karaf/assembly/src/main/filtered-resources/etc/startup.properties
+++ b/karaf/assembly/src/main/filtered-resources/etc/startup.properties
@@ -34,7 +34,7 @@
 org/apache/felix/org.apache.felix.configadmin/${felix.configadmin.version}/org.apache.felix.configadmin-${felix.configadmin.version}.jar=10
 org/apache/geronimo/specs/geronimo-annotation_1.0_spec/${geronimo.annotation.version}/geronimo-annotation_1.0_spec-${geronimo.annotation.version}.jar=10
 org/apache/felix/org.apache.felix.prefs/${felix.prefs.version}/org.apache.felix.prefs-${felix.prefs.version}.jar=10
-org/apache/servicemix/kernel/org.apache.servicemix.kernel.filemonitor/${pom.version}/org.apache.servicemix.kernel.filemonitor-${pom.version}.jar=15
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.filemonitor/${pom.version}/org.apache.servicemix.kernel.deployer.filemonitor-${pom.version}.jar=15
 
 #
 # The rest of the services..
@@ -54,7 +54,9 @@
 org/springframework/osgi/spring-osgi-core/${spring.osgi.version}/spring-osgi-core-${spring.osgi.version}.jar=30
 org/springframework/osgi/spring-osgi-extender/${spring.osgi.version}/spring-osgi-extender-${spring.osgi.version}.jar=30
 org/springframework/osgi/spring-osgi-io/${spring.osgi.version}/spring-osgi-io-${spring.osgi.version}.jar=30
-org/apache/servicemix/kernel/org.apache.servicemix.kernel.spring/${pom.version}/org.apache.servicemix.kernel.spring-${pom.version}.jar=30
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.spring/${pom.version}/org.apache.servicemix.kernel.deployer.spring-${pom.version}.jar=30
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.blueprint/${pom.version}/org.apache.servicemix.kernel.deployer.blueprint-${pom.version}.jar=30
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.features/${pom.version}/org.apache.servicemix.kernel.deployer.features-${pom.version}.jar=30
 org/apache/servicemix/kernel/org.apache.servicemix.kernel.management/${pom.version}/org.apache.servicemix.kernel.management-${pom.version}.jar=30
 org/apache/servicemix/kernel/gshell/org.apache.servicemix.kernel.gshell.admin/${pom.version}/org.apache.servicemix.kernel.gshell.admin-${pom.version}.jar=30
 org/apache/servicemix/kernel/gshell/org.apache.servicemix.kernel.gshell.osgi/${pom.version}/org.apache.servicemix.kernel.gshell.osgi-${pom.version}.jar=30
diff --git a/karaf/spring/pom.xml b/karaf/deployer/blueprint/pom.xml
similarity index 79%
copy from karaf/spring/pom.xml
copy to karaf/deployer/blueprint/pom.xml
index 6eb7b2b..2b0bcf5 100644
--- a/karaf/spring/pom.xml
+++ b/karaf/deployer/blueprint/pom.xml
@@ -22,18 +22,18 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel</groupId>
-        <artifactId>kernel</artifactId>
+        <groupId>org.apache.servicemix.kernel.deployer</groupId>
+        <artifactId>deployer</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel</groupId>
-    <artifactId>org.apache.servicemix.kernel.spring</artifactId>
+    <groupId>org.apache.servicemix.kernel.deployer</groupId>
+    <artifactId>org.apache.servicemix.kernel.deployer.blueprint</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
-    <name>Apache ServiceMix Kernel :: Spring Deployer</name>
+    <name>Apache ServiceMix Kernel :: Blueprint Deployer</name>
 
-    <description>This deployer transforms a plain spring xml file to a deployable bundle</description>
+    <description>This deployer transforms a plain blueprint xml file to a deployable bundle</description>
 
     <dependencies>
         <dependency>
@@ -46,8 +46,8 @@
             <artifactId>spring-osgi-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel</groupId>
-            <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
+            <groupId>org.apache.servicemix.kernel.deployer</groupId>
+            <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
@@ -63,7 +63,7 @@
                 <configuration>
                     <instructions>
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Private-Package>org.apache.servicemix.kernel.spring</Private-Package>
+                        <Private-Package>org.apache.servicemix.kernel.deployer.blueprint</Private-Package>
                         <Spring-Context>*;publish-context:=false;create-asynchronously:=false</Spring-Context>
                     </instructions>
                 </configuration>
diff --git a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringDeploymentListener.java b/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListener.java
similarity index 80%
copy from karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringDeploymentListener.java
copy to karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListener.java
index ce0c1e0..13ef072 100644
--- a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringDeploymentListener.java
+++ b/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListener.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.blueprint;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -27,16 +27,16 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.servicemix.kernel.filemonitor.DeploymentListener;
+import org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener;
 
 /**
  * A deployment listener that listens for spring xml applications
  * and creates bundles for these.
  */
-public class SpringDeploymentListener implements DeploymentListener {
+public class BlueprintDeploymentListener implements DeploymentListener {
 
 
-    private static final Log LOGGER = LogFactory.getLog(SpringDeploymentListener.class);
+    private static final Log LOGGER = LogFactory.getLog(BlueprintDeploymentListener.class);
 
     private DocumentBuilderFactory dbf;
 
@@ -46,7 +46,7 @@
                 Document doc = parse(artifact);
                 String name = doc.getDocumentElement().getLocalName();
                 String uri  = doc.getDocumentElement().getNamespaceURI();
-                if ("beans".equals(name) && "http://www.springframework.org/schema/beans".equals(uri)) {
+                if ("blueprint".equals(name) && "http://www.osgi.org/xmlns/blueprint/v1.0.0".equals(uri)) {
                     return true;
                 }
             }
@@ -60,11 +60,11 @@
         try {
             File destFile = new File(tmpDir, artifact.getName() + ".jar");
             FileOutputStream os = new FileOutputStream(destFile);
-            SpringTransformer.transform(artifact.toURL(), os);
+            BlueprintTransformer.transform(artifact.toURL(), os);
             os.close();
             return destFile;
         } catch (Exception e) {
-            LOGGER.error("Unable to build spring application bundle", e);
+            LOGGER.error("Unable to build blueprint application bundle", e);
             return null;
         }
     }
diff --git a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringTransformer.java b/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintTransformer.java
similarity index 94%
copy from karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringTransformer.java
copy to karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintTransformer.java
index 982fbc9..f466527 100644
--- a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringTransformer.java
+++ b/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintTransformer.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.blueprint;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
@@ -51,7 +51,7 @@
 
 import org.osgi.framework.Constants;
 
-public class SpringTransformer {
+public class BlueprintTransformer {
 
     static Transformer transformer;
     static DocumentBuilderFactory dbf;
@@ -74,7 +74,6 @@
         m.getMainAttributes().putValue(Constants.BUNDLE_MANIFESTVERSION, "2");
         m.getMainAttributes().putValue(Constants.BUNDLE_SYMBOLICNAME, str[0]);
         m.getMainAttributes().putValue(Constants.BUNDLE_VERSION, str[1]);
-        m.getMainAttributes().putValue("Spring-Context", "*;publish-context:=false;create-asynchronously:=true");
         String importPkgs = getImportPackages(analyze(new DOMSource(doc)));
         if (importPkgs != null && importPkgs.length() > 0) {
             m.getMainAttributes().putValue(Constants.IMPORT_PACKAGE, importPkgs);
@@ -103,12 +102,12 @@
         out.putNextEntry(e);
         m.write(out);
         out.closeEntry();
-        e = new ZipEntry("META-INF/");
+        e = new ZipEntry("OSGI-INF/");
         out.putNextEntry(e);
-        e = new ZipEntry("META-INF/spring/");
+        e = new ZipEntry("OSGI-INF/blueprint/");
         out.putNextEntry(e);
         out.closeEntry();
-        e = new ZipEntry("META-INF/spring/" + name);
+        e = new ZipEntry("OSGI-INF/blueprint/" + name);
         out.putNextEntry(e);
         // Copy the new DOM
         if (tf == null) {
@@ -185,7 +184,7 @@
             if (tf == null) {
                 tf = TransformerFactory.newInstance();
             }
-            Source s = new StreamSource(SpringTransformer.class.getResourceAsStream("extract.xsl"));
+            Source s = new StreamSource(BlueprintTransformer.class.getResourceAsStream("extract.xsl"));
             transformer = tf.newTransformer(s);
         }
 
diff --git a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringURLHandler.java b/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintURLHandler.java
similarity index 83%
copy from karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringURLHandler.java
copy to karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintURLHandler.java
index e9fedaf..a03ecae 100644
--- a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringURLHandler.java
+++ b/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintURLHandler.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.blueprint;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -34,13 +34,13 @@
  * A URL handler that will transform a JBI artifact to an OSGi bundle
  * on the fly.  Needs to be registered in the OSGi registry.
  */
-public class SpringURLHandler extends AbstractURLStreamHandlerService {
+public class BlueprintURLHandler extends AbstractURLStreamHandlerService {
 
-	private static Log logger = LogFactory.getLog(SpringURLHandler.class);
+	private static Log logger = LogFactory.getLog(BlueprintURLHandler.class);
 
-	private static String SYNTAX = "spring: spring-xml-uri";
+	private static String SYNTAX = "blueprint: bp-xml-uri";
 
-	private URL springXmlURL;
+	private URL blueprintXmlURL;
 
     /**
      * Open the connection for the given URL.
@@ -54,14 +54,14 @@
 		if (url.getPath() == null || url.getPath().trim().length() == 0) {
 			throw new MalformedURLException ("Path can not be null or empty. Syntax: " + SYNTAX );
 		}
-		springXmlURL = new URL(url.getPath());
+		blueprintXmlURL = new URL(url.getPath());
 
-		logger.debug("Spring xml URL is: [" + springXmlURL + "]");
+		logger.debug("Spring xml URL is: [" + blueprintXmlURL + "]");
 		return new Connection(url);
 	}
 	
-	public URL getSpringXmlURL() {
-		return springXmlURL;
+	public URL getBlueprintXmlURL() {
+		return blueprintXmlURL;
 	}
 
     public class Connection extends URLConnection {
@@ -79,7 +79,7 @@
             try {
                 final File f = File.createTempFile("smx", "xml");
                 FileOutputStream os = new FileOutputStream(f);
-                SpringTransformer.transform(springXmlURL, os);
+                BlueprintTransformer.transform(blueprintXmlURL, os);
                 os.close();
                 return new FileInputStream(f) {
                     public void close() throws IOException {
diff --git a/karaf/spring/src/main/resources/META-INF/spring/spring-deployer.xml b/karaf/deployer/blueprint/src/main/resources/META-INF/spring/blueprint-deployer.xml
similarity index 74%
copy from karaf/spring/src/main/resources/META-INF/spring/spring-deployer.xml
copy to karaf/deployer/blueprint/src/main/resources/META-INF/spring/blueprint-deployer.xml
index 779c2af..bb3e430 100644
--- a/karaf/spring/src/main/resources/META-INF/spring/spring-deployer.xml
+++ b/karaf/deployer/blueprint/src/main/resources/META-INF/spring/blueprint-deployer.xml
@@ -29,21 +29,21 @@
   http://www.springframework.org/schema/osgi
   http://www.springframework.org/schema/osgi/spring-osgi.xsd">
 
-    <bean id="springDeploymentListener" class="org.apache.servicemix.kernel.spring.SpringDeploymentListener">
+    <bean id="blueprintDeploymentListener" class="org.apache.servicemix.kernel.deployer.blueprint.BlueprintDeploymentListener">
 
     </bean>
 
-    <osgi:service ref="springDeploymentListener">
+    <osgi:service ref="blueprintDeploymentListener">
         <osgi:interfaces>
-            <value>org.apache.servicemix.kernel.filemonitor.DeploymentListener</value>
+            <value>org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener</value>
         </osgi:interfaces>
     </osgi:service>
 
-    <bean id="springHandler" class="org.apache.servicemix.kernel.spring.SpringURLHandler" />
+    <bean id="blueprintHandler" class="org.apache.servicemix.kernel.deployer.blueprint.BlueprintURLHandler" />
 
-    <osgi:service ref="springHandler" interface="org.osgi.service.url.URLStreamHandlerService">
+    <osgi:service ref="blueprintHandler" interface="org.osgi.service.url.URLStreamHandlerService">
     	<osgi:service-properties>
-            <entry key="url.handler.protocol" value="spring"/>
+            <entry key="url.handler.protocol" value="blueprint"/>
         </osgi:service-properties>
     </osgi:service>
 
diff --git a/karaf/deployer/blueprint/src/main/resources/org/apache/servicemix/kernel/deployer/blueprint/extract.xsl b/karaf/deployer/blueprint/src/main/resources/org/apache/servicemix/kernel/deployer/blueprint/extract.xsl
new file mode 100644
index 0000000..2c8c291
--- /dev/null
+++ b/karaf/deployer/blueprint/src/main/resources/org/apache/servicemix/kernel/deployer/blueprint/extract.xsl
@@ -0,0 +1,49 @@
+<?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.
+
+-->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+    <xsl:output method="text" />
+
+	<xsl:template match="/">
+
+		<!-- Match all attributes that holds a class or a comma delimited
+		     list of classes and print them -->
+
+		<xsl:for-each select="
+				//bp:*/@class
+			|	//bp:*/@type
+			|	//bp:*/@value-type
+			|	//bp:*/@key-type
+			|	//bp:*/bp:interfaces/bp:value/text()
+		">
+			<xsl:value-of select="." />
+			<xsl:text>
+			</xsl:text>
+		</xsl:for-each>
+
+		<!-- This seems some magic to get extra imports? -->
+
+	</xsl:template>
+
+
+</xsl:stylesheet>
+
diff --git a/karaf/spring/src/test/java/org/apache/servicemix/kernel/spring/SpringDeploymentListenerTest.java b/karaf/deployer/blueprint/src/test/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListenerTest.java
similarity index 81%
copy from karaf/spring/src/test/java/org/apache/servicemix/kernel/spring/SpringDeploymentListenerTest.java
copy to karaf/deployer/blueprint/src/test/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListenerTest.java
index 38a37bb..6ab2c33 100644
--- a/karaf/spring/src/test/java/org/apache/servicemix/kernel/spring/SpringDeploymentListenerTest.java
+++ b/karaf/deployer/blueprint/src/test/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListenerTest.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.blueprint;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -30,24 +30,24 @@
 
 import junit.framework.TestCase;
 
-public class SpringDeploymentListenerTest extends TestCase {
+public class BlueprintDeploymentListenerTest extends TestCase {
 
     public void testPackagesExtraction() throws Exception {
-        SpringDeploymentListener l = new SpringDeploymentListener();
-        File f = new File(getClass().getClassLoader().getResource("META-INF/spring/spring-deployer.xml").toURI());
-        Set<String> pkgs = SpringTransformer.analyze(new DOMSource(SpringTransformer.parse(f.toURL())));
+        BlueprintDeploymentListener l = new BlueprintDeploymentListener();
+        File f = new File(getClass().getClassLoader().getResource("test.xml").toURI());
+        Set<String> pkgs = BlueprintTransformer.analyze(new DOMSource(BlueprintTransformer.parse(f.toURL())));
         assertNotNull(pkgs);
         assertEquals(2, pkgs.size());
         Iterator<String> it = pkgs.iterator();
-        assertEquals("org.apache.servicemix.kernel.spring", it.next());
-        assertEquals("org.osgi.service.url", it.next());
+        assertEquals("java.lang", it.next());
+        assertEquals("org.apache.geronimo.blueprint.sample", it.next());
     }
 
     public void testCustomManifest() throws Exception {
         File f = File.createTempFile("smx", ".jar");
         try {
             OutputStream os = new FileOutputStream(f);
-            SpringTransformer.transform(getClass().getClassLoader().getResource("test.xml"), os);
+            BlueprintTransformer.transform(getClass().getClassLoader().getResource("test.xml"), os);
             os.close();
             InputStream is = new FileInputStream(f);
             JarInputStream jar = new JarInputStream(is);
@@ -74,7 +74,7 @@
     }
 
     private void assertVersion(String s, String... expectedParts) {
-        String[] parts = SpringTransformer.extractNameVersionType(s);
+        String[] parts = BlueprintTransformer.extractNameVersionType(s);
         assertEquals(expectedParts.length, parts.length);
         for (int i = 0; i < expectedParts.length; i++) {
             assertEquals(expectedParts[i], parts[i]);
diff --git a/karaf/deployer/blueprint/src/test/resources/test.xml b/karaf/deployer/blueprint/src/test/resources/test.xml
new file mode 100644
index 0000000..3411d48
--- /dev/null
+++ b/karaf/deployer/blueprint/src/test/resources/test.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+           xmlns:cm="http://www.osgi.org/xmlns/blueprint-cm/v1.0.0"
+           default-availability="optional">
+
+    <type-converters>
+        <bean id="converter1" class="org.apache.geronimo.blueprint.sample.DateTypeConverter">
+            <property name="format" value="yyyy.MM.dd"/>
+        </bean>
+        <bean id="converter2" class="org.apache.geronimo.blueprint.sample.CurrencyTypeConverter"/>
+
+        <cm:property-placeholder id="property-placeholder" persistent-id="blueprint-sample">
+            <cm:default-properties>
+                <cm:property name="key.b" value="-1"/>
+            </cm:default-properties>
+        </cm:property-placeholder>
+    </type-converters>
+
+    <bean id="foo" class="org.apache.geronimo.blueprint.sample.Foo" init-method="init" destroy-method="destroy">
+        <property name="a" value="5" />
+        <property name="b" value="${key.b}" />
+        <property name="bar" ref="bar" />
+        <property name="currency">
+              <value>PLN</value>
+        </property>
+        <property name="date">
+              <value>2009.04.17</value>
+        </property>
+    </bean>
+
+    <bean id="bar" class="org.apache.geronimo.blueprint.sample.Bar">
+        <property name="value"><value>Hello FooBar</value></property>
+        <property name="context" ref="bundleContext"/>
+        <property name="list">
+            <list>
+                <value>a list element</value>
+                <value type = "java.lang.Integer">5</value>
+            </list>
+        </property>
+    </bean>
+
+    <service ref="foo" auto-export="all-classes">
+        <service-properties>
+            <entry key="key" value="value"/>
+        </service-properties>
+        <registration-listener ref="fooRegistrationListener"
+                               registration-method="serviceRegistered"
+                               unregistration-method="serviceUnregistered"/>
+    </service>
+
+    <bean id="fooRegistrationListener" class="org.apache.geronimo.blueprint.sample.FooRegistrationListener"/>
+
+    <reference id="ref" interface="org.apache.geronimo.blueprint.sample.Foo">
+    </reference>
+
+    <reference id="ref2" interface="org.apache.geronimo.blueprint.sample.InterfaceA" timeout="100">
+        <listener bind-method="bind" unbind-method="unbind" ref="bindingListener" />
+    </reference>
+
+    <bean id="bindingListener" class="org.apache.geronimo.blueprint.sample.BindingListener"/>
+
+    <ref-list id="ref-list" interface="org.apache.geronimo.blueprint.sample.InterfaceA">
+        <listener bind-method="bind" unbind-method="unbind" ref="listBindingListener" />
+    </ref-list>
+
+    <bean id="listBindingListener" class="org.apache.geronimo.blueprint.sample.BindingListener"/>
+
+</blueprint>
+
diff --git a/karaf/spring/pom.xml b/karaf/deployer/features/pom.xml
similarity index 75%
copy from karaf/spring/pom.xml
copy to karaf/deployer/features/pom.xml
index 6eb7b2b..738126e 100644
--- a/karaf/spring/pom.xml
+++ b/karaf/deployer/features/pom.xml
@@ -22,18 +22,18 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel</groupId>
-        <artifactId>kernel</artifactId>
+        <groupId>org.apache.servicemix.kernel.deployer</groupId>
+        <artifactId>deployer</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel</groupId>
-    <artifactId>org.apache.servicemix.kernel.spring</artifactId>
+    <groupId>org.apache.servicemix.kernel.deployer</groupId>
+    <artifactId>org.apache.servicemix.kernel.deployer.features</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
-    <name>Apache ServiceMix Kernel :: Spring Deployer</name>
+    <name>Apache ServiceMix Kernel :: Features Deployer</name>
 
-    <description>This deployer transforms a plain spring xml file to a deployable bundle</description>
+    <description>This deployer can deploy features descriptor on the fly</description>
 
     <dependencies>
         <dependency>
@@ -46,8 +46,12 @@
             <artifactId>spring-osgi-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel</groupId>
-            <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
+            <groupId>org.apache.servicemix.kernel.gshell</groupId>
+            <artifactId>org.apache.servicemix.kernel.gshell.features</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.kernel.deployer</groupId>
+            <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
@@ -63,7 +67,7 @@
                 <configuration>
                     <instructions>
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Private-Package>org.apache.servicemix.kernel.spring</Private-Package>
+                        <Private-Package>org.apache.servicemix.kernel.deployer.blueprint</Private-Package>
                         <Spring-Context>*;publish-context:=false;create-asynchronously:=false</Spring-Context>
                     </instructions>
                 </configuration>
diff --git a/karaf/gshell/gshell-features/src/main/java/org/apache/servicemix/kernel/gshell/features/internal/FeatureDeploymentListener.java b/karaf/deployer/features/src/main/java/org/apache/servicemix/kernel/deployer/features/FeatureDeploymentListener.java
similarity index 87%
rename from karaf/gshell/gshell-features/src/main/java/org/apache/servicemix/kernel/gshell/features/internal/FeatureDeploymentListener.java
rename to karaf/deployer/features/src/main/java/org/apache/servicemix/kernel/deployer/features/FeatureDeploymentListener.java
index e4a036b..b26d548 100644
--- a/karaf/gshell/gshell-features/src/main/java/org/apache/servicemix/kernel/gshell/features/internal/FeatureDeploymentListener.java
+++ b/karaf/deployer/features/src/main/java/org/apache/servicemix/kernel/deployer/features/FeatureDeploymentListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.gshell.features.internal;
+package org.apache.servicemix.kernel.deployer.features;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -40,8 +40,10 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.servicemix.kernel.filemonitor.DeploymentListener;
 import org.apache.servicemix.kernel.gshell.features.Feature;
+import org.apache.servicemix.kernel.gshell.features.FeaturesService;
+import org.apache.servicemix.kernel.gshell.features.Repository;
+import org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
@@ -62,14 +64,14 @@
     private static final Log LOGGER = LogFactory.getLog(FeatureDeploymentListener.class);
 
     private DocumentBuilderFactory dbf;
-    private FeaturesServiceImpl featuresService;
+    private FeaturesService featuresService;
     private BundleContext bundleContext;
 
-    public void setFeaturesService(FeaturesServiceImpl featuresService) {
+    public void setFeaturesService(FeaturesService featuresService) {
         this.featuresService = featuresService;
     }
 
-    public FeaturesServiceImpl getFeaturesService() {
+    public FeaturesService getFeaturesService() {
         return featuresService;
     }
 
@@ -164,21 +166,29 @@
                 Enumeration featuresUrlEnumeration = bundle.findEntries("/META-INF/" + FEATURE_PATH + "/", "*.xml", false);
                 while (featuresUrlEnumeration != null && featuresUrlEnumeration.hasMoreElements()) {
                     URL url = (URL) featuresUrlEnumeration.nextElement();
-                    RepositoryImpl repo = featuresService.internalAddRepository(url.toURI());
-                    for (Feature f : repo.getFeatures()) {
-                        featuresService.installFeature(f.getName(), f.getVersion());
+                    featuresService.addRepository(url.toURI());
+                    for (Repository repo : featuresService.listRepositories()) {
+                        if (repo.getURI().equals(url.toURI())) {
+                            for (Feature f : repo.getFeatures()) {
+                                featuresService.installFeature(f.getName(), f.getVersion());
+                            }
+                        }
                     }
-                    featuresService.internalRemoveRepository(url.toURI());
+                    featuresService.removeRepository(url.toURI());
                 }
             } else if (bundleEvent.getType() == BundleEvent.UNINSTALLED) {
                 Enumeration featuresUrlEnumeration = bundle.findEntries("/META-INF/" + FEATURE_PATH + "/", "*.xml", false);
                 while (featuresUrlEnumeration != null && featuresUrlEnumeration.hasMoreElements()) {
                     URL url = (URL) featuresUrlEnumeration.nextElement();
-                    RepositoryImpl repo = featuresService.internalAddRepository(url.toURI());
-                    for (Feature f : repo.getFeatures()) {
-                        featuresService.uninstallFeature(f.getName(), f.getVersion());
+                    featuresService.addRepository(url.toURI());
+                    for (Repository repo : featuresService.listRepositories()) {
+                        if (repo.getURI().equals(url.toURI())) {
+                            for (Feature f : repo.getFeatures()) {
+                                featuresService.uninstallFeature(f.getName(), f.getVersion());
+                            }
+                        }
                     }
-                    featuresService.internalRemoveRepository(url.toURI());
+                    featuresService.removeRepository(url.toURI());
                 }
             }
         } catch (Exception e) {
diff --git a/karaf/deployer/features/src/main/resources/META-INF/spring/features-deployer.xml b/karaf/deployer/features/src/main/resources/META-INF/spring/features-deployer.xml
new file mode 100644
index 0000000..54b1913
--- /dev/null
+++ b/karaf/deployer/features/src/main/resources/META-INF/spring/features-deployer.xml
@@ -0,0 +1,49 @@
+<?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.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:ctx="http://www.springframework.org/schema/context"
+       xmlns:osgi="http://www.springframework.org/schema/osgi"
+       xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:gshell="http://servicemix.apache.org/schema/servicemix-gshell"
+       xsi:schemaLocation="
+  http://www.springframework.org/schema/beans
+  http://www.springframework.org/schema/beans/spring-beans.xsd
+  http://www.springframework.org/schema/context
+  http://www.springframework.org/schema/context/spring-context.xsd
+  http://www.springframework.org/schema/osgi
+  http://www.springframework.org/schema/osgi/spring-osgi.xsd
+  http://www.springframework.org/schema/osgi-compendium
+  http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd
+  http://www.springframework.org/schema/util
+  http://www.springframework.org/schema/util/spring-util.xsd
+  http://servicemix.apache.org/schema/servicemix-gshell
+  http://servicemix.apache.org/schema/servicemix-gshell/servicemix-gshell.xsd">
+
+    <osgi:reference id="featuresService" interface="org.apache.servicemix.kernel.gshell.features.FeaturesService" cardinality="1..1"/>
+
+    <bean id="featureDeploymentListener" class="org.apache.servicemix.kernel.deployer.features.FeatureDeploymentListener">
+        <property name="featuresService" ref="featuresService" />
+    </bean>
+
+    <osgi:service ref="featureDeploymentListener" interface="org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener" />
+
+</beans>
\ No newline at end of file
diff --git a/karaf/filemonitor/pom.xml b/karaf/deployer/filemonitor/pom.xml
similarity index 91%
rename from karaf/filemonitor/pom.xml
rename to karaf/deployer/filemonitor/pom.xml
index 58468bf..7817bc2 100644
--- a/karaf/filemonitor/pom.xml
+++ b/karaf/deployer/filemonitor/pom.xml
@@ -22,13 +22,13 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel</groupId>
-        <artifactId>kernel</artifactId>
+        <groupId>org.apache.servicemix.kernel.deployer</groupId>
+        <artifactId>deployer</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel</groupId>
-    <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
+    <groupId>org.apache.servicemix.kernel.deployer</groupId>
+    <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
     <name>Apache ServiceMix Kernel :: File Monitor</name>
@@ -75,7 +75,7 @@
                     <instructions>
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                         <Export-Package>${pom.artifactId}</Export-Package>
-                        <Bundle-Activator>org.apache.servicemix.kernel.filemonitor.FileMonitorActivator
+                        <Bundle-Activator>org.apache.servicemix.kernel.deployer.filemonitor.FileMonitorActivator
                         </Bundle-Activator>
                     </instructions>
                 </configuration>
diff --git a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/DeploymentListener.java b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/DeploymentListener.java
similarity index 94%
rename from karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/DeploymentListener.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/DeploymentListener.java
index 6423561..18486c9 100644
--- a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/DeploymentListener.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/DeploymentListener.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.filemonitor;
+package org.apache.servicemix.kernel.deployer.filemonitor;
 
 import java.io.File;
 
diff --git a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/FileMonitor.java b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitor.java
similarity index 99%
rename from karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/FileMonitor.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitor.java
index c0bf235..2a08990 100644
--- a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/FileMonitor.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitor.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.filemonitor;
+package org.apache.servicemix.kernel.deployer.filemonitor;
 
 import java.io.Closeable;
 import java.io.File;
diff --git a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/FileMonitorActivator.java b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorActivator.java
similarity index 97%
rename from karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/FileMonitorActivator.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorActivator.java
index 82dea71..a700523 100644
--- a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/FileMonitorActivator.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorActivator.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.filemonitor;
+package org.apache.servicemix.kernel.deployer.filemonitor;
 
 import java.util.Collection;
 import java.util.Dictionary;
@@ -94,7 +94,7 @@
     // ManagedServiceFactory interface
     // -------------------------------------------------------------------------
     public String getName() {
-        return "org.apache.servicemix.kernel.filemonitor.FileMonitor";
+        return "org.apache.servicemix.kernel.deployer.filemonitor.FileMonitor";
     }
 
     public void updated(String pid, Dictionary properties) throws ConfigurationException {
diff --git a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/JarUtil.java b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/JarUtil.java
similarity index 98%
rename from karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/JarUtil.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/JarUtil.java
index 98b6036..dff9e5c 100644
--- a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/JarUtil.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/JarUtil.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.filemonitor;
+package org.apache.servicemix.kernel.deployer.filemonitor;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
diff --git a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/Scanner.java b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/Scanner.java
similarity index 99%
rename from karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/Scanner.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/Scanner.java
index 8b25226..239a1a8 100644
--- a/karaf/filemonitor/src/main/java/org/apache/servicemix/kernel/filemonitor/Scanner.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/Scanner.java
@@ -12,7 +12,7 @@
 //See the License for the specific language governing permissions and
 //limitations under the License.
 //========================================================================
-package org.apache.servicemix.kernel.filemonitor;
+package org.apache.servicemix.kernel.deployer.filemonitor;
 
 import java.io.File;
 import java.io.FilenameFilter;
diff --git a/karaf/filemonitor/src/test/data/camel-example-spring/META-INF/LICENSE.txt b/karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/LICENSE.txt
similarity index 100%
rename from karaf/filemonitor/src/test/data/camel-example-spring/META-INF/LICENSE.txt
rename to karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/LICENSE.txt
diff --git a/karaf/filemonitor/src/test/data/camel-example-spring/META-INF/MANIFEST.MF b/karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/MANIFEST.MF
similarity index 100%
rename from karaf/filemonitor/src/test/data/camel-example-spring/META-INF/MANIFEST.MF
rename to karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/MANIFEST.MF
diff --git a/karaf/filemonitor/src/test/data/camel-example-spring/META-INF/NOTICE.txt b/karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/NOTICE.txt
similarity index 100%
rename from karaf/filemonitor/src/test/data/camel-example-spring/META-INF/NOTICE.txt
rename to karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/NOTICE.txt
diff --git a/karaf/filemonitor/src/test/data/camel-example-spring/META-INF/spring/camel-context.xml b/karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/spring/camel-context.xml
similarity index 100%
rename from karaf/filemonitor/src/test/data/camel-example-spring/META-INF/spring/camel-context.xml
rename to karaf/deployer/filemonitor/src/test/data/camel-example-spring/META-INF/spring/camel-context.xml
diff --git a/karaf/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder$SomeBean.class b/karaf/deployer/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder$SomeBean.class
similarity index 100%
rename from karaf/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder$SomeBean.class
rename to karaf/deployer/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder$SomeBean.class
Binary files differ
diff --git a/karaf/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder.class b/karaf/deployer/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder.class
similarity index 100%
rename from karaf/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder.class
rename to karaf/deployer/filemonitor/src/test/data/camel-example-spring/org/apache/camel/example/spring/MyRouteBuilder.class
Binary files differ
diff --git a/karaf/filemonitor/src/test/data/foo/META-INF/MANIFEST.MF b/karaf/deployer/filemonitor/src/test/data/foo/META-INF/MANIFEST.MF
similarity index 100%
rename from karaf/filemonitor/src/test/data/foo/META-INF/MANIFEST.MF
rename to karaf/deployer/filemonitor/src/test/data/foo/META-INF/MANIFEST.MF
diff --git a/karaf/filemonitor/src/test/data/foo/foo.txt b/karaf/deployer/filemonitor/src/test/data/foo/foo.txt
similarity index 100%
rename from karaf/filemonitor/src/test/data/foo/foo.txt
rename to karaf/deployer/filemonitor/src/test/data/foo/foo.txt
diff --git a/karaf/filemonitor/src/test/java/org/apache/servicemix/kernel/filemonitor/BundlePackerTest.java b/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/BundlePackerTest.java
similarity index 95%
rename from karaf/filemonitor/src/test/java/org/apache/servicemix/kernel/filemonitor/BundlePackerTest.java
rename to karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/BundlePackerTest.java
index 78a9159..83109ed 100644
--- a/karaf/filemonitor/src/test/java/org/apache/servicemix/kernel/filemonitor/BundlePackerTest.java
+++ b/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/BundlePackerTest.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.filemonitor;
+package org.apache.servicemix.kernel.deployer.filemonitor;
 
 import java.io.File;
 
diff --git a/karaf/filemonitor/src/test/java/org/apache/servicemix/kernel/filemonitor/FileMonitorTest.java b/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorTest.java
similarity index 96%
rename from karaf/filemonitor/src/test/java/org/apache/servicemix/kernel/filemonitor/FileMonitorTest.java
rename to karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorTest.java
index 5a99c96..998ca84 100644
--- a/karaf/filemonitor/src/test/java/org/apache/servicemix/kernel/filemonitor/FileMonitorTest.java
+++ b/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorTest.java
@@ -15,9 +15,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.filemonitor;
+package org.apache.servicemix.kernel.deployer.filemonitor;
 
 import junit.framework.TestCase;
+import org.apache.servicemix.kernel.deployer.filemonitor.FileMonitor;
 
 /**
  * FileMonitor Tester.
diff --git a/karaf/deployer/pom.xml b/karaf/deployer/pom.xml
new file mode 100644
index 0000000..7e2810f
--- /dev/null
+++ b/karaf/deployer/pom.xml
@@ -0,0 +1,43 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.kernel</groupId>
+        <artifactId>kernel</artifactId>
+        <version>1.2.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.kernel.deployer</groupId>
+    <artifactId>deployer</artifactId>
+    <packaging>pom</packaging>
+    <version>1.2.0-SNAPSHOT</version>
+    <name>Apache ServiceMix Kernel :: Deployer</name>
+
+    <modules>
+        <module>filemonitor</module>
+        <module>spring</module>
+        <module>blueprint</module>
+        <module>features</module>
+    </modules>
+
+</project>
\ No newline at end of file
diff --git a/karaf/spring/pom.xml b/karaf/deployer/spring/pom.xml
similarity index 90%
rename from karaf/spring/pom.xml
rename to karaf/deployer/spring/pom.xml
index 6eb7b2b..31778a9 100644
--- a/karaf/spring/pom.xml
+++ b/karaf/deployer/spring/pom.xml
@@ -27,8 +27,8 @@
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel</groupId>
-    <artifactId>org.apache.servicemix.kernel.spring</artifactId>
+    <groupId>org.apache.servicemix.kernel.deployer</groupId>
+    <artifactId>org.apache.servicemix.kernel.deployer.spring</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
     <name>Apache ServiceMix Kernel :: Spring Deployer</name>
@@ -46,8 +46,8 @@
             <artifactId>spring-osgi-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel</groupId>
-            <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
+            <groupId>org.apache.servicemix.kernel.deployer</groupId>
+            <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
diff --git a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringDeploymentListener.java b/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListener.java
similarity index 95%
rename from karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringDeploymentListener.java
rename to karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListener.java
index ce0c1e0..11c394f 100644
--- a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringDeploymentListener.java
+++ b/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListener.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.spring;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -27,7 +27,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.servicemix.kernel.filemonitor.DeploymentListener;
+import org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener;
 
 /**
  * A deployment listener that listens for spring xml applications
@@ -35,7 +35,6 @@
  */
 public class SpringDeploymentListener implements DeploymentListener {
 
-
     private static final Log LOGGER = LogFactory.getLog(SpringDeploymentListener.class);
 
     private DocumentBuilderFactory dbf;
diff --git a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringTransformer.java b/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringTransformer.java
similarity index 98%
rename from karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringTransformer.java
rename to karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringTransformer.java
index 982fbc9..91d8b2a 100644
--- a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringTransformer.java
+++ b/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringTransformer.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.spring;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
diff --git a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringURLHandler.java b/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringURLHandler.java
similarity index 97%
rename from karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringURLHandler.java
rename to karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringURLHandler.java
index e9fedaf..fce7913 100644
--- a/karaf/spring/src/main/java/org/apache/servicemix/kernel/spring/SpringURLHandler.java
+++ b/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringURLHandler.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.spring;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/karaf/spring/src/main/resources/META-INF/spring/spring-deployer.xml b/karaf/deployer/spring/src/main/resources/META-INF/spring/spring-deployer.xml
similarity index 91%
rename from karaf/spring/src/main/resources/META-INF/spring/spring-deployer.xml
rename to karaf/deployer/spring/src/main/resources/META-INF/spring/spring-deployer.xml
index 779c2af..af2921a 100644
--- a/karaf/spring/src/main/resources/META-INF/spring/spring-deployer.xml
+++ b/karaf/deployer/spring/src/main/resources/META-INF/spring/spring-deployer.xml
@@ -29,17 +29,17 @@
   http://www.springframework.org/schema/osgi
   http://www.springframework.org/schema/osgi/spring-osgi.xsd">
 
-    <bean id="springDeploymentListener" class="org.apache.servicemix.kernel.spring.SpringDeploymentListener">
+    <bean id="springDeploymentListener" class="org.apache.servicemix.kernel.deployer.spring.SpringDeploymentListener">
 
     </bean>
 
     <osgi:service ref="springDeploymentListener">
         <osgi:interfaces>
-            <value>org.apache.servicemix.kernel.filemonitor.DeploymentListener</value>
+            <value>org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener</value>
         </osgi:interfaces>
     </osgi:service>
 
-    <bean id="springHandler" class="org.apache.servicemix.kernel.spring.SpringURLHandler" />
+    <bean id="springHandler" class="org.apache.servicemix.kernel.deployer.spring.SpringURLHandler" />
 
     <osgi:service ref="springHandler" interface="org.osgi.service.url.URLStreamHandlerService">
     	<osgi:service-properties>
diff --git a/karaf/spring/src/main/resources/org/apache/servicemix/kernel/spring/extract.xsl b/karaf/deployer/spring/src/main/resources/org/apache/servicemix/kernel/deployer/spring/extract.xsl
similarity index 100%
rename from karaf/spring/src/main/resources/org/apache/servicemix/kernel/spring/extract.xsl
rename to karaf/deployer/spring/src/main/resources/org/apache/servicemix/kernel/deployer/spring/extract.xsl
diff --git a/karaf/spring/src/test/java/org/apache/servicemix/kernel/spring/SpringDeploymentListenerTest.java b/karaf/deployer/spring/src/test/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListenerTest.java
similarity index 91%
rename from karaf/spring/src/test/java/org/apache/servicemix/kernel/spring/SpringDeploymentListenerTest.java
rename to karaf/deployer/spring/src/test/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListenerTest.java
index 38a37bb..9a70dd0 100644
--- a/karaf/spring/src/test/java/org/apache/servicemix/kernel/spring/SpringDeploymentListenerTest.java
+++ b/karaf/deployer/spring/src/test/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListenerTest.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.kernel.spring;
+package org.apache.servicemix.kernel.deployer.spring;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -29,6 +29,8 @@
 import javax.xml.transform.dom.DOMSource;
 
 import junit.framework.TestCase;
+import org.apache.servicemix.kernel.deployer.spring.SpringDeploymentListener;
+import org.apache.servicemix.kernel.deployer.spring.SpringTransformer;
 
 public class SpringDeploymentListenerTest extends TestCase {
 
@@ -39,7 +41,7 @@
         assertNotNull(pkgs);
         assertEquals(2, pkgs.size());
         Iterator<String> it = pkgs.iterator();
-        assertEquals("org.apache.servicemix.kernel.spring", it.next());
+        assertEquals("org.apache.servicemix.kernel.deployer.spring", it.next());
         assertEquals("org.osgi.service.url", it.next());
     }
 
diff --git a/karaf/spring/src/test/resources/test.xml b/karaf/deployer/spring/src/test/resources/test.xml
similarity index 91%
rename from karaf/spring/src/test/resources/test.xml
rename to karaf/deployer/spring/src/test/resources/test.xml
index 7976cbb..31dca21 100644
--- a/karaf/spring/src/test/resources/test.xml
+++ b/karaf/deployer/spring/src/test/resources/test.xml
@@ -34,17 +34,17 @@
         Header=value
     </manifest>
 
-    <bean id="springDeploymentListener" class="org.apache.servicemix.kernel.spring.SpringDeploymentListener">
+    <bean id="springDeploymentListener" class="org.apache.servicemix.kernel.deployer.spring.SpringDeploymentListener">
 
     </bean>
 
     <osgi:service ref="springDeploymentListener">
         <osgi:interfaces>
-            <value>org.apache.servicemix.kernel.filemonitor.DeploymentListener</value>
+            <value>org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener</value>
         </osgi:interfaces>
     </osgi:service>
 
-    <bean id="springHandler" class="org.apache.servicemix.kernel.spring.SpringURLHandler" />
+    <bean id="springHandler" class="org.apache.servicemix.kernel.deployer.spring.SpringURLHandler" />
 
     <osgi:service ref="springHandler" interface="org.osgi.service.url.URLStreamHandlerService">
     	<osgi:service-properties>
diff --git a/karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/servicemix/kernel/gshell/admin/etc/startup.properties b/karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/servicemix/kernel/gshell/admin/etc/startup.properties
index f9689b1..fe1b9b8 100644
--- a/karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/servicemix/kernel/gshell/admin/etc/startup.properties
+++ b/karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/servicemix/kernel/gshell/admin/etc/startup.properties
@@ -25,6 +25,8 @@
 #
 org/ops4j/pax/url/pax-url-mvn/${pax.url.version}/pax-url-mvn-${pax.url.version}.jar=5
 org/ops4j/pax/url/pax-url-wrap/${pax.url.version}/pax-url-wrap-${pax.url.version}.jar=5
+org/ops4j/pax/logging/pax-logging-api/${pax.logging.version}/pax-logging-api-${pax.logging.version}.jar=8
+org/ops4j/pax/logging/pax-logging-service/${pax.logging.version}/pax-logging-service-${pax.logging.version}.jar=8
 org/apache/geronimo/specs/geronimo-servlet_2.5_spec/${geronimo.servlet.version}/geronimo-servlet_2.5_spec-${geronimo.servlet.version}.jar=10
 org/apache/servicemix/specs/org.apache.servicemix.specs.jaxp-api-1.4/${servicemix.specs.version}/org.apache.servicemix.specs.jaxp-api-1.4-${servicemix.specs.version}.jar=10
 org/apache/servicemix/bundles/org.apache.servicemix.bundles.jaxp-ri/${jaxp.ri.version}/org.apache.servicemix.bundles.jaxp-ri-${jaxp.ri.version}.jar=10
@@ -32,9 +34,7 @@
 org/apache/felix/org.apache.felix.configadmin/${felix.configadmin.version}/org.apache.felix.configadmin-${felix.configadmin.version}.jar=10
 org/apache/geronimo/specs/geronimo-annotation_1.0_spec/${geronimo.annotation.version}/geronimo-annotation_1.0_spec-${geronimo.annotation.version}.jar=10
 org/apache/felix/org.apache.felix.prefs/${felix.prefs.version}/org.apache.felix.prefs-${felix.prefs.version}.jar=10
-org/apache/servicemix/kernel/org.apache.servicemix.kernel.filemonitor/${pom.version}/org.apache.servicemix.kernel.filemonitor-${pom.version}.jar=15
-org/ops4j/pax/logging/pax-logging-api/${pax.logging.version}/pax-logging-api-${pax.logging.version}.jar=20
-org/ops4j/pax/logging/pax-logging-service/${pax.logging.version}/pax-logging-service-${pax.logging.version}.jar=20
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.filemonitor/${pom.version}/org.apache.servicemix.kernel.deployer.filemonitor-${pom.version}.jar=15
 
 #
 # The rest of the services..
@@ -42,7 +42,6 @@
 org/apache/servicemix/bundles/org.apache.servicemix.bundles.jline/${jline.version}/org.apache.servicemix.bundles.jline-${jline.version}.jar=30
 org/apache/servicemix/bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.version}/org.apache.servicemix.bundles.aopalliance-${aopalliance.version}.jar=30
 org/apache/servicemix/bundles/org.apache.servicemix.bundles.cglib/${cglib.version}/org.apache.servicemix.bundles.cglib-${cglib.version}.jar=30
-org/apache/servicemix/bundles/org.apache.servicemix.bundles.mina/${mina.version}/org.apache.servicemix.bundles.mina-${mina.version}.jar=30
 org/apache/servicemix/bundles/org.apache.servicemix.bundles.oro/${oro.version}/org.apache.servicemix.bundles.oro-${oro.version}.jar=30
 org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-codec/${commons.codec.version}/org.apache.servicemix.bundles.commons-codec-${commons.codec.version}.jar=30
 org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-httpclient/${commons.httpclient.version}/org.apache.servicemix.bundles.commons-httpclient-${commons.httpclient.version}.jar=30
@@ -55,7 +54,9 @@
 org/springframework/osgi/spring-osgi-core/${spring.osgi.version}/spring-osgi-core-${spring.osgi.version}.jar=30
 org/springframework/osgi/spring-osgi-extender/${spring.osgi.version}/spring-osgi-extender-${spring.osgi.version}.jar=30
 org/springframework/osgi/spring-osgi-io/${spring.osgi.version}/spring-osgi-io-${spring.osgi.version}.jar=30
-org/apache/servicemix/kernel/org.apache.servicemix.kernel.spring/${pom.version}/org.apache.servicemix.kernel.spring-${pom.version}.jar=30
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.spring/${pom.version}/org.apache.servicemix.kernel.deployer.spring-${pom.version}.jar=30
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.blueprint/${pom.version}/org.apache.servicemix.kernel.deployer.blueprint-${pom.version}.jar=30
+org/apache/servicemix/kernel/deployer/org.apache.servicemix.kernel.deployer.features/${pom.version}/org.apache.servicemix.kernel.deployer.features-${pom.version}.jar=30
 org/apache/servicemix/kernel/org.apache.servicemix.kernel.management/${pom.version}/org.apache.servicemix.kernel.management-${pom.version}.jar=30
 org/apache/servicemix/kernel/gshell/org.apache.servicemix.kernel.gshell.admin/${pom.version}/org.apache.servicemix.kernel.gshell.admin-${pom.version}.jar=30
 org/apache/servicemix/kernel/gshell/org.apache.servicemix.kernel.gshell.osgi/${pom.version}/org.apache.servicemix.kernel.gshell.osgi-${pom.version}.jar=30
@@ -65,7 +66,8 @@
 org/apache/servicemix/kernel/gshell/org.apache.servicemix.kernel.gshell.packages/${pom.version}/org.apache.servicemix.kernel.gshell.packages-${pom.version}.jar=30
 org/apache/servicemix/kernel/jaas/org.apache.servicemix.kernel.jaas.config/${pom.version}/org.apache.servicemix.kernel.jaas.config-${pom.version}.jar=30
 org/apache/servicemix/kernel/jaas/org.apache.servicemix.kernel.jaas.modules/${pom.version}/org.apache.servicemix.kernel.jaas.modules-${pom.version}.jar=30
-com/google/code/sshd/sshd/${sshd.version}/sshd-${sshd.version}.jar=30
+org/apache/mina/mina-core/${mina.version}/mina-core-${mina.version}.jar=30
+org/apache/sshd/sshd-core/${sshd.version}/sshd-core-${sshd.version}.jar=30
 org/osgi/jmx/${osgi.jmx.version}/jmx-${osgi.jmx.version}.jar=30
 com/oracle/osgi/jmx-impl/${osgi.jmx.version}/jmx-impl-${osgi.jmx.version}.jar=30
 
diff --git a/karaf/gshell/gshell-features/pom.xml b/karaf/gshell/gshell-features/pom.xml
index f53d9a8..1ebb64a 100644
--- a/karaf/gshell/gshell-features/pom.xml
+++ b/karaf/gshell/gshell-features/pom.xml
@@ -66,11 +66,6 @@
         </dependency>
 
         <dependency>
-            <groupId>org.apache.servicemix.kernel</groupId>
-            <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
-        </dependency>
-        
-        <dependency>
             <groupId>org.springframework.osgi</groupId>
             <artifactId>spring-osgi-core</artifactId>
         </dependency>
diff --git a/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml b/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml
index d45b6be..3ad2736 100644
--- a/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml
+++ b/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml
@@ -85,10 +85,6 @@
         <property name="featuresServiceRegistry" ref="featureServiceRegistry" />
     </bean>
 
-    <bean id="featureDeploymentListener" class="org.apache.servicemix.kernel.gshell.features.internal.FeatureDeploymentListener">
-        <property name="featuresService" ref="featuresService" />
-    </bean>
-
     <bean id="namingStrategy" class="org.apache.servicemix.kernel.gshell.features.management.DefaultNamingStrategy">
         <property name="jmxDomainName" value="org.apache.servicemix" />
     </bean>
@@ -109,8 +105,6 @@
 
     <osgi:service ref="featuresService" interface="org.apache.servicemix.kernel.gshell.features.FeaturesService" />
 
-    <osgi:service ref="featureDeploymentListener" interface="org.apache.servicemix.kernel.filemonitor.DeploymentListener" />
-
     <osgix:cm-properties id="cmProps" persistent-id="org.apache.servicemix.features">
         <prop key="featuresRepositories"></prop>
         <prop key="featuresBoot"></prop>
diff --git a/karaf/pom.xml b/karaf/pom.xml
index e675001..0b5dec5 100644
--- a/karaf/pom.xml
+++ b/karaf/pom.xml
@@ -36,9 +36,8 @@
 
     <modules>
         <module>main</module>
-        <module>filemonitor</module>
+        <module>deployer</module>
         <module>gshell</module>
-        <module>spring</module>
         <module>jaas</module>
         <module>client</module>
         <module>management</module>
@@ -192,13 +191,23 @@
                 <version>${pom.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.apache.servicemix.kernel</groupId>
-                <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
+                <groupId>org.apache.servicemix.kernel.deployer</groupId>
+                <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
                 <version>${pom.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.apache.servicemix.kernel</groupId>
-                <artifactId>org.apache.servicemix.kernel.spring</artifactId>
+                <groupId>org.apache.servicemix.kernel.deployer</groupId>
+                <artifactId>org.apache.servicemix.kernel.deployer.spring</artifactId>
+                <version>${pom.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.servicemix.kernel.deployer</groupId>
+                <artifactId>org.apache.servicemix.kernel.deployer.blueprint</artifactId>
+                <version>${pom.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.servicemix.kernel.deployer</groupId>
+                <artifactId>org.apache.servicemix.kernel.deployer.features</artifactId>
                 <version>${pom.version}</version>
             </dependency>
             <dependency>
