diff --git a/karaf/deployer/blueprint/pom.xml b/karaf/deployer/blueprint/pom.xml
index 2b0bcf5..7ff297e 100644
--- a/karaf/deployer/blueprint/pom.xml
+++ b/karaf/deployer/blueprint/pom.xml
@@ -22,16 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel.deployer</groupId>
+        <groupId>org.apache.felix.karaf.deployer</groupId>
         <artifactId>deployer</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel.deployer</groupId>
-    <artifactId>org.apache.servicemix.kernel.deployer.blueprint</artifactId>
+    <groupId>org.apache.felix.karaf.deployer</groupId>
+    <artifactId>org.apache.felix.karaf.deployer.blueprint</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
-    <name>Apache ServiceMix Kernel :: Blueprint Deployer</name>
+    <name>Apache Felix Karaf :: Blueprint Deployer</name>
 
     <description>This deployer transforms a plain blueprint xml file to a deployable bundle</description>
 
@@ -46,8 +46,8 @@
             <artifactId>spring-osgi-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel.deployer</groupId>
-            <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
+            <groupId>org.apache.felix.karaf.deployer</groupId>
+            <artifactId>org.apache.felix.karaf.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.deployer.blueprint</Private-Package>
+                        <Private-Package>org.apache.felix.karaf.deployer.blueprint</Private-Package>
                         <Spring-Context>*;publish-context:=false;create-asynchronously:=false</Spring-Context>
                     </instructions>
                 </configuration>
@@ -71,4 +71,4 @@
         </plugins>
     </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListener.java b/karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/deployer/blueprint/BlueprintDeploymentListener.java
similarity index 95%
rename from karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListener.java
rename to karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/deployer/blueprint/BlueprintDeploymentListener.java
index 13ef072..602f072 100644
--- a/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListener.java
+++ b/karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/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.deployer.blueprint;
+package org.apache.felix.karaf.deployer.blueprint;
 
 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.deployer.filemonitor.DeploymentListener;
