diff --git a/karaf/gshell/gshell-admin/pom.xml b/karaf/gshell/gshell-admin/pom.xml
index 9c2aecd..fd50615 100644
--- a/karaf/gshell/gshell-admin/pom.xml
+++ b/karaf/gshell/gshell-admin/pom.xml
@@ -144,7 +144,7 @@
                             org.apache.felix.karaf.gshell.core,
                             *
                         </Import-Package>
-                        <Private-Package>org.apache.servicemix.jpm.*</Private-Package>
+                        <Private-Package>org.apache.felix.karaf.jpm.*</Private-Package>
                         <Spring-Context>*;publish-context:=false;create-asynchronously:=false</Spring-Context>
                     </instructions>
                 </configuration>
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java
index 7c7244d..002c6c9 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java
@@ -36,9 +36,8 @@
 import org.osgi.service.prefs.BackingStoreException;
 import org.osgi.service.prefs.Preferences;
 import org.osgi.service.prefs.PreferencesService;
-import org.springframework.beans.factory.InitializingBean;
 
-public class AdminServiceImpl implements AdminService, InitializingBean {
+public class AdminServiceImpl implements AdminService {
 
     private static final Log LOGGER = LogFactory.getLog(AdminServiceImpl.class);
 
@@ -56,7 +55,7 @@
         this.preferences = preferences;
     }
 
-    public synchronized void afterPropertiesSet() throws Exception {
+    public synchronized void init() throws Exception {
         try {
             Preferences prefs = preferences.getUserPreferences("AdminServiceState");
             Preferences child = prefs.node("Instances");
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/InstanceImpl.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/InstanceImpl.java
index 7640249..0ab14c6 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/InstanceImpl.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/InstanceImpl.java
@@ -28,9 +28,9 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.servicemix.jpm.Process;
-import org.apache.servicemix.jpm.ProcessBuilderFactory;
-import org.apache.servicemix.jpm.impl.ScriptUtils;
+import org.apache.felix.karaf.jpm.Process;
+import org.apache.felix.karaf.jpm.ProcessBuilderFactory;
+import org.apache.felix.karaf.jpm.impl.ScriptUtils;
 import org.apache.felix.karaf.gshell.admin.Instance;
 
 public class InstanceImpl implements Instance {
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/Process.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/Process.java
similarity index 97%
rename from karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/Process.java
rename to karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/Process.java
index eedb31d..0644f50 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/Process.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/Process.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm;
+package org.apache.felix.karaf.jpm;
 
 import java.io.IOException;
 import java.io.Serializable;
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/ProcessBuilder.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/ProcessBuilder.java
similarity index 89%
rename from karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/ProcessBuilder.java
rename to karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/ProcessBuilder.java
index 6862222..a81cf36 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/ProcessBuilder.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/ProcessBuilder.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm;
+package org.apache.felix.karaf.jpm;
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.*;
 
 /**
  * Interface used to create new processes.
@@ -46,7 +47,7 @@
      * @return the process that has been started
      * @throws IOException if the process can not be created
      */
-    Process start() throws IOException;
+    org.apache.felix.karaf.jpm.Process start() throws IOException;
 
     /**
      * Attach to an existing process
@@ -54,6 +55,6 @@
      * @return the process that has been attached
      * @throws IOException if the process can not be attached to
      */
-    Process attach(int pid) throws IOException;
+    org.apache.felix.karaf.jpm.Process attach(int pid) throws IOException;
 
 }
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/ProcessBuilderFactory.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/ProcessBuilderFactory.java
similarity index 86%
rename from karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/ProcessBuilderFactory.java
rename to karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/ProcessBuilderFactory.java
index 433b615..06b3539 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/ProcessBuilderFactory.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/ProcessBuilderFactory.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm;
+package org.apache.felix.karaf.jpm;
+
+import org.apache.felix.karaf.jpm.impl.ProcessBuilderFactoryImpl;
 
 /**
  * Factory for process builders.
@@ -22,7 +24,7 @@
 public abstract class ProcessBuilderFactory {
 
     public static ProcessBuilderFactory newInstance() {
-        return new org.apache.servicemix.jpm.impl.ProcessBuilderFactoryImpl();
+        return new ProcessBuilderFactoryImpl();
     }
 
     public abstract ProcessBuilder newBuilder();
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessBuilderFactoryImpl.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessBuilderFactoryImpl.java
similarity index 86%
rename from karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessBuilderFactoryImpl.java
rename to karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessBuilderFactoryImpl.java
index 4db4657..23ee364 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessBuilderFactoryImpl.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessBuilderFactoryImpl.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm.impl;
+package org.apache.felix.karaf.jpm.impl;
 
-import org.apache.servicemix.jpm.ProcessBuilder;
-import org.apache.servicemix.jpm.ProcessBuilderFactory;
+import org.apache.felix.karaf.jpm.ProcessBuilder;
+import org.apache.felix.karaf.jpm.ProcessBuilderFactory;
 
 public class ProcessBuilderFactoryImpl extends ProcessBuilderFactory {
 
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessBuilderImpl.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessBuilderImpl.java
similarity index 85%
rename from karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessBuilderImpl.java
rename to karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessBuilderImpl.java
index 649da6b..fb11d60 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessBuilderImpl.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessBuilderImpl.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm.impl;
+package org.apache.felix.karaf.jpm.impl;
 
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.servicemix.jpm.Process;
-import org.apache.servicemix.jpm.ProcessBuilder;
+import org.apache.felix.karaf.jpm.Process;
+import org.apache.felix.karaf.jpm.ProcessBuilder;
 
 
 public class ProcessBuilderImpl implements ProcessBuilder {
@@ -42,7 +42,7 @@
         return ProcessImpl.create(dir, command);
     }
 
-    public Process attach(int pid) throws IOException {
+    public org.apache.felix.karaf.jpm.Process attach(int pid) throws IOException {
         return ProcessImpl.attach(pid);
     }
 }
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessImpl.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessImpl.java
similarity index 96%
rename from karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessImpl.java
rename to karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessImpl.java
index 71146fa..8974f59 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ProcessImpl.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ProcessImpl.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm.impl;
+package org.apache.felix.karaf.jpm.impl;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -26,7 +26,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.servicemix.jpm.Process;
+import org.apache.felix.karaf.jpm.Process;
 
 public class ProcessImpl implements Process {
 
@@ -103,7 +103,7 @@
         return 0;
     }
 
-    public static Process create(File dir, String command) throws IOException {
+    public static org.apache.felix.karaf.jpm.Process create(File dir, String command) throws IOException {
         //File input = File.createTempFile("jpm.", ".input");
         //File output = File.createTempFile("jpm.", ".output");
         //File error = File.createTempFile("jpm.", ".error");
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ScriptUtils.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ScriptUtils.java
similarity index 98%
rename from karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ScriptUtils.java
rename to karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ScriptUtils.java
index 869c958..0f29087 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/servicemix/jpm/impl/ScriptUtils.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/jpm/impl/ScriptUtils.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm.impl;
+package org.apache.felix.karaf.jpm.impl;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/karaf/gshell/gshell-admin/src/main/resources/META-INF/spring/gshell-admin.xml b/karaf/gshell/gshell-admin/src/main/resources/META-INF/spring/gshell-admin.xml
index 9e0877f..eee0bab 100644
--- a/karaf/gshell/gshell-admin/src/main/resources/META-INF/spring/gshell-admin.xml
+++ b/karaf/gshell/gshell-admin/src/main/resources/META-INF/spring/gshell-admin.xml
@@ -94,7 +94,7 @@
 
     <osgi:reference id="preferences" interface="org.osgi.service.prefs.PreferencesService" cardinality="0..1" />
 
-    <bean id="adminService" class="org.apache.felix.karaf.gshell.admin.internal.AdminServiceImpl">
+    <bean id="adminService" class="org.apache.felix.karaf.gshell.admin.internal.AdminServiceImpl" init-method="init">
         <property name="preferences" ref="preferences" />
     </bean>
 
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/unix/start.sh b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/unix/start.sh
similarity index 100%
rename from karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/unix/start.sh
rename to karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/unix/start.sh
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/windows/destroy.vbs b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/windows/destroy.vbs
similarity index 100%
rename from karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/windows/destroy.vbs
rename to karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/windows/destroy.vbs
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/windows/running.vbs b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/windows/running.vbs
similarity index 100%
rename from karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/windows/running.vbs
rename to karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/windows/running.vbs
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/windows/start.vbs b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/windows/start.vbs
similarity index 100%
rename from karaf/gshell/gshell-admin/src/main/resources/org/apache/servicemix/jpm/impl/windows/start.vbs
rename to karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/jpm/impl/windows/start.vbs
diff --git a/karaf/gshell/gshell-admin/src/test/java/org/apache/servicemix/jpm/MainTest.java b/karaf/gshell/gshell-admin/src/test/java/org/apache/felix/karaf/jpm/MainTest.java
similarity index 96%
rename from karaf/gshell/gshell-admin/src/test/java/org/apache/servicemix/jpm/MainTest.java
rename to karaf/gshell/gshell-admin/src/test/java/org/apache/felix/karaf/jpm/MainTest.java
index 1833584..2d4c80a 100644
--- a/karaf/gshell/gshell-admin/src/test/java/org/apache/servicemix/jpm/MainTest.java
+++ b/karaf/gshell/gshell-admin/src/test/java/org/apache/felix/karaf/jpm/MainTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm;
+package org.apache.felix.karaf.jpm;
 
 public class MainTest {
 
diff --git a/karaf/gshell/gshell-admin/src/test/java/org/apache/servicemix/jpm/ProcessTest.java b/karaf/gshell/gshell-admin/src/test/java/org/apache/felix/karaf/jpm/ProcessTest.java
similarity index 91%
rename from karaf/gshell/gshell-admin/src/test/java/org/apache/servicemix/jpm/ProcessTest.java
rename to karaf/gshell/gshell-admin/src/test/java/org/apache/felix/karaf/jpm/ProcessTest.java
index 8328813..8b6ebc4 100644
--- a/karaf/gshell/gshell-admin/src/test/java/org/apache/servicemix/jpm/ProcessTest.java
+++ b/karaf/gshell/gshell-admin/src/test/java/org/apache/felix/karaf/jpm/ProcessTest.java
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.jpm;
+package org.apache.felix.karaf.jpm;
 
 import java.io.File;
 
 import junit.framework.TestCase;
-import org.apache.servicemix.jpm.impl.ScriptUtils;
+import org.apache.felix.karaf.jpm.impl.ScriptUtils;
+import org.apache.felix.karaf.jpm.ProcessBuilder;
 
 public class ProcessTest extends TestCase {
 
@@ -41,7 +42,7 @@
         System.err.println("Executing: " + command.toString());
 
         ProcessBuilder builder = ProcessBuilderFactory.newInstance().newBuilder();
-        Process p = builder.command(command.toString()).start();
+        org.apache.felix.karaf.jpm.Process p = builder.command(command.toString()).start();
         assertNotNull(p);
         System.err.println("Process: " + p.getPid());
         assertNotNull(p.getPid());