+import org.apache.felix.karaf.deployer.filemonitor.DeploymentListener;
 
 /**
  * A deployment listener that listens for spring xml applications
diff --git a/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintTransformer.java b/karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/deployer/blueprint/BlueprintTransformer.java
similarity index 99%
rename from karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintTransformer.java
rename to karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/deployer/blueprint/BlueprintTransformer.java
index f466527..8e9de70 100644
--- a/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintTransformer.java
+++ b/karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/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.deployer.blueprint;
+package org.apache.felix.karaf.deployer.blueprint;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
diff --git a/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintURLHandler.java b/karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/deployer/blueprint/BlueprintURLHandler.java
similarity index 97%
rename from karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintURLHandler.java
rename to karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/deployer/blueprint/BlueprintURLHandler.java
index a03ecae..176a380 100644
--- a/karaf/deployer/blueprint/src/main/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintURLHandler.java
+++ b/karaf/deployer/blueprint/src/main/java/org/apache/felix/karaf/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.deployer.blueprint;
+package org.apache.felix.karaf.deployer.blueprint;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/karaf/deployer/blueprint/src/main/resources/META-INF/spring/blueprint-deployer.xml b/karaf/deployer/blueprint/src/main/resources/META-INF/spring/blueprint-deployer.xml
index bb3e430..338547c 100644
--- a/karaf/deployer/blueprint/src/main/resources/META-INF/spring/blueprint-deployer.xml
+++ b/karaf/deployer/blueprint/src/main/resources/META-INF/spring/blueprint-deployer.xml
@@ -29,17 +29,17 @@
   http://www.springframework.org/schema/osgi
   http://www.springframework.org/schema/osgi/spring-osgi.xsd">
 
-    <bean id="blueprintDeploymentListener" class="org.apache.servicemix.kernel.deployer.blueprint.BlueprintDeploymentListener">
+    <bean id="blueprintDeploymentListener" class="org.apache.felix.karaf.deployer.blueprint.BlueprintDeploymentListener">
 
     </bean>
 
     <osgi:service ref="blueprintDeploymentListener">
         <osgi:interfaces>
-            <value>org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener</value>
+            <value>org.apache.felix.karaf.deployer.filemonitor.DeploymentListener</value>
         </osgi:interfaces>
     </osgi:service>
 
-    <bean id="blueprintHandler" class="org.apache.servicemix.kernel.deployer.blueprint.BlueprintURLHandler" />
+    <bean id="blueprintHandler" class="org.apache.felix.karaf.deployer.blueprint.BlueprintURLHandler" />
 
     <osgi:service ref="blueprintHandler" interface="org.osgi.service.url.URLStreamHandlerService">
     	<osgi:service-properties>
@@ -47,4 +47,4 @@
         </osgi:service-properties>
     </osgi:service>
 
-</beans>
\ No newline at end of file
+</beans>
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/felix/karaf/deployer/blueprint/extract.xsl
similarity index 100%
rename from karaf/deployer/blueprint/src/main/resources/org/apache/servicemix/kernel/deployer/blueprint/extract.xsl
rename to karaf/deployer/blueprint/src/main/resources/org/apache/felix/karaf/deployer/blueprint/extract.xsl
diff --git a/karaf/deployer/blueprint/src/test/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListenerTest.java b/karaf/deployer/blueprint/src/test/java/org/apache/felix/karaf/deployer/blueprint/BlueprintDeploymentListenerTest.java
similarity index 98%
rename from karaf/deployer/blueprint/src/test/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListenerTest.java
rename to karaf/deployer/blueprint/src/test/java/org/apache/felix/karaf/deployer/blueprint/BlueprintDeploymentListenerTest.java
index 6ab2c33..88865b9 100644
--- a/karaf/deployer/blueprint/src/test/java/org/apache/servicemix/kernel/deployer/blueprint/BlueprintDeploymentListenerTest.java
+++ b/karaf/deployer/blueprint/src/test/java/org/apache/felix/karaf/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.deployer.blueprint;
+package org.apache.felix.karaf.deployer.blueprint;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/karaf/deployer/features/pom.xml b/karaf/deployer/features/pom.xml
index 738126e..8c1e711 100644
--- a/karaf/deployer/features/pom.xml
+++ b/karaf/deployer/features/pom.xml
@@ -22,16 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel.deployer</groupId>
+        <groupId>org.apache.felix.karaf.deployer</groupId>
         <artifactId>deployer</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel.deployer</groupId>
-    <artifactId>org.apache.servicemix.kernel.deployer.features</artifactId>
+    <groupId>org.apache.felix.karaf.deployer</groupId>
+    <artifactId>org.apache.felix.karaf.deployer.features</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
-    <name>Apache ServiceMix Kernel :: Features Deployer</name>
+    <name>Apache Felix Karaf :: Features Deployer</name>
 
     <description>This deployer can deploy features descriptor on the fly</description>
 
@@ -46,12 +46,12 @@
             <artifactId>spring-osgi-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel.gshell</groupId>
-            <artifactId>org.apache.servicemix.kernel.gshell.features</artifactId>
+            <groupId>org.apache.felix.karaf.gshell</groupId>
+            <artifactId>org.apache.felix.karaf.gshell.features</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel.deployer</groupId>
-            <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
+            <groupId>org.apache.felix.karaf.deployer</groupId>
+            <artifactId>org.apache.felix.karaf.deployer.filemonitor</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
@@ -67,7 +67,7 @@
                 <configuration>
                     <instructions>
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Private-Package>org.apache.servicemix.kernel.deployer.blueprint</Private-Package>
+                        <Private-Package>org.apache.felix.karaf.deployer.blueprint</Private-Package>
                         <Spring-Context>*;publish-context:=false;create-asynchronously:=false</Spring-Context>
                     </instructions>
                 </configuration>
@@ -75,4 +75,4 @@
         </plugins>
     </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/karaf/deployer/features/src/main/java/org/apache/servicemix/kernel/deployer/features/FeatureDeploymentListener.java b/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java
similarity index 96%
rename from karaf/deployer/features/src/main/java/org/apache/servicemix/kernel/deployer/features/FeatureDeploymentListener.java
rename to karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java
index b26d548..1ccead5 100644
--- a/karaf/deployer/features/src/main/java/org/apache/servicemix/kernel/deployer/features/FeatureDeploymentListener.java
+++ b/karaf/deployer/features/src/main/java/org/apache/felix/karaf/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.deployer.features;
+package org.apache.felix.karaf.deployer.features;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -40,10 +40,10 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-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.apache.felix.karaf.gshell.features.Feature;
+import org.apache.felix.karaf.gshell.features.FeaturesService;
+import org.apache.felix.karaf.gshell.features.Repository;
+import org.apache.felix.karaf.deployer.filemonitor.DeploymentListener;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
@@ -59,7 +59,7 @@
 public class FeatureDeploymentListener implements DeploymentListener, SynchronousBundleListener, BundleContextAware,
                                                         InitializingBean, DisposableBean {
 
-    public static final String FEATURE_PATH = "org.apache.servicemix.kernel.gshell.features";
+    public static final String FEATURE_PATH = "org.apache.felix.karaf.gshell.features";
 
     private static final Log LOGGER = LogFactory.getLog(FeatureDeploymentListener.class);
 
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
index 54b1913..ee66d1c 100644
--- 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
@@ -38,12 +38,12 @@
   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"/>
+    <osgi:reference id="featuresService" interface="org.apache.felix.karaf.gshell.features.FeaturesService" cardinality="1..1"/>
 
-    <bean id="featureDeploymentListener" class="org.apache.servicemix.kernel.deployer.features.FeatureDeploymentListener">
+    <bean id="featureDeploymentListener" class="org.apache.felix.karaf.deployer.features.FeatureDeploymentListener">
         <property name="featuresService" ref="featuresService" />
     </bean>
 
-    <osgi:service ref="featureDeploymentListener" interface="org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener" />
+    <osgi:service ref="featureDeploymentListener" interface="org.apache.felix.karaf.deployer.filemonitor.DeploymentListener" />
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/karaf/deployer/filemonitor/pom.xml b/karaf/deployer/filemonitor/pom.xml
index 7817bc2..7a46dc8 100644
--- a/karaf/deployer/filemonitor/pom.xml
+++ b/karaf/deployer/filemonitor/pom.xml
@@ -22,16 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel.deployer</groupId>
+        <groupId>org.apache.felix.karaf.deployer</groupId>
         <artifactId>deployer</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel.deployer</groupId>
-    <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
+    <groupId>org.apache.felix.karaf.deployer</groupId>
+    <artifactId>org.apache.felix.karaf.deployer.filemonitor</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
-    <name>Apache ServiceMix Kernel :: File Monitor</name>
+    <name>Apache Felix Karaf :: File Monitor</name>
 
     <description>This bundle monitors the deploy directory for new OSGi bundles in jar form, expanded form or for
         configuration file changes and undeploys/redeploys them
@@ -75,7 +75,7 @@
                     <instructions>
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                         <Export-Package>${pom.artifactId}</Export-Package>
-                        <Bundle-Activator>org.apache.servicemix.kernel.deployer.filemonitor.FileMonitorActivator
+                        <Bundle-Activator>org.apache.felix.karaf.deployer.filemonitor.FileMonitorActivator
                         </Bundle-Activator>
                     </instructions>
                 </configuration>
@@ -83,4 +83,4 @@
         </plugins>
     </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/DeploymentListener.java b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/DeploymentListener.java
similarity index 94%
rename from karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/DeploymentListener.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/DeploymentListener.java
index 18486c9..f0098af 100644
--- a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/DeploymentListener.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/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.deployer.filemonitor;
+package org.apache.felix.karaf.deployer.filemonitor;
 
 import java.io.File;
 
diff --git a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitor.java b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/FileMonitor.java
similarity index 99%
rename from karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitor.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/FileMonitor.java
index 2a08990..ac00c45 100644
--- a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitor.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/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.deployer.filemonitor;
+package org.apache.felix.karaf.deployer.filemonitor;
 
 import java.io.Closeable;
 import java.io.File;
diff --git a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorActivator.java b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/FileMonitorActivator.java
similarity index 97%
rename from karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorActivator.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/FileMonitorActivator.java
index a700523..8ce5eee 100644
--- a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorActivator.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/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.deployer.filemonitor;
+package org.apache.felix.karaf.deployer.filemonitor;
 
 import java.util.Collection;
 import java.util.Dictionary;
@@ -94,7 +94,7 @@
     // ManagedServiceFactory interface
     // -------------------------------------------------------------------------
     public String getName() {
-        return "org.apache.servicemix.kernel.deployer.filemonitor.FileMonitor";
+        return "org.apache.felix.karaf.deployer.filemonitor.FileMonitor";
     }
 
     public void updated(String pid, Dictionary properties) throws ConfigurationException {
diff --git a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/JarUtil.java b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/JarUtil.java
similarity index 98%
rename from karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/JarUtil.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/JarUtil.java
index dff9e5c..ecf5bb9 100644
--- a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/JarUtil.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/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.deployer.filemonitor;
+package org.apache.felix.karaf.deployer.filemonitor;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
diff --git a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/Scanner.java b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/Scanner.java
similarity index 99%
rename from karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/Scanner.java
rename to karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/deployer/filemonitor/Scanner.java
index 239a1a8..0c109a0 100644
--- a/karaf/deployer/filemonitor/src/main/java/org/apache/servicemix/kernel/deployer/filemonitor/Scanner.java
+++ b/karaf/deployer/filemonitor/src/main/java/org/apache/felix/karaf/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.deployer.filemonitor;
+package org.apache.felix.karaf.deployer.filemonitor;
 
 import java.io.File;
 import java.io.FilenameFilter;
diff --git a/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/BundlePackerTest.java b/karaf/deployer/filemonitor/src/test/java/org/apache/felix/karaf/deployer/filemonitor/BundlePackerTest.java
similarity index 95%
rename from karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/BundlePackerTest.java
rename to karaf/deployer/filemonitor/src/test/java/org/apache/felix/karaf/deployer/filemonitor/BundlePackerTest.java
index 83109ed..b710a30 100644
--- a/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/BundlePackerTest.java
+++ b/karaf/deployer/filemonitor/src/test/java/org/apache/felix/karaf/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.deployer.filemonitor;
+package org.apache.felix.karaf.deployer.filemonitor;
 
 import java.io.File;
 
diff --git a/karaf/deployer/filemonitor/src/test/java/org/apache/felix/karaf/deployer/filemonitor/FileMonitorTest.java b/karaf/deployer/filemonitor/src/test/java/org/apache/felix/karaf/deployer/filemonitor/FileMonitorTest.java
new file mode 100644
index 0000000..0db1953
--- /dev/null
+++ b/karaf/deployer/filemonitor/src/test/java/org/apache/felix/karaf/deployer/filemonitor/FileMonitorTest.java
@@ -0,0 +1,100 @@
+/**
+ *
+ * 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.
+ */
+package org.apache.felix.karaf.deployer.filemonitor;
+
+import junit.framework.TestCase;
+import org.apache.felix.karaf.deployer.filemonitor.FileMonitor;
+
+/**
+ * FileMonitor Tester.
+ *
+ * @author <Authors name>
+ * @version 1.0
+ * @since <pre>07/02/2008</pre>
+ */
+public class FileMonitorTest extends TestCase {
+
+    public FileMonitorTest(String name) {
+        super(name);
+    }
+
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void testFilePathsMatch() throws Exception {
+        assertTrue(FileMonitor.filePathsMatch(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt"));
+
+        assertTrue(FileMonitor.filePathsMatch(
+                "C:\\Apps\\apache-felix-karaf-1.0.0-rc1\\src\\README.txt",
+                "C:\\Apps\\apache-felix-karaf-1.0.0-rc1\\src\\README.txt"));
+
+        assertTrue(FileMonitor.filePathsMatch(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                "C:\\Apps\\apache-felix-karaf-1.0.0-rc1\\src\\README.txt"));
+
+        assertTrue(FileMonitor.filePathsMatch(
+                "file:/C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                "C:\\Apps\\apache-felix-karaf-1.0.0-rc1\\src\\README.txt"));
+
+        assertTrue(FileMonitor.filePathsMatch(
+                "file://C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                "C:\\Apps\\apache-felix-karaf-1.0.0-rc1\\src\\README.txt"));
+    }
+
+    public void testNormalizeFilePath() throws Exception {
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt"));
+
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("C:/Apps//apache-felix-karaf-1.0.0-rc1////src/////README.txt"));
+
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("C:\\Apps\\apache-felix-karaf-1.0.0-rc1\\src\\README.txt"));
+
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("C:\\\\Apps\\\\apache-felix-karaf-1.0.0-rc1\\\\src\\\\README.txt"));
+
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("C:\\Apps\\//apache-felix-karaf-1.0.0-rc1\\/\\src///\\\\README.txt"));
+
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("file:C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt"));
+
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("file:/C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt"));
+
+        assertEquals(
+                "C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt",
+                FileMonitor.normalizeFilePath("file://C:/Apps/apache-felix-karaf-1.0.0-rc1/src/README.txt"));
+    }
+
+}
diff --git a/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorTest.java b/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorTest.java
deleted file mode 100644
index 998ca84..0000000
--- a/karaf/deployer/filemonitor/src/test/java/org/apache/servicemix/kernel/deployer/filemonitor/FileMonitorTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- *
- * 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.
- */
-package org.apache.servicemix.kernel.deployer.filemonitor;
-
-import junit.framework.TestCase;
-import org.apache.servicemix.kernel.deployer.filemonitor.FileMonitor;
-
-/**
- * FileMonitor Tester.
- *
- * @author <Authors name>
- * @version 1.0
- * @since <pre>07/02/2008</pre>
- */
-public class FileMonitorTest extends TestCase {
-
-    public FileMonitorTest(String name) {
-        super(name);
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-    public void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    public void testFilePathsMatch() throws Exception {
-        assertTrue(FileMonitor.filePathsMatch(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt"));
-
-        assertTrue(FileMonitor.filePathsMatch(
-                "C:\\Apps\\apache-servicemix-kernel-1.0.0-rc1\\src\\README.txt",
-                "C:\\Apps\\apache-servicemix-kernel-1.0.0-rc1\\src\\README.txt"));
-
-        assertTrue(FileMonitor.filePathsMatch(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                "C:\\Apps\\apache-servicemix-kernel-1.0.0-rc1\\src\\README.txt"));
-
-        assertTrue(FileMonitor.filePathsMatch(
-                "file:/C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                "C:\\Apps\\apache-servicemix-kernel-1.0.0-rc1\\src\\README.txt"));
-
-        assertTrue(FileMonitor.filePathsMatch(
-                "file://C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                "C:\\Apps\\apache-servicemix-kernel-1.0.0-rc1\\src\\README.txt"));
-    }
-
-    public void testNormalizeFilePath() throws Exception {
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt"));
-
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("C:/Apps//apache-servicemix-kernel-1.0.0-rc1////src/////README.txt"));
-
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("C:\\Apps\\apache-servicemix-kernel-1.0.0-rc1\\src\\README.txt"));
-
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("C:\\\\Apps\\\\apache-servicemix-kernel-1.0.0-rc1\\\\src\\\\README.txt"));
-
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("C:\\Apps\\//apache-servicemix-kernel-1.0.0-rc1\\/\\src///\\\\README.txt"));
-
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("file:C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt"));
-
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("file:/C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt"));
-
-        assertEquals(
-                "C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt",
-                FileMonitor.normalizeFilePath("file://C:/Apps/apache-servicemix-kernel-1.0.0-rc1/src/README.txt"));
-    }
-
-}
diff --git a/karaf/deployer/pom.xml b/karaf/deployer/pom.xml
index 7e2810f..b347046 100644
--- a/karaf/deployer/pom.xml
+++ b/karaf/deployer/pom.xml
@@ -22,16 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel</groupId>
+        <groupId>org.apache.felix.karaf</groupId>
         <artifactId>kernel</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel.deployer</groupId>
+    <groupId>org.apache.felix.karaf.deployer</groupId>
     <artifactId>deployer</artifactId>
     <packaging>pom</packaging>
     <version>1.2.0-SNAPSHOT</version>
-    <name>Apache ServiceMix Kernel :: Deployer</name>
+    <name>Apache Felix Karaf :: Deployer</name>
 
     <modules>
         <module>filemonitor</module>
@@ -40,4 +40,4 @@
         <module>features</module>
     </modules>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/karaf/deployer/spring/pom.xml b/karaf/deployer/spring/pom.xml
index 2a16e20..275b400 100644
--- a/karaf/deployer/spring/pom.xml
+++ b/karaf/deployer/spring/pom.xml
@@ -22,16 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.servicemix.kernel</groupId>
+        <groupId>org.apache.felix.karaf</groupId>
         <artifactId>kernel</artifactId>
         <version>1.2.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.servicemix.kernel.deployer</groupId>
-    <artifactId>org.apache.servicemix.kernel.deployer.spring</artifactId>
+    <groupId>org.apache.felix.karaf.deployer</groupId>
+    <artifactId>org.apache.felix.karaf.deployer.spring</artifactId>
     <packaging>bundle</packaging>
     <version>1.2.0-SNAPSHOT</version>
-    <name>Apache ServiceMix Kernel :: Spring Deployer</name>
+    <name>Apache Felix Karaf :: Spring Deployer</name>
 
     <description>This deployer transforms a plain spring xml file to a deployable bundle</description>
 
@@ -46,8 +46,8 @@
             <artifactId>spring-osgi-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.servicemix.kernel.deployer</groupId>
-            <artifactId>org.apache.servicemix.kernel.deployer.filemonitor</artifactId>
+            <groupId>org.apache.felix.karaf.deployer</groupId>
+            <artifactId>org.apache.felix.karaf.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.deployer.spring</Private-Package>
+                        <Private-Package>org.apache.felix.karaf.deployer.spring</Private-Package>
                         <Spring-Context>*;publish-context:=false;create-asynchronously:=false</Spring-Context>
                     </instructions>
                 </configuration>
@@ -71,4 +71,4 @@
         </plugins>
     </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListener.java b/karaf/deployer/spring/src/main/java/org/apache/felix/karaf/deployer/spring/SpringDeploymentListener.java
similarity index 95%
rename from karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListener.java
rename to karaf/deployer/spring/src/main/java/org/apache/felix/karaf/deployer/spring/SpringDeploymentListener.java
index 11c394f..7551f99 100644
--- a/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListener.java
+++ b/karaf/deployer/spring/src/main/java/org/apache/felix/karaf/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.deployer.spring;
+package org.apache.felix.karaf.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.deployer.filemonitor.DeploymentListener;
+import org.apache.felix.karaf.deployer.filemonitor.DeploymentListener;
 
 /**
  * A deployment listener that listens for spring xml applications
diff --git a/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringTransformer.java b/karaf/deployer/spring/src/main/java/org/apache/felix/karaf/deployer/spring/SpringTransformer.java
similarity index 99%
rename from karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringTransformer.java
rename to karaf/deployer/spring/src/main/java/org/apache/felix/karaf/deployer/spring/SpringTransformer.java
index 91d8b2a..fe5ec5e 100644
--- a/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringTransformer.java
+++ b/karaf/deployer/spring/src/main/java/org/apache/felix/karaf/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.deployer.spring;
+package org.apache.felix.karaf.deployer.spring;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
diff --git a/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringURLHandler.java b/karaf/deployer/spring/src/main/java/org/apache/felix/karaf/deployer/spring/SpringURLHandler.java
similarity index 98%
rename from karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringURLHandler.java
rename to karaf/deployer/spring/src/main/java/org/apache/felix/karaf/deployer/spring/SpringURLHandler.java
index fce7913..943f0fe 100644
--- a/karaf/deployer/spring/src/main/java/org/apache/servicemix/kernel/deployer/spring/SpringURLHandler.java
+++ b/karaf/deployer/spring/src/main/java/org/apache/felix/karaf/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.deployer.spring;
+package org.apache.felix.karaf.deployer.spring;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/karaf/deployer/spring/src/main/resources/META-INF/spring/spring-deployer.xml b/karaf/deployer/spring/src/main/resources/META-INF/spring/spring-deployer.xml
index af2921a..6ece1f2 100644
--- a/karaf/deployer/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.deployer.spring.SpringDeploymentListener">
+    <bean id="springDeploymentListener" class="org.apache.felix.karaf.deployer.spring.SpringDeploymentListener">
 
     </bean>
 
     <osgi:service ref="springDeploymentListener">
         <osgi:interfaces>
-            <value>org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener</value>
+            <value>org.apache.felix.karaf.deployer.filemonitor.DeploymentListener</value>
         </osgi:interfaces>
     </osgi:service>
 
-    <bean id="springHandler" class="org.apache.servicemix.kernel.deployer.spring.SpringURLHandler" />
+    <bean id="springHandler" class="org.apache.felix.karaf.deployer.spring.SpringURLHandler" />
 
     <osgi:service ref="springHandler" interface="org.osgi.service.url.URLStreamHandlerService">
     	<osgi:service-properties>
@@ -47,4 +47,4 @@
         </osgi:service-properties>
     </osgi:service>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/karaf/deployer/spring/src/main/resources/org/apache/servicemix/kernel/deployer/spring/extract.xsl b/karaf/deployer/spring/src/main/resources/org/apache/felix/karaf/deployer/spring/extract.xsl
similarity index 100%
rename from karaf/deployer/spring/src/main/resources/org/apache/servicemix/kernel/deployer/spring/extract.xsl
rename to karaf/deployer/spring/src/main/resources/org/apache/felix/karaf/deployer/spring/extract.xsl
diff --git a/karaf/deployer/spring/src/test/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListenerTest.java b/karaf/deployer/spring/src/test/java/org/apache/felix/karaf/deployer/spring/SpringDeploymentListenerTest.java
similarity index 92%
rename from karaf/deployer/spring/src/test/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListenerTest.java
rename to karaf/deployer/spring/src/test/java/org/apache/felix/karaf/deployer/spring/SpringDeploymentListenerTest.java
index 9a70dd0..7921282 100644
--- a/karaf/deployer/spring/src/test/java/org/apache/servicemix/kernel/deployer/spring/SpringDeploymentListenerTest.java
+++ b/karaf/deployer/spring/src/test/java/org/apache/felix/karaf/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.deployer.spring;
+package org.apache.felix.karaf.deployer.spring;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -29,8 +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;
+import org.apache.felix.karaf.deployer.spring.SpringDeploymentListener;
+import org.apache.felix.karaf.deployer.spring.SpringTransformer;
 
 public class SpringDeploymentListenerTest extends TestCase {
 
@@ -41,7 +41,7 @@
         assertNotNull(pkgs);
         assertEquals(2, pkgs.size());
         Iterator<String> it = pkgs.iterator();
-        assertEquals("org.apache.servicemix.kernel.deployer.spring", it.next());
+        assertEquals("org.apache.felix.karaf.deployer.spring", it.next());
         assertEquals("org.osgi.service.url", it.next());
     }
 
diff --git a/karaf/deployer/spring/src/test/resources/test.xml b/karaf/deployer/spring/src/test/resources/test.xml
index 31dca21..b47596e 100644
--- a/karaf/deployer/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.deployer.spring.SpringDeploymentListener">
+    <bean id="springDeploymentListener" class="org.apache.felix.karaf.deployer.spring.SpringDeploymentListener">
 
     </bean>
 
     <osgi:service ref="springDeploymentListener">
         <osgi:interfaces>
-            <value>org.apache.servicemix.kernel.deployer.filemonitor.DeploymentListener</value>
+            <value>org.apache.felix.karaf.deployer.filemonitor.DeploymentListener</value>
         </osgi:interfaces>
     </osgi:service>
 
-    <bean id="springHandler" class="org.apache.servicemix.kernel.deployer.spring.SpringURLHandler" />
+    <bean id="springHandler" class="org.apache.felix.karaf.deployer.spring.SpringURLHandler" />
 
     <osgi:service ref="springHandler" interface="org.osgi.service.url.URLStreamHandlerService">
     	<osgi:service-properties>
@@ -52,4 +52,4 @@
         </osgi:service-properties>
     </osgi:service>
 
-</beans>
\ No newline at end of file
+</beans>
