diff --git a/build.xml b/build.xml
index 21d3452..9d4c43c 100644
--- a/build.xml
+++ b/build.xml
@@ -50,7 +50,7 @@
     <target name="moduleloader" depends="compile">
         <jar jarfile="${lib.dir}/moduleloader.jar"
             basedir="${output.dir}">
-            <include name="org/apache/osgi/moduleloader/"/>
+            <include name="org/apache/felix/moduleloader/"/>
         </jar>
     </target>
 
@@ -65,42 +65,40 @@
 
     <!-- Create Felix JAR file. -->
     <target name="felix" depends="compile">
-        <jar manifest="${src.dir}/org/apache/osgi/framework/manifest.mf"
+        <jar manifest="${src.dir}/org/apache/felix/framework/manifest.mf"
             jarfile="${lib.dir}/felix.jar"
             basedir="${output.dir}">
-            <include name="org/apache/osgi/framework/"/>
-            <exclude name="org/apache/osgi/framework/installer/"/>
+            <include name="org/apache/felix/framework/"/>
+            <exclude name="org/apache/felix/framework/installer/"/>
         </jar>
     </target>
 
-    <!-- Create shell bundle JAR files. -->
+    <!-- Create impl bundle JAR files. -->
     <target name="bundle" depends="compile">
 
         <!-- Shell -->
-        <jar manifest="${src.dir}/org/apache/osgi/bundle/shell/manifest.mf"
+        <jar manifest="${src.dir}/org/apache/felix/shell/impl/manifest.mf"
             jarfile="${bundle.dir}/shell.jar"
             basedir="${output.dir}">
-            <include name="org/apache/osgi/service/shell/**"/>
+            <include name="org/apache/felix/shell/**"/>
             <include name="org/ungoverned/osgi/service/shell/**"/>
-            <include name="org/apache/osgi/bundle/shell/**"/>
         </jar>
 
         <!-- Shell TUI -->
-        <jar manifest="${src.dir}/org/apache/osgi/bundle/shelltui/manifest.mf"
+        <jar manifest="${src.dir}/org/apache/felix/shelltui/manifest.mf"
             jarfile="${bundle.dir}/shelltui.jar"
             basedir="${output.dir}">
-            <include name="org/apache/osgi/bundle/shelltui/**"/>
+            <include name="org/apache/felix/shelltui/**"/>
         </jar>
 
         <!-- OBR -->
         <copy file="${lib.dir}/kxml.jar"
-         todir="${output.dir}/org/apache/osgi/bundle/bundlerepository/"/>
+         todir="${output.dir}/org/apache/felix/bundlerepository/impl/"/>
 
-        <jar manifest="${src.dir}/org/apache/osgi/bundle/bundlerepository/manifest.mf"
+        <jar manifest="${src.dir}/org/apache/felix/bundlerepository/impl/manifest.mf"
             jarfile="${bundle.dir}/bundlerepository.jar"
             basedir="${output.dir}">
-            <include name="org/apache/osgi/bundle/bundlerepository/**"/>
-            <include name="org/apache/osgi/service/bundlerepository/**"/>
+            <include name="org/apache/felix/bundlerepository/**"/>
         </jar>
 
     </target>
diff --git a/src/org/apache/osgi/service/bundlerepository/BundleRecord.java b/src/org/apache/felix/bundlerepository/BundleRecord.java
similarity index 98%
rename from src/org/apache/osgi/service/bundlerepository/BundleRecord.java
rename to src/org/apache/felix/bundlerepository/BundleRecord.java
index 906979a..97918ef 100644
--- a/src/org/apache/osgi/service/bundlerepository/BundleRecord.java
+++ b/src/org/apache/felix/bundlerepository/BundleRecord.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.bundlerepository;
+package org.apache.felix.bundlerepository;
 
 import java.io.PrintStream;
 import java.lang.reflect.Array;
diff --git a/src/org/apache/osgi/service/bundlerepository/BundleRepository.java b/src/org/apache/felix/bundlerepository/BundleRepository.java
similarity index 98%
rename from src/org/apache/osgi/service/bundlerepository/BundleRepository.java
rename to src/org/apache/felix/bundlerepository/BundleRepository.java
index 3fe266b..960fd0d 100644
--- a/src/org/apache/osgi/service/bundlerepository/BundleRepository.java
+++ b/src/org/apache/felix/bundlerepository/BundleRepository.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.bundlerepository;
+package org.apache.felix.bundlerepository;
 
 import java.io.PrintStream;
 
diff --git a/src/org/apache/osgi/service/bundlerepository/IAttribute.java b/src/org/apache/felix/bundlerepository/IAttribute.java
similarity index 93%
rename from src/org/apache/osgi/service/bundlerepository/IAttribute.java
rename to src/org/apache/felix/bundlerepository/IAttribute.java
index 13d5f57..ec9ce00 100644
--- a/src/org/apache/osgi/service/bundlerepository/IAttribute.java
+++ b/src/org/apache/felix/bundlerepository/IAttribute.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.bundlerepository;
+package org.apache.felix.bundlerepository;
 
 public interface IAttribute
 {
diff --git a/src/org/apache/osgi/service/bundlerepository/IDirective.java b/src/org/apache/felix/bundlerepository/IDirective.java
similarity index 93%
rename from src/org/apache/osgi/service/bundlerepository/IDirective.java
rename to src/org/apache/felix/bundlerepository/IDirective.java
index 1d407e3..27190be 100644
--- a/src/org/apache/osgi/service/bundlerepository/IDirective.java
+++ b/src/org/apache/felix/bundlerepository/IDirective.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.bundlerepository;
+package org.apache.felix.bundlerepository;
 
 public interface IDirective
 {
diff --git a/src/org/apache/osgi/service/bundlerepository/IPackage.java b/src/org/apache/felix/bundlerepository/IPackage.java
similarity index 94%
rename from src/org/apache/osgi/service/bundlerepository/IPackage.java
rename to src/org/apache/felix/bundlerepository/IPackage.java
index 0877c69..85c4a5b 100644
--- a/src/org/apache/osgi/service/bundlerepository/IPackage.java
+++ b/src/org/apache/felix/bundlerepository/IPackage.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.bundlerepository;
+package org.apache.felix.bundlerepository;
 
 public interface IPackage
 {
diff --git a/src/org/apache/osgi/service/bundlerepository/IVersion.java b/src/org/apache/felix/bundlerepository/IVersion.java
similarity index 94%
rename from src/org/apache/osgi/service/bundlerepository/IVersion.java
rename to src/org/apache/felix/bundlerepository/IVersion.java
index 1433d9d..de58395 100644
--- a/src/org/apache/osgi/service/bundlerepository/IVersion.java
+++ b/src/org/apache/felix/bundlerepository/IVersion.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.bundlerepository;
+package org.apache.felix.bundlerepository;
 
 public interface IVersion extends Comparable
 {
diff --git a/src/org/apache/osgi/service/bundlerepository/ResolveException.java b/src/org/apache/felix/bundlerepository/ResolveException.java
similarity index 94%
rename from src/org/apache/osgi/service/bundlerepository/ResolveException.java
rename to src/org/apache/felix/bundlerepository/ResolveException.java
index c3a52c9..3ddb562 100644
--- a/src/org/apache/osgi/service/bundlerepository/ResolveException.java
+++ b/src/org/apache/felix/bundlerepository/ResolveException.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.bundlerepository;
+package org.apache.felix.bundlerepository;
 
 public class ResolveException extends Exception
 {
diff --git a/src/org/apache/osgi/bundle/bundlerepository/Activator.java b/src/org/apache/felix/bundlerepository/impl/Activator.java
similarity index 82%
rename from src/org/apache/osgi/bundle/bundlerepository/Activator.java
rename to src/org/apache/felix/bundlerepository/impl/Activator.java
index c50192e..eb88421 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/Activator.java
+++ b/src/org/apache/felix/bundlerepository/impl/Activator.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -31,18 +31,18 @@
         // Register bundle repository service.
         m_br = new BundleRepositoryImpl(m_context);
         context.registerService(
-            org.apache.osgi.service.bundlerepository.BundleRepository.class.getName(),
+            org.apache.felix.bundlerepository.BundleRepository.class.getName(),
             m_br, null);
 
-        // We dynamically import the shell service API, so it
+        // We dynamically import the impl service API, so it
         // might not actually be available, so be ready to catch
         // the exception when we try to register the command service.
         try
         {
-            // Register "obr" shell command service as a
+            // Register "obr" impl command service as a
             // wrapper for the bundle repository service.
             context.registerService(
-                org.apache.osgi.service.shell.Command.class.getName(),
+                org.apache.felix.shell.Command.class.getName(),
                 new ObrCommandImpl(m_context, m_br), null);
         }
         catch (Throwable th)
diff --git a/src/org/apache/osgi/bundle/bundlerepository/BundleRepositoryImpl.java b/src/org/apache/felix/bundlerepository/impl/BundleRepositoryImpl.java
similarity index 98%
rename from src/org/apache/osgi/bundle/bundlerepository/BundleRepositoryImpl.java
rename to src/org/apache/felix/bundlerepository/impl/BundleRepositoryImpl.java
index 07f5828..295b6d2 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/BundleRepositoryImpl.java
+++ b/src/org/apache/felix/bundlerepository/impl/BundleRepositoryImpl.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.io.PrintStream;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.osgi.service.bundlerepository.*;
+import org.apache.felix.bundlerepository.*;
 import org.osgi.framework.*;
 
 public class BundleRepositoryImpl implements BundleRepository
diff --git a/src/org/apache/osgi/bundle/bundlerepository/FileUtil.java b/src/org/apache/felix/bundlerepository/impl/FileUtil.java
similarity index 98%
rename from src/org/apache/osgi/bundle/bundlerepository/FileUtil.java
rename to src/org/apache/felix/bundlerepository/impl/FileUtil.java
index 9f27a0d..5298bef 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/FileUtil.java
+++ b/src/org/apache/felix/bundlerepository/impl/FileUtil.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.io.*;
 import java.net.URL;
diff --git a/src/org/apache/osgi/bundle/bundlerepository/IteratorToEnumeration.java b/src/org/apache/felix/bundlerepository/impl/IteratorToEnumeration.java
similarity index 95%
rename from src/org/apache/osgi/bundle/bundlerepository/IteratorToEnumeration.java
rename to src/org/apache/felix/bundlerepository/impl/IteratorToEnumeration.java
index edd749f..d454711 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/IteratorToEnumeration.java
+++ b/src/org/apache/felix/bundlerepository/impl/IteratorToEnumeration.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.util.Enumeration;
 import java.util.Iterator;
diff --git a/src/org/apache/osgi/bundle/bundlerepository/LocalState.java b/src/org/apache/felix/bundlerepository/impl/LocalState.java
similarity index 98%
rename from src/org/apache/osgi/bundle/bundlerepository/LocalState.java
rename to src/org/apache/felix/bundlerepository/impl/LocalState.java
index 6c91952..2830818 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/LocalState.java
+++ b/src/org/apache/felix/bundlerepository/impl/LocalState.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.util.*;
 
-import org.apache.osgi.service.bundlerepository.BundleRecord;
-import org.apache.osgi.service.bundlerepository.IPackage;
+import org.apache.felix.bundlerepository.BundleRecord;
+import org.apache.felix.bundlerepository.IPackage;
 import org.osgi.framework.*;
 
 public class LocalState
diff --git a/src/org/apache/osgi/bundle/bundlerepository/MapToDictionary.java b/src/org/apache/felix/bundlerepository/impl/MapToDictionary.java
similarity index 97%
rename from src/org/apache/osgi/bundle/bundlerepository/MapToDictionary.java
rename to src/org/apache/felix/bundlerepository/impl/MapToDictionary.java
index d7806c6..2b24c3f 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/MapToDictionary.java
+++ b/src/org/apache/felix/bundlerepository/impl/MapToDictionary.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.util.*;
 
diff --git a/src/org/apache/osgi/bundle/bundlerepository/ObrCommandImpl.java b/src/org/apache/felix/bundlerepository/impl/ObrCommandImpl.java
similarity index 99%
rename from src/org/apache/osgi/bundle/bundlerepository/ObrCommandImpl.java
rename to src/org/apache/felix/bundlerepository/impl/ObrCommandImpl.java
index 10465a0..523c490 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/ObrCommandImpl.java
+++ b/src/org/apache/felix/bundlerepository/impl/ObrCommandImpl.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.io.*;
 import java.util.*;
 
-import org.apache.osgi.service.bundlerepository.BundleRecord;
-import org.apache.osgi.service.bundlerepository.BundleRepository;
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.bundlerepository.BundleRecord;
+import org.apache.felix.bundlerepository.BundleRepository;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class ObrCommandImpl implements Command
diff --git a/src/org/apache/osgi/bundle/bundlerepository/R4Attribute.java b/src/org/apache/felix/bundlerepository/impl/R4Attribute.java
similarity index 78%
rename from src/org/apache/osgi/bundle/bundlerepository/R4Attribute.java
rename to src/org/apache/felix/bundlerepository/impl/R4Attribute.java
index d100711..7de6951 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/R4Attribute.java
+++ b/src/org/apache/felix/bundlerepository/impl/R4Attribute.java
@@ -14,9 +14,9 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
-import org.apache.osgi.service.bundlerepository.IAttribute;
+import org.apache.felix.bundlerepository.IAttribute;
 
 public class R4Attribute implements IAttribute
 {
@@ -32,7 +32,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Attribute#getName()
+     * @see org.ungoverned.osgi.service.impl.Attribute#getName()
     **/
     public String getName()
     {
@@ -40,7 +40,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Attribute#getValue()
+     * @see org.ungoverned.osgi.service.impl.Attribute#getValue()
     **/
     public String getValue()
     {
@@ -48,7 +48,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Attribute#isMandatory()
+     * @see org.ungoverned.osgi.service.impl.Attribute#isMandatory()
     **/
     public boolean isMandatory()
     {
diff --git a/src/org/apache/osgi/bundle/bundlerepository/R4Directive.java b/src/org/apache/felix/bundlerepository/impl/R4Directive.java
similarity index 79%
rename from src/org/apache/osgi/bundle/bundlerepository/R4Directive.java
rename to src/org/apache/felix/bundlerepository/impl/R4Directive.java
index 719dd89..3184806 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/R4Directive.java
+++ b/src/org/apache/felix/bundlerepository/impl/R4Directive.java
@@ -14,9 +14,9 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
-import org.apache.osgi.service.bundlerepository.IDirective;
+import org.apache.felix.bundlerepository.IDirective;
 
 public class R4Directive implements IDirective
 {
@@ -30,7 +30,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Directive#getName()
+     * @see org.ungoverned.osgi.service.impl.Directive#getName()
     **/
     public String getName()
     {
@@ -38,7 +38,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Directive#getValue()
+     * @see org.ungoverned.osgi.service.impl.Directive#getValue()
     **/
     public String getValue()
     {
diff --git a/src/org/apache/osgi/bundle/bundlerepository/R4Package.java b/src/org/apache/felix/bundlerepository/impl/R4Package.java
similarity index 99%
rename from src/org/apache/osgi/bundle/bundlerepository/R4Package.java
rename to src/org/apache/felix/bundlerepository/impl/R4Package.java
index a055133..e20e422 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/R4Package.java
+++ b/src/org/apache/felix/bundlerepository/impl/R4Package.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.util.*;
 
-import org.apache.osgi.service.bundlerepository.*;
+import org.apache.felix.bundlerepository.*;
 import org.osgi.framework.Constants;
 
 //
diff --git a/src/org/apache/osgi/bundle/bundlerepository/R4Version.java b/src/org/apache/felix/bundlerepository/impl/R4Version.java
similarity index 86%
rename from src/org/apache/osgi/bundle/bundlerepository/R4Version.java
rename to src/org/apache/felix/bundlerepository/impl/R4Version.java
index eb44a9a..0925796 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/R4Version.java
+++ b/src/org/apache/felix/bundlerepository/impl/R4Version.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.bundlerepository.IVersion;
+import org.apache.felix.bundlerepository.IVersion;
 
 public class R4Version implements Comparable, IVersion
 {
@@ -88,7 +88,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#equals(java.lang.Object)
+     * @see org.ungoverned.osgi.service.impl.Version#equals(java.lang.Object)
     **/
     public boolean equals(Object object)
     {
@@ -105,7 +105,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#getMajorComponent()
+     * @see org.ungoverned.osgi.service.impl.Version#getMajorComponent()
     **/
     public int getMajorComponent()
     {
@@ -113,7 +113,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#getMinorComponent()
+     * @see org.ungoverned.osgi.service.impl.Version#getMinorComponent()
     **/
     public int getMinorComponent()
     {
@@ -121,7 +121,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#getMicroComponent()
+     * @see org.ungoverned.osgi.service.impl.Version#getMicroComponent()
     **/
     public int getMicroComponent()
     {
@@ -129,7 +129,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#getQualifierComponent()
+     * @see org.ungoverned.osgi.service.impl.Version#getQualifierComponent()
     **/
     public String getQualifierComponent()
     {
@@ -137,7 +137,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#isInclusive()
+     * @see org.ungoverned.osgi.service.impl.Version#isInclusive()
     **/
     public boolean isInclusive()
     {
@@ -145,7 +145,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#compareTo(java.lang.Object)
+     * @see org.ungoverned.osgi.service.impl.Version#compareTo(java.lang.Object)
     **/
     public int compareTo(Object o)
     {
@@ -203,7 +203,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.ungoverned.osgi.service.bundlerepository.Version#toString()
+     * @see org.ungoverned.osgi.service.impl.Version#toString()
     **/
     public String toString()
     {
diff --git a/src/org/apache/osgi/bundle/bundlerepository/RepositoryState.java b/src/org/apache/felix/bundlerepository/impl/RepositoryState.java
similarity index 97%
rename from src/org/apache/osgi/bundle/bundlerepository/RepositoryState.java
rename to src/org/apache/felix/bundlerepository/impl/RepositoryState.java
index b8b52d8..8c409ef 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/RepositoryState.java
+++ b/src/org/apache/felix/bundlerepository/impl/RepositoryState.java
@@ -14,17 +14,17 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.io.*;
 import java.net.*;
 import java.util.*;
 
-import org.apache.osgi.bundle.bundlerepository.kxmlsax.KXmlSAXParser;
-import org.apache.osgi.bundle.bundlerepository.metadataparser.MultivalueMap;
-import org.apache.osgi.bundle.bundlerepository.metadataparser.XmlCommonHandler;
-import org.apache.osgi.service.bundlerepository.BundleRecord;
-import org.apache.osgi.service.bundlerepository.ResolveException;
+import org.apache.felix.bundlerepository.impl.kxmlsax.KXmlSAXParser;
+import org.apache.felix.bundlerepository.impl.metadataparser.MultivalueMap;
+import org.apache.felix.bundlerepository.impl.metadataparser.XmlCommonHandler;
+import org.apache.felix.bundlerepository.BundleRecord;
+import org.apache.felix.bundlerepository.ResolveException;
 import org.osgi.framework.*;
 
 public class RepositoryState
diff --git a/src/org/apache/osgi/bundle/bundlerepository/Util.java b/src/org/apache/felix/bundlerepository/impl/Util.java
similarity index 98%
rename from src/org/apache/osgi/bundle/bundlerepository/Util.java
rename to src/org/apache/felix/bundlerepository/impl/Util.java
index 7c40551..fc06299 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/Util.java
+++ b/src/org/apache/felix/bundlerepository/impl/Util.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository;
+package org.apache.felix.bundlerepository.impl;
 
 import java.io.*;
 import java.util.StringTokenizer;
diff --git a/src/org/apache/osgi/bundle/bundlerepository/kxmlsax/KXmlSAXHandler.java b/src/org/apache/felix/bundlerepository/impl/kxmlsax/KXmlSAXHandler.java
similarity index 96%
rename from src/org/apache/osgi/bundle/bundlerepository/kxmlsax/KXmlSAXHandler.java
rename to src/org/apache/felix/bundlerepository/impl/kxmlsax/KXmlSAXHandler.java
index b6a8e1d..020fe56 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/kxmlsax/KXmlSAXHandler.java
+++ b/src/org/apache/felix/bundlerepository/impl/kxmlsax/KXmlSAXHandler.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository.kxmlsax;
+package org.apache.felix.bundlerepository.impl.kxmlsax;
 
 import java.util.Properties;
 
diff --git a/src/org/apache/osgi/bundle/bundlerepository/kxmlsax/KXmlSAXParser.java b/src/org/apache/felix/bundlerepository/impl/kxmlsax/KXmlSAXParser.java
similarity index 97%
rename from src/org/apache/osgi/bundle/bundlerepository/kxmlsax/KXmlSAXParser.java
rename to src/org/apache/felix/bundlerepository/impl/kxmlsax/KXmlSAXParser.java
index 1bb9b25..92e72c2 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/kxmlsax/KXmlSAXParser.java
+++ b/src/org/apache/felix/bundlerepository/impl/kxmlsax/KXmlSAXParser.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository.kxmlsax;
+package org.apache.felix.bundlerepository.impl.kxmlsax;
 
 import java.io.IOException;
 import java.io.Reader;
diff --git a/src/org/apache/felix/bundlerepository/impl/manifest.mf b/src/org/apache/felix/bundlerepository/impl/manifest.mf
new file mode 100644
index 0000000..304938c
--- /dev/null
+++ b/src/org/apache/felix/bundlerepository/impl/manifest.mf
@@ -0,0 +1,10 @@
+Bundle-Name: Bundle Repository
+Bundle-SymbolicName: org.apache.felix.bundlerepository.impl
+Bundle-Description: A simple bundle repository for Felix.
+Bundle-Activator: org.apache.felix.bundlerepository.impl.Activator
+Bundle-ClassPath: .,org/apache/felix/bundlerepository/impl/kxml.jar
+Bundle-Version: 2.0.0.alpha2
+Import-Package: org.osgi.framework
+DynamicImport-Package: org.apache.felix.shell
+Export-Package: 
+ org.apache.felix.bundlerepository; specification-version="1.1.0"
diff --git a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/ClassUtility.java b/src/org/apache/felix/bundlerepository/impl/metadataparser/ClassUtility.java
similarity index 97%
rename from src/org/apache/osgi/bundle/bundlerepository/metadataparser/ClassUtility.java
rename to src/org/apache/felix/bundlerepository/impl/metadataparser/ClassUtility.java
index fd9b6e9..6a1e1ed 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/ClassUtility.java
+++ b/src/org/apache/felix/bundlerepository/impl/metadataparser/ClassUtility.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository.metadataparser;
+package org.apache.felix.bundlerepository.impl.metadataparser;
 
 /**
  * This class provides methods to process class name
diff --git a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/KXmlMetadataHandler.java b/src/org/apache/felix/bundlerepository/impl/metadataparser/KXmlMetadataHandler.java
similarity index 91%
rename from src/org/apache/osgi/bundle/bundlerepository/metadataparser/KXmlMetadataHandler.java
rename to src/org/apache/felix/bundlerepository/impl/metadataparser/KXmlMetadataHandler.java
index 077a551..5cdda07 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/KXmlMetadataHandler.java
+++ b/src/org/apache/felix/bundlerepository/impl/metadataparser/KXmlMetadataHandler.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository.metadataparser;
+package org.apache.felix.bundlerepository.impl.metadataparser;
 
 import java.io.*;
 
-import org.apache.osgi.bundle.bundlerepository.kxmlsax.KXmlSAXParser;
+import org.apache.felix.bundlerepository.impl.kxmlsax.KXmlSAXParser;
 
 
 /**
diff --git a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/MultivalueMap.java b/src/org/apache/felix/bundlerepository/impl/metadataparser/MultivalueMap.java
similarity index 97%
rename from src/org/apache/osgi/bundle/bundlerepository/metadataparser/MultivalueMap.java
rename to src/org/apache/felix/bundlerepository/impl/metadataparser/MultivalueMap.java
index ba29423..3d1120a 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/MultivalueMap.java
+++ b/src/org/apache/felix/bundlerepository/impl/metadataparser/MultivalueMap.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository.metadataparser;
+package org.apache.felix.bundlerepository.impl.metadataparser;
 
 import java.util.*;
 
diff --git a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/XmlCommonHandler.java b/src/org/apache/felix/bundlerepository/impl/metadataparser/XmlCommonHandler.java
similarity index 98%
rename from src/org/apache/osgi/bundle/bundlerepository/metadataparser/XmlCommonHandler.java
rename to src/org/apache/felix/bundlerepository/impl/metadataparser/XmlCommonHandler.java
index 628b4c6..f390b60 100644
--- a/src/org/apache/osgi/bundle/bundlerepository/metadataparser/XmlCommonHandler.java
+++ b/src/org/apache/felix/bundlerepository/impl/metadataparser/XmlCommonHandler.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.bundlerepository.metadataparser;
+package org.apache.felix.bundlerepository.impl.metadataparser;
 
 import java.lang.reflect.Method;
 import java.util.*;
 
-import org.apache.osgi.bundle.bundlerepository.kxmlsax.KXmlSAXHandler;
+import org.apache.felix.bundlerepository.impl.kxmlsax.KXmlSAXHandler;
 import org.xml.sax.SAXException;
 
 /**
diff --git a/src/org/apache/osgi/framework/BundleContextImpl.java b/src/org/apache/felix/framework/BundleContextImpl.java
similarity index 98%
rename from src/org/apache/osgi/framework/BundleContextImpl.java
rename to src/org/apache/felix/framework/BundleContextImpl.java
index e0114d2..4613fd4 100644
--- a/src/org/apache/osgi/framework/BundleContextImpl.java
+++ b/src/org/apache/felix/framework/BundleContextImpl.java
@@ -14,13 +14,13 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.File;
 import java.io.InputStream;
 import java.util.Dictionary;
 
-import org.apache.osgi.framework.ext.FelixBundleContext;
+import org.apache.felix.framework.ext.FelixBundleContext;
 import org.osgi.framework.*;
 
 class BundleContextImpl implements FelixBundleContext
diff --git a/src/org/apache/osgi/framework/BundleImpl.java b/src/org/apache/felix/framework/BundleImpl.java
similarity index 98%
rename from src/org/apache/osgi/framework/BundleImpl.java
rename to src/org/apache/felix/framework/BundleImpl.java
index 0b1d056..3f5d58c 100644
--- a/src/org/apache/osgi/framework/BundleImpl.java
+++ b/src/org/apache/felix/framework/BundleImpl.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/org/apache/osgi/framework/BundleInfo.java b/src/org/apache/felix/framework/BundleInfo.java
similarity index 98%
rename from src/org/apache/osgi/framework/BundleInfo.java
rename to src/org/apache/felix/framework/BundleInfo.java
index 5d589bb..1d97508 100644
--- a/src/org/apache/osgi/framework/BundleInfo.java
+++ b/src/org/apache/felix/framework/BundleInfo.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.util.Map;
 
-import org.apache.osgi.framework.cache.BundleArchive;
-import org.apache.osgi.moduleloader.Module;
+import org.apache.felix.framework.cache.BundleArchive;
+import org.apache.felix.moduleloader.Module;
 import org.osgi.framework.*;
 
 class BundleInfo
diff --git a/src/org/apache/osgi/framework/BundleURLConnection.java b/src/org/apache/felix/framework/BundleURLConnection.java
similarity index 97%
rename from src/org/apache/osgi/framework/BundleURLConnection.java
rename to src/org/apache/felix/framework/BundleURLConnection.java
index ca890b2..33610c3 100644
--- a/src/org/apache/osgi/framework/BundleURLConnection.java
+++ b/src/org/apache/felix/framework/BundleURLConnection.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.*;
 import java.net.URL;
 import java.net.URLConnection;
 import java.security.Permission;
 
-import org.apache.osgi.moduleloader.*;
+import org.apache.felix.moduleloader.*;
 
 class BundleURLConnection extends URLConnection
 {
diff --git a/src/org/apache/osgi/framework/BundleURLStreamHandler.java b/src/org/apache/felix/framework/BundleURLStreamHandler.java
similarity index 91%
rename from src/org/apache/osgi/framework/BundleURLStreamHandler.java
rename to src/org/apache/felix/framework/BundleURLStreamHandler.java
index 3948c63..3344bee 100644
--- a/src/org/apache/osgi/framework/BundleURLStreamHandler.java
+++ b/src/org/apache/felix/framework/BundleURLStreamHandler.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.IOException;
 import java.net.*;
 
-import org.apache.osgi.moduleloader.ModuleManager;
+import org.apache.felix.moduleloader.ModuleManager;
 
 class BundleURLStreamHandler extends URLStreamHandler
 {
diff --git a/src/org/apache/osgi/framework/ExportedPackageImpl.java b/src/org/apache/felix/framework/ExportedPackageImpl.java
similarity index 96%
rename from src/org/apache/osgi/framework/ExportedPackageImpl.java
rename to src/org/apache/felix/framework/ExportedPackageImpl.java
index 19cbecc..f853fe1 100644
--- a/src/org/apache/osgi/framework/ExportedPackageImpl.java
+++ b/src/org/apache/felix/framework/ExportedPackageImpl.java
@@ -14,9 +14,9 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
-import org.apache.osgi.framework.searchpolicy.R4Version;
+import org.apache.felix.framework.searchpolicy.R4Version;
 import org.osgi.framework.Bundle;
 import org.osgi.service.packageadmin.ExportedPackage;
 
diff --git a/src/org/apache/osgi/framework/FakeURLStreamHandler.java b/src/org/apache/felix/framework/FakeURLStreamHandler.java
similarity index 97%
rename from src/org/apache/osgi/framework/FakeURLStreamHandler.java
rename to src/org/apache/felix/framework/FakeURLStreamHandler.java
index 363c10f..8d9047e 100644
--- a/src/org/apache/osgi/framework/FakeURLStreamHandler.java
+++ b/src/org/apache/felix/framework/FakeURLStreamHandler.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.IOException;
 import java.net.*;
diff --git a/src/org/apache/osgi/framework/Felix.java b/src/org/apache/felix/framework/Felix.java
similarity index 99%
rename from src/org/apache/osgi/framework/Felix.java
rename to src/org/apache/felix/framework/Felix.java
index 5fa6092..94001ab 100644
--- a/src/org/apache/osgi/framework/Felix.java
+++ b/src/org/apache/felix/framework/Felix.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.*;
 import java.net.*;
@@ -22,13 +22,13 @@
 import java.security.PrivilegedActionException;
 import java.util.*;
 
-import org.apache.osgi.framework.cache.*;
-import org.apache.osgi.framework.searchpolicy.*;
-import org.apache.osgi.framework.util.*;
-import org.apache.osgi.framework.util.Util;
-import org.apache.osgi.moduleloader.*;
-import org.apache.osgi.moduleloader.search.ResolveException;
-import org.apache.osgi.moduleloader.search.ResolveListener;
+import org.apache.felix.framework.cache.*;
+import org.apache.felix.framework.searchpolicy.*;
+import org.apache.felix.framework.util.*;
+import org.apache.felix.framework.util.Util;
+import org.apache.felix.moduleloader.*;
+import org.apache.felix.moduleloader.search.ResolveException;
+import org.apache.felix.moduleloader.search.ResolveListener;
 import org.osgi.framework.*;
 import org.osgi.service.packageadmin.ExportedPackage;
 
diff --git a/src/org/apache/osgi/framework/FilterImpl.java b/src/org/apache/felix/framework/FilterImpl.java
similarity index 97%
rename from src/org/apache/osgi/framework/FilterImpl.java
rename to src/org/apache/felix/framework/FilterImpl.java
index 4381d28..1c8e579 100644
--- a/src/org/apache/osgi/framework/FilterImpl.java
+++ b/src/org/apache/felix/framework/FilterImpl.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.CharArrayReader;
 import java.io.IOException;
 import java.util.*;
 
-import org.apache.osgi.framework.util.CaseInsensitiveMap;
-import org.apache.osgi.framework.util.ldap.*;
+import org.apache.felix.framework.util.CaseInsensitiveMap;
+import org.apache.felix.framework.util.ldap.*;
 import org.osgi.framework.*;
 
 /**
diff --git a/src/org/apache/osgi/framework/FrameworkUtil.java b/src/org/apache/felix/framework/FrameworkUtil.java
similarity index 95%
rename from src/org/apache/osgi/framework/FrameworkUtil.java
rename to src/org/apache/felix/framework/FrameworkUtil.java
index c20aea6..6d31e4b 100644
--- a/src/org/apache/osgi/framework/FrameworkUtil.java
+++ b/src/org/apache/felix/framework/FrameworkUtil.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import org.osgi.framework.Filter;
 import org.osgi.framework.InvalidSyntaxException;
diff --git a/src/org/apache/osgi/framework/LogWrapper.java b/src/org/apache/felix/framework/LogWrapper.java
similarity index 98%
rename from src/org/apache/osgi/framework/LogWrapper.java
rename to src/org/apache/felix/framework/LogWrapper.java
index a99341c..e128f49 100644
--- a/src/org/apache/osgi/framework/LogWrapper.java
+++ b/src/org/apache/felix/framework/LogWrapper.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import org.osgi.framework.BundleException;
 import org.osgi.framework.ServiceReference;
diff --git a/src/org/apache/osgi/framework/Main.java b/src/org/apache/felix/framework/Main.java
similarity index 95%
rename from src/org/apache/osgi/framework/Main.java
rename to src/org/apache/felix/framework/Main.java
index c17b184..c49e232 100644
--- a/src/org/apache/osgi/framework/Main.java
+++ b/src/org/apache/felix/framework/Main.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.*;
 import java.net.MalformedURLException;
@@ -22,9 +22,9 @@
 import java.util.Enumeration;
 import java.util.Properties;
 
-import org.apache.osgi.framework.cache.DefaultBundleCache;
-import org.apache.osgi.framework.util.CaseInsensitiveMap;
-import org.apache.osgi.framework.util.MutablePropertyResolverImpl;
+import org.apache.felix.framework.cache.DefaultBundleCache;
+import org.apache.felix.framework.util.CaseInsensitiveMap;
+import org.apache.felix.framework.util.MutablePropertyResolverImpl;
 
 /**
  * <p>
@@ -95,7 +95,7 @@
      *       using the <tt>felix.config.properties</tt> system property;
      *       this should be set using the <tt>-D</tt> syntax when executing
      *       the JVM. Refer to the
-     *       <a href="Felix.html#start(org.apache.osgi.framework.util.MutablePropertyResolver, org.apache.osgi.framework.util.MutablePropertyResolver, java.util.List)">
+     *       <a href="Felix.html#start(org.apache.felix.framework.util.MutablePropertyResolver, org.apache.felix.framework.util.MutablePropertyResolver, java.util.List)">
      *       <tt>Felix.start()</tt></a> method documentation for more
      *       information on the framework configuration options.
      *   </li>
@@ -123,13 +123,13 @@
      * <p>
      * It should be noted that simply starting an instance of the framework is not enough
      * to create an interactive session with it. It is necessary to install
-     * and start bundles that provide an interactive shell; this is generally
+     * and start bundles that provide an interactive impl; this is generally
      * done by specifying an "auto-start" property in the framework configuration
-     * property file. If no interactive shell bundles are installed or if
+     * property file. If no interactive impl bundles are installed or if
      * the configuration property file cannot be found, the framework will appear to
      * be hung or deadlocked. This is not the case, it is executing correctly,
      * there is just no way to interact with it. Refer to the
-     * <a href="Felix.html#start(org.apache.osgi.framework.util.MutablePropertyResolver, org.apache.osgi.framework.util.MutablePropertyResolver, java.util.List)">
+     * <a href="Felix.html#start(org.apache.felix.framework.util.MutablePropertyResolver, org.apache.felix.framework.util.MutablePropertyResolver, java.util.List)">
      * <tt>Felix.start()</tt></a> method documentation for more information on
      * framework configuration options.
      * </p>
diff --git a/src/org/apache/osgi/framework/OSGiLibrarySource.java b/src/org/apache/felix/framework/OSGiLibrarySource.java
similarity index 96%
rename from src/org/apache/osgi/framework/OSGiLibrarySource.java
rename to src/org/apache/felix/framework/OSGiLibrarySource.java
index 9196be3..4546d61 100644
--- a/src/org/apache/osgi/framework/OSGiLibrarySource.java
+++ b/src/org/apache/felix/framework/OSGiLibrarySource.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
-import org.apache.osgi.framework.cache.BundleCache;
-import org.apache.osgi.framework.util.LibraryInfo;
-import org.apache.osgi.moduleloader.LibrarySource;
+import org.apache.felix.framework.cache.BundleCache;
+import org.apache.felix.framework.util.LibraryInfo;
+import org.apache.felix.moduleloader.LibrarySource;
 import org.osgi.framework.Constants;
 
 public class OSGiLibrarySource implements LibrarySource
diff --git a/src/org/apache/osgi/framework/OSGiURLPolicy.java b/src/org/apache/felix/framework/OSGiURLPolicy.java
similarity index 96%
rename from src/org/apache/osgi/framework/OSGiURLPolicy.java
rename to src/org/apache/felix/framework/OSGiURLPolicy.java
index b2d50c3..7f424bc 100644
--- a/src/org/apache/osgi/framework/OSGiURLPolicy.java
+++ b/src/org/apache/felix/framework/OSGiURLPolicy.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.net.URL;
 import java.security.AccessController;
 import java.security.PrivilegedExceptionAction;
 
-import org.apache.osgi.framework.util.FelixConstants;
-import org.apache.osgi.moduleloader.*;
+import org.apache.felix.framework.util.FelixConstants;
+import org.apache.felix.moduleloader.*;
 
 public class OSGiURLPolicy implements URLPolicy
 {
diff --git a/src/org/apache/osgi/framework/PackageAdminActivator.java b/src/org/apache/felix/framework/PackageAdminActivator.java
similarity index 96%
rename from src/org/apache/osgi/framework/PackageAdminActivator.java
rename to src/org/apache/felix/framework/PackageAdminActivator.java
index 4e07315..46a9b7a 100644
--- a/src/org/apache/osgi/framework/PackageAdminActivator.java
+++ b/src/org/apache/felix/framework/PackageAdminActivator.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import org.osgi.framework.*;
 
diff --git a/src/org/apache/osgi/framework/PackageAdminImpl.java b/src/org/apache/felix/framework/PackageAdminImpl.java
similarity index 99%
rename from src/org/apache/osgi/framework/PackageAdminImpl.java
rename to src/org/apache/felix/framework/PackageAdminImpl.java
index 5a029c0..bce5eb2 100644
--- a/src/org/apache/osgi/framework/PackageAdminImpl.java
+++ b/src/org/apache/felix/framework/PackageAdminImpl.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import org.osgi.framework.Bundle;
 import org.osgi.service.packageadmin.*;
diff --git a/src/org/apache/osgi/framework/ServiceReferenceImpl.java b/src/org/apache/felix/framework/ServiceReferenceImpl.java
similarity index 94%
rename from src/org/apache/osgi/framework/ServiceReferenceImpl.java
rename to src/org/apache/felix/framework/ServiceReferenceImpl.java
index 8cf5ae4..3bd0ebd 100644
--- a/src/org/apache/osgi/framework/ServiceReferenceImpl.java
+++ b/src/org/apache/felix/framework/ServiceReferenceImpl.java
@@ -14,11 +14,10 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
-import org.apache.osgi.framework.searchpolicy.R4SearchPolicy;
-import org.apache.osgi.framework.searchpolicy.R4Wire;
-import org.apache.osgi.framework.util.FelixConstants;
+import org.apache.felix.framework.searchpolicy.R4SearchPolicy;
+import org.apache.felix.framework.searchpolicy.R4Wire;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.ServiceReference;
 
@@ -116,7 +115,7 @@
         boolean allow = true;
         // Get the package.
         String pkgName =
-            org.apache.osgi.moduleloader.Util.getClassPackage(className);
+            org.apache.felix.moduleloader.Util.getClassPackage(className);
         // Get package wiring from service provider and requester.
         R4Wire requesterWire = R4SearchPolicy.getWire(
             ((BundleImpl) requester).getInfo().getCurrentModule(), pkgName);
diff --git a/src/org/apache/osgi/framework/ServiceRegistrationImpl.java b/src/org/apache/felix/framework/ServiceRegistrationImpl.java
similarity index 98%
rename from src/org/apache/osgi/framework/ServiceRegistrationImpl.java
rename to src/org/apache/felix/framework/ServiceRegistrationImpl.java
index 9ba8b28..7cddeee 100644
--- a/src/org/apache/osgi/framework/ServiceRegistrationImpl.java
+++ b/src/org/apache/felix/framework/ServiceRegistrationImpl.java
@@ -14,13 +14,13 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.security.AccessController;
 import java.security.PrivilegedExceptionAction;
 import java.util.*;
 
-import org.apache.osgi.framework.util.CaseInsensitiveMap;
+import org.apache.felix.framework.util.CaseInsensitiveMap;
 import org.osgi.framework.*;
 
 class ServiceRegistrationImpl implements ServiceRegistration
diff --git a/src/org/apache/osgi/framework/ServiceRegistry.java b/src/org/apache/felix/framework/ServiceRegistry.java
similarity index 99%
rename from src/org/apache/osgi/framework/ServiceRegistry.java
rename to src/org/apache/felix/framework/ServiceRegistry.java
index 02f206b..539d994 100644
--- a/src/org/apache/osgi/framework/ServiceRegistry.java
+++ b/src/org/apache/felix/framework/ServiceRegistry.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.util.*;
 
-import org.apache.osgi.framework.util.FelixConstants;
+import org.apache.felix.framework.util.FelixConstants;
 import org.osgi.framework.*;
 
 public class ServiceRegistry
diff --git a/src/org/apache/osgi/framework/StartLevelActivator.java b/src/org/apache/felix/framework/StartLevelActivator.java
similarity index 96%
rename from src/org/apache/osgi/framework/StartLevelActivator.java
rename to src/org/apache/felix/framework/StartLevelActivator.java
index 222b55e..fd30425 100644
--- a/src/org/apache/osgi/framework/StartLevelActivator.java
+++ b/src/org/apache/felix/framework/StartLevelActivator.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import org.osgi.framework.*;
 
diff --git a/src/org/apache/osgi/framework/StartLevelImpl.java b/src/org/apache/felix/framework/StartLevelImpl.java
similarity index 98%
rename from src/org/apache/osgi/framework/StartLevelImpl.java
rename to src/org/apache/felix/framework/StartLevelImpl.java
index 831af64..8008133 100644
--- a/src/org/apache/osgi/framework/StartLevelImpl.java
+++ b/src/org/apache/felix/framework/StartLevelImpl.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.security.AccessController;
 import java.util.ArrayList;
diff --git a/src/org/apache/osgi/framework/SystemBundle.java b/src/org/apache/felix/framework/SystemBundle.java
similarity index 96%
rename from src/org/apache/osgi/framework/SystemBundle.java
rename to src/org/apache/felix/framework/SystemBundle.java
index d201e7d..92ba0ab 100644
--- a/src/org/apache/osgi/framework/SystemBundle.java
+++ b/src/org/apache/felix/framework/SystemBundle.java
@@ -14,18 +14,18 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.InputStream;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.*;
 
-import org.apache.osgi.framework.searchpolicy.*;
-import org.apache.osgi.framework.util.CaseInsensitiveMap;
-import org.apache.osgi.framework.util.FelixConstants;
-import org.apache.osgi.moduleloader.LibrarySource;
-import org.apache.osgi.moduleloader.ResourceSource;
+import org.apache.felix.framework.searchpolicy.*;
+import org.apache.felix.framework.util.CaseInsensitiveMap;
+import org.apache.felix.framework.util.FelixConstants;
+import org.apache.felix.moduleloader.LibrarySource;
+import org.apache.felix.moduleloader.ResourceSource;
 import org.osgi.framework.*;
 
 
diff --git a/src/org/apache/osgi/framework/SystemBundleActivator.java b/src/org/apache/felix/framework/SystemBundleActivator.java
similarity index 97%
rename from src/org/apache/osgi/framework/SystemBundleActivator.java
rename to src/org/apache/felix/framework/SystemBundleActivator.java
index 0dbd1a7..bf2c6d9 100644
--- a/src/org/apache/osgi/framework/SystemBundleActivator.java
+++ b/src/org/apache/felix/framework/SystemBundleActivator.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.util.List;
 
diff --git a/src/org/apache/osgi/framework/SystemBundleArchive.java b/src/org/apache/felix/framework/SystemBundleArchive.java
similarity index 93%
rename from src/org/apache/osgi/framework/SystemBundleArchive.java
rename to src/org/apache/felix/framework/SystemBundleArchive.java
index 611d350..8e70fd3 100644
--- a/src/org/apache/osgi/framework/SystemBundleArchive.java
+++ b/src/org/apache/felix/framework/SystemBundleArchive.java
@@ -14,13 +14,13 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework;
+package org.apache.felix.framework;
 
 import java.io.File;
 import java.util.Map;
 
-import org.apache.osgi.framework.cache.BundleArchive;
-import org.apache.osgi.framework.util.FelixConstants;
+import org.apache.felix.framework.cache.BundleArchive;
+import org.apache.felix.framework.util.FelixConstants;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 
diff --git a/src/org/apache/osgi/framework/cache/BundleArchive.java b/src/org/apache/felix/framework/cache/BundleArchive.java
similarity index 98%
rename from src/org/apache/osgi/framework/cache/BundleArchive.java
rename to src/org/apache/felix/framework/cache/BundleArchive.java
index 9ad76c1..85dc382 100644
--- a/src/org/apache/osgi/framework/cache/BundleArchive.java
+++ b/src/org/apache/felix/framework/cache/BundleArchive.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.cache;
+package org.apache.felix.framework.cache;
 
 import java.io.File;
 import java.util.Map;
@@ -29,7 +29,7 @@
  * this interface will be related to a specific implementation of the
  * <tt>BundleCache</tt> interface.
  * </p>
- * @see org.apache.osgi.framework.BundleCache
+ * @see org.apache.felix.framework.BundleCache
 **/
 public interface BundleArchive
 {
diff --git a/src/org/apache/osgi/framework/cache/BundleCache.java b/src/org/apache/felix/framework/cache/BundleCache.java
similarity index 96%
rename from src/org/apache/osgi/framework/cache/BundleCache.java
rename to src/org/apache/felix/framework/cache/BundleCache.java
index 87c0ee9..33b4a35 100644
--- a/src/org/apache/osgi/framework/cache/BundleCache.java
+++ b/src/org/apache/felix/framework/cache/BundleCache.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.cache;
+package org.apache.felix.framework.cache;
 
 import java.io.InputStream;
 
-import org.apache.osgi.framework.LogWrapper;
-import org.apache.osgi.framework.util.PropertyResolver;
+import org.apache.felix.framework.LogWrapper;
+import org.apache.felix.framework.util.PropertyResolver;
 
 /**
  * <p>
@@ -32,7 +32,7 @@
  * <tt>felix.cache.class</tt> system property. Bundle cache implemenations
  * should implement this interface and provide a default constructor.
  * </p>
- * @see org.apache.osgi.framework.BundleArchive
+ * @see org.apache.felix.framework.BundleArchive
 **/
 public interface BundleCache
 {
diff --git a/src/org/apache/osgi/framework/cache/DefaultBundleArchive.java b/src/org/apache/felix/framework/cache/DefaultBundleArchive.java
similarity index 99%
rename from src/org/apache/osgi/framework/cache/DefaultBundleArchive.java
rename to src/org/apache/felix/framework/cache/DefaultBundleArchive.java
index 18d04c0..02d4bc0 100644
--- a/src/org/apache/osgi/framework/cache/DefaultBundleArchive.java
+++ b/src/org/apache/felix/framework/cache/DefaultBundleArchive.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.cache;
+package org.apache.felix.framework.cache;
 
 import java.io.*;
 import java.security.*;
@@ -23,8 +23,8 @@
 import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
 
-import org.apache.osgi.framework.LogWrapper;
-import org.apache.osgi.framework.util.*;
+import org.apache.felix.framework.LogWrapper;
+import org.apache.felix.framework.util.*;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 
@@ -33,7 +33,7 @@
  * This class, combined with <tt>DefaultBundleCache</tt>, implements the
  * default file system-based bundle cache for Felix.
  * </p>
- * @see org.apache.osgi.framework.util.DefaultBundleCache
+ * @see org.apache.felix.framework.util.DefaultBundleCache
 **/
 public class DefaultBundleArchive implements BundleArchive
 {
diff --git a/src/org/apache/osgi/framework/cache/DefaultBundleCache.java b/src/org/apache/felix/framework/cache/DefaultBundleCache.java
similarity index 97%
rename from src/org/apache/osgi/framework/cache/DefaultBundleCache.java
rename to src/org/apache/felix/framework/cache/DefaultBundleCache.java
index eb6b0b7..83cb1c9 100644
--- a/src/org/apache/osgi/framework/cache/DefaultBundleCache.java
+++ b/src/org/apache/felix/framework/cache/DefaultBundleCache.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.cache;
+package org.apache.felix.framework.cache;
 
 import java.io.*;
 
-import org.apache.osgi.framework.LogWrapper;
-import org.apache.osgi.framework.util.PropertyResolver;
+import org.apache.felix.framework.LogWrapper;
+import org.apache.felix.framework.util.PropertyResolver;
 
 /**
  * <p>
@@ -63,7 +63,7 @@
  * For specific information on how to configure Felix using system properties,
  * refer to the Felix usage documentation.
  * </p>
- * @see org.apache.osgi.framework.util.DefaultBundleArchive
+ * @see org.apache.felix.framework.util.DefaultBundleArchive
 **/
 public class DefaultBundleCache implements BundleCache
 {
diff --git a/src/org/apache/osgi/framework/ext/FelixBundleContext.java b/src/org/apache/felix/framework/ext/FelixBundleContext.java
similarity index 95%
rename from src/org/apache/osgi/framework/ext/FelixBundleContext.java
rename to src/org/apache/felix/framework/ext/FelixBundleContext.java
index e1d6cc9..8c46c34 100644
--- a/src/org/apache/osgi/framework/ext/FelixBundleContext.java
+++ b/src/org/apache/felix/framework/ext/FelixBundleContext.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.ext;
+package org.apache.felix.framework.ext;
 
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
diff --git a/src/org/apache/osgi/framework/installer/Artifact.java b/src/org/apache/felix/framework/installer/Artifact.java
similarity index 95%
rename from src/org/apache/osgi/framework/installer/Artifact.java
rename to src/org/apache/felix/framework/installer/Artifact.java
index 42f8227..841a0d2 100644
--- a/src/org/apache/osgi/framework/installer/Artifact.java
+++ b/src/org/apache/felix/framework/installer/Artifact.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer;
+package org.apache.felix.framework.installer;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/org/apache/osgi/framework/installer/BooleanProperty.java b/src/org/apache/felix/framework/installer/BooleanProperty.java
similarity index 94%
rename from src/org/apache/osgi/framework/installer/BooleanProperty.java
rename to src/org/apache/felix/framework/installer/BooleanProperty.java
index f470bce..738c94f 100644
--- a/src/org/apache/osgi/framework/installer/BooleanProperty.java
+++ b/src/org/apache/felix/framework/installer/BooleanProperty.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer;
+package org.apache.felix.framework.installer;
 
 public interface BooleanProperty extends Property
 {
diff --git a/src/org/apache/osgi/framework/installer/Install.java b/src/org/apache/felix/framework/installer/Install.java
similarity index 96%
rename from src/org/apache/osgi/framework/installer/Install.java
rename to src/org/apache/felix/framework/installer/Install.java
index 7e6eae6..4610d73 100644
--- a/src/org/apache/osgi/framework/installer/Install.java
+++ b/src/org/apache/felix/framework/installer/Install.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer;
+package org.apache.felix.framework.installer;
 
 import java.awt.*;
 import java.awt.event.*;
@@ -24,11 +24,11 @@
 import javax.swing.*;
 import javax.swing.border.BevelBorder;
 
-import org.apache.osgi.framework.installer.artifact.*;
-import org.apache.osgi.framework.installer.editor.BooleanEditor;
-import org.apache.osgi.framework.installer.editor.FileEditor;
-import org.apache.osgi.framework.installer.property.*;
-import org.apache.osgi.framework.util.FelixConstants;
+import org.apache.felix.framework.installer.artifact.*;
+import org.apache.felix.framework.installer.editor.BooleanEditor;
+import org.apache.felix.framework.installer.editor.FileEditor;
+import org.apache.felix.framework.installer.property.*;
+import org.apache.felix.framework.util.FelixConstants;
 
 public class Install extends JFrame
 {
@@ -87,7 +87,7 @@
         // Eventually these should be read from a file.
         java.util.List list = new ArrayList();
 
-        // Add the shell choice property.
+        // Add the impl choice property.
         prop = new BooleanPropertyImpl("Shell", true);
         prop.setEditor(new BooleanEditor((BooleanProperty) prop, "Text", "GUI"));
         list.add(prop);
@@ -284,9 +284,9 @@
     {
         String msg = "<html>"
             + "<center><h1>Felix " + FelixConstants.FELIX_VERSION_VALUE + "</h1></center>"
-            + "You can download example bundles at the Felix shell prompt by<br>"
+            + "You can download example bundles at the Felix impl prompt by<br>"
             + "using the <b><tt>obr</tt></b> command to access the OSGi Bundle Repository;<br>"
-            + "type <b><tt>obr help</tt></b> at the Felix shell prompt for details."
+            + "type <b><tt>obr help</tt></b> at the Felix impl prompt for details."
             + "</html>";
         JLabel label = new JLabel(msg);
         label.setFont(new Font("SansSerif", Font.PLAIN, 11));
diff --git a/src/org/apache/osgi/framework/installer/Property.java b/src/org/apache/felix/framework/installer/Property.java
similarity index 94%
rename from src/org/apache/osgi/framework/installer/Property.java
rename to src/org/apache/felix/framework/installer/Property.java
index 7c52c46..41cdc21 100644
--- a/src/org/apache/osgi/framework/installer/Property.java
+++ b/src/org/apache/felix/framework/installer/Property.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer;
+package org.apache.felix.framework.installer;
 
 import javax.swing.JComponent;
 
diff --git a/src/org/apache/osgi/framework/installer/PropertyPanel.java b/src/org/apache/felix/framework/installer/PropertyPanel.java
similarity index 97%
rename from src/org/apache/osgi/framework/installer/PropertyPanel.java
rename to src/org/apache/felix/framework/installer/PropertyPanel.java
index 46dd4a1..a90203e 100644
--- a/src/org/apache/osgi/framework/installer/PropertyPanel.java
+++ b/src/org/apache/felix/framework/installer/PropertyPanel.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer;
+package org.apache.felix.framework.installer;
 
 import java.awt.*;
 import java.util.*;
diff --git a/src/org/apache/osgi/framework/installer/Status.java b/src/org/apache/felix/framework/installer/Status.java
similarity index 93%
rename from src/org/apache/osgi/framework/installer/Status.java
rename to src/org/apache/felix/framework/installer/Status.java
index 7070422..634c97e 100644
--- a/src/org/apache/osgi/framework/installer/Status.java
+++ b/src/org/apache/felix/framework/installer/Status.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer;
+package org.apache.felix.framework.installer;
 
 public interface Status
 {
diff --git a/src/org/apache/osgi/framework/installer/StringProperty.java b/src/org/apache/felix/framework/installer/StringProperty.java
similarity index 94%
rename from src/org/apache/osgi/framework/installer/StringProperty.java
rename to src/org/apache/felix/framework/installer/StringProperty.java
index 2597d47..711ba43 100644
--- a/src/org/apache/osgi/framework/installer/StringProperty.java
+++ b/src/org/apache/felix/framework/installer/StringProperty.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer;
+package org.apache.felix.framework.installer;
 
 public interface StringProperty extends Property
 {
diff --git a/src/org/apache/osgi/framework/installer/artifact/AbstractArtifact.java b/src/org/apache/felix/framework/installer/artifact/AbstractArtifact.java
similarity index 97%
rename from src/org/apache/osgi/framework/installer/artifact/AbstractArtifact.java
rename to src/org/apache/felix/framework/installer/artifact/AbstractArtifact.java
index c3ee33b..b881bc1 100644
--- a/src/org/apache/osgi/framework/installer/artifact/AbstractArtifact.java
+++ b/src/org/apache/felix/framework/installer/artifact/AbstractArtifact.java
@@ -14,13 +14,13 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.artifact;
+package org.apache.felix.framework.installer.artifact;
 
 import java.io.*;
 import java.util.Map;
 
-import org.apache.osgi.framework.installer.*;
-import org.apache.osgi.framework.installer.property.StringPropertyImpl;
+import org.apache.felix.framework.installer.*;
+import org.apache.felix.framework.installer.property.StringPropertyImpl;
 
 public abstract class AbstractArtifact implements Artifact
 {
diff --git a/src/org/apache/osgi/framework/installer/artifact/AbstractFileArtifact.java b/src/org/apache/felix/framework/installer/artifact/AbstractFileArtifact.java
similarity index 96%
rename from src/org/apache/osgi/framework/installer/artifact/AbstractFileArtifact.java
rename to src/org/apache/felix/framework/installer/artifact/AbstractFileArtifact.java
index 4b46338..261328b 100644
--- a/src/org/apache/osgi/framework/installer/artifact/AbstractFileArtifact.java
+++ b/src/org/apache/felix/framework/installer/artifact/AbstractFileArtifact.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.artifact;
+package org.apache.felix.framework.installer.artifact;
 
 import java.io.InputStream;
 import java.util.Map;
 
-import org.apache.osgi.framework.installer.*;
+import org.apache.felix.framework.installer.*;
 
 public abstract class AbstractFileArtifact extends AbstractArtifact
 {
diff --git a/src/org/apache/osgi/framework/installer/artifact/AbstractJarArtifact.java b/src/org/apache/felix/framework/installer/artifact/AbstractJarArtifact.java
similarity index 97%
rename from src/org/apache/osgi/framework/installer/artifact/AbstractJarArtifact.java
rename to src/org/apache/felix/framework/installer/artifact/AbstractJarArtifact.java
index fef3316..cec33e4 100644
--- a/src/org/apache/osgi/framework/installer/artifact/AbstractJarArtifact.java
+++ b/src/org/apache/felix/framework/installer/artifact/AbstractJarArtifact.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.artifact;
+package org.apache.felix.framework.installer.artifact;
 
 import java.io.*;
 import java.util.Map;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
-import org.apache.osgi.framework.installer.*;
+import org.apache.felix.framework.installer.*;
 
 public abstract class AbstractJarArtifact extends AbstractArtifact
 {
diff --git a/src/org/apache/osgi/framework/installer/artifact/ResourceFileArtifact.java b/src/org/apache/felix/framework/installer/artifact/ResourceFileArtifact.java
similarity index 87%
rename from src/org/apache/osgi/framework/installer/artifact/ResourceFileArtifact.java
rename to src/org/apache/felix/framework/installer/artifact/ResourceFileArtifact.java
index 599df964..9c90b8a 100644
--- a/src/org/apache/osgi/framework/installer/artifact/ResourceFileArtifact.java
+++ b/src/org/apache/felix/framework/installer/artifact/ResourceFileArtifact.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.artifact;
+package org.apache.felix.framework.installer.artifact;
 
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.apache.osgi.framework.installer.Status;
-import org.apache.osgi.framework.installer.StringProperty;
-import org.apache.osgi.framework.installer.resource.ResourceLoader;
+import org.apache.felix.framework.installer.Status;
+import org.apache.felix.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.resource.ResourceLoader;
 
 public class ResourceFileArtifact extends AbstractFileArtifact
 {
diff --git a/src/org/apache/osgi/framework/installer/artifact/ResourceJarArtifact.java b/src/org/apache/felix/framework/installer/artifact/ResourceJarArtifact.java
similarity index 85%
rename from src/org/apache/osgi/framework/installer/artifact/ResourceJarArtifact.java
rename to src/org/apache/felix/framework/installer/artifact/ResourceJarArtifact.java
index 59faea3..6e5c4c5 100644
--- a/src/org/apache/osgi/framework/installer/artifact/ResourceJarArtifact.java
+++ b/src/org/apache/felix/framework/installer/artifact/ResourceJarArtifact.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.artifact;
+package org.apache.felix.framework.installer.artifact;
 
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.apache.osgi.framework.installer.Status;
-import org.apache.osgi.framework.installer.StringProperty;
-import org.apache.osgi.framework.installer.resource.ResourceLoader;
+import org.apache.felix.framework.installer.Status;
+import org.apache.felix.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.resource.ResourceLoader;
 
 public class ResourceJarArtifact extends AbstractJarArtifact
 {
diff --git a/src/org/apache/osgi/framework/installer/artifact/URLFileArtifact.java b/src/org/apache/felix/framework/installer/artifact/URLFileArtifact.java
similarity index 93%
rename from src/org/apache/osgi/framework/installer/artifact/URLFileArtifact.java
rename to src/org/apache/felix/framework/installer/artifact/URLFileArtifact.java
index b3729f0..6c32daa 100644
--- a/src/org/apache/osgi/framework/installer/artifact/URLFileArtifact.java
+++ b/src/org/apache/felix/framework/installer/artifact/URLFileArtifact.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.artifact;
+package org.apache.felix.framework.installer.artifact;
 
 import java.io.*;
 import java.net.URL;
 import java.net.URLConnection;
 
-import org.apache.osgi.framework.installer.Status;
-import org.apache.osgi.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.Status;
+import org.apache.felix.framework.installer.StringProperty;
 
 public class URLFileArtifact extends AbstractFileArtifact
 {
diff --git a/src/org/apache/osgi/framework/installer/artifact/URLJarArtifact.java b/src/org/apache/felix/framework/installer/artifact/URLJarArtifact.java
similarity index 93%
rename from src/org/apache/osgi/framework/installer/artifact/URLJarArtifact.java
rename to src/org/apache/felix/framework/installer/artifact/URLJarArtifact.java
index 21e4751..1c6733b 100644
--- a/src/org/apache/osgi/framework/installer/artifact/URLJarArtifact.java
+++ b/src/org/apache/felix/framework/installer/artifact/URLJarArtifact.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.artifact;
+package org.apache.felix.framework.installer.artifact;
 
 import java.io.*;
 import java.net.URL;
 import java.net.URLConnection;
 
-import org.apache.osgi.framework.installer.Status;
-import org.apache.osgi.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.Status;
+import org.apache.felix.framework.installer.StringProperty;
 
 public class URLJarArtifact extends AbstractJarArtifact
 {
diff --git a/src/org/apache/osgi/framework/installer/editor/BooleanEditor.java b/src/org/apache/felix/framework/installer/editor/BooleanEditor.java
similarity index 93%
rename from src/org/apache/osgi/framework/installer/editor/BooleanEditor.java
rename to src/org/apache/felix/framework/installer/editor/BooleanEditor.java
index e11a654..8c70559 100644
--- a/src/org/apache/osgi/framework/installer/editor/BooleanEditor.java
+++ b/src/org/apache/felix/framework/installer/editor/BooleanEditor.java
@@ -14,15 +14,15 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.editor;
+package org.apache.felix.framework.installer.editor;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
 import javax.swing.*;
 
-import org.apache.osgi.framework.installer.BooleanProperty;
-import org.apache.osgi.framework.installer.Property;
+import org.apache.felix.framework.installer.BooleanProperty;
+import org.apache.felix.framework.installer.Property;
 
 public class BooleanEditor extends JPanel
 {
diff --git a/src/org/apache/osgi/framework/installer/editor/BooleanStringEditor.java b/src/org/apache/felix/framework/installer/editor/BooleanStringEditor.java
similarity index 97%
rename from src/org/apache/osgi/framework/installer/editor/BooleanStringEditor.java
rename to src/org/apache/felix/framework/installer/editor/BooleanStringEditor.java
index f64a96e..5216837 100644
--- a/src/org/apache/osgi/framework/installer/editor/BooleanStringEditor.java
+++ b/src/org/apache/felix/framework/installer/editor/BooleanStringEditor.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.editor;
+package org.apache.felix.framework.installer.editor;
 
 import java.awt.*;
 import java.awt.event.*;
 
 import javax.swing.*;
 
-import org.apache.osgi.framework.installer.*;
+import org.apache.felix.framework.installer.*;
 
 public class BooleanStringEditor extends JPanel
 {
diff --git a/src/org/apache/osgi/framework/installer/editor/FileEditor.java b/src/org/apache/felix/framework/installer/editor/FileEditor.java
similarity index 95%
rename from src/org/apache/osgi/framework/installer/editor/FileEditor.java
rename to src/org/apache/felix/framework/installer/editor/FileEditor.java
index 04a7bde..0d92983 100644
--- a/src/org/apache/osgi/framework/installer/editor/FileEditor.java
+++ b/src/org/apache/felix/framework/installer/editor/FileEditor.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.editor;
+package org.apache.felix.framework.installer.editor;
 
 import java.awt.*;
 import java.awt.event.*;
@@ -22,8 +22,8 @@
 
 import javax.swing.*;
 
-import org.apache.osgi.framework.installer.Property;
-import org.apache.osgi.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.Property;
+import org.apache.felix.framework.installer.StringProperty;
 
 public class FileEditor extends JPanel
 {
diff --git a/src/org/apache/osgi/framework/installer/editor/StringEditor.java b/src/org/apache/felix/framework/installer/editor/StringEditor.java
similarity index 92%
rename from src/org/apache/osgi/framework/installer/editor/StringEditor.java
rename to src/org/apache/felix/framework/installer/editor/StringEditor.java
index 8d0c162..d6c8145 100644
--- a/src/org/apache/osgi/framework/installer/editor/StringEditor.java
+++ b/src/org/apache/felix/framework/installer/editor/StringEditor.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.editor;
+package org.apache.felix.framework.installer.editor;
 
 import java.awt.*;
 import java.awt.event.FocusEvent;
@@ -23,8 +23,8 @@
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
-import org.apache.osgi.framework.installer.Property;
-import org.apache.osgi.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.Property;
+import org.apache.felix.framework.installer.StringProperty;
 
 public class StringEditor extends JPanel
 {
diff --git a/src/org/apache/osgi/framework/installer/manifest.mf b/src/org/apache/felix/framework/installer/manifest.mf
similarity index 100%
rename from src/org/apache/osgi/framework/installer/manifest.mf
rename to src/org/apache/felix/framework/installer/manifest.mf
diff --git a/src/org/apache/osgi/framework/installer/property/BooleanPropertyImpl.java b/src/org/apache/felix/framework/installer/property/BooleanPropertyImpl.java
similarity index 89%
rename from src/org/apache/osgi/framework/installer/property/BooleanPropertyImpl.java
rename to src/org/apache/felix/framework/installer/property/BooleanPropertyImpl.java
index cde63c1..4be2e6d 100644
--- a/src/org/apache/osgi/framework/installer/property/BooleanPropertyImpl.java
+++ b/src/org/apache/felix/framework/installer/property/BooleanPropertyImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.property;
+package org.apache.felix.framework.installer.property;
 
 import javax.swing.JComponent;
 
-import org.apache.osgi.framework.installer.BooleanProperty;
-import org.apache.osgi.framework.installer.editor.BooleanEditor;
+import org.apache.felix.framework.installer.BooleanProperty;
+import org.apache.felix.framework.installer.editor.BooleanEditor;
 
 public class BooleanPropertyImpl implements BooleanProperty
 {
diff --git a/src/org/apache/osgi/framework/installer/property/BooleanStringPropertyImpl.java b/src/org/apache/felix/framework/installer/property/BooleanStringPropertyImpl.java
similarity index 87%
rename from src/org/apache/osgi/framework/installer/property/BooleanStringPropertyImpl.java
rename to src/org/apache/felix/framework/installer/property/BooleanStringPropertyImpl.java
index da8ed1d..4a2d0de 100644
--- a/src/org/apache/osgi/framework/installer/property/BooleanStringPropertyImpl.java
+++ b/src/org/apache/felix/framework/installer/property/BooleanStringPropertyImpl.java
@@ -14,13 +14,13 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.property;
+package org.apache.felix.framework.installer.property;
 
 import javax.swing.JComponent;
 
-import org.apache.osgi.framework.installer.BooleanProperty;
-import org.apache.osgi.framework.installer.StringProperty;
-import org.apache.osgi.framework.installer.editor.BooleanStringEditor;
+import org.apache.felix.framework.installer.BooleanProperty;
+import org.apache.felix.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.editor.BooleanStringEditor;
 
 public class BooleanStringPropertyImpl implements BooleanProperty, StringProperty
 {
diff --git a/src/org/apache/osgi/framework/installer/property/NotBooleanPropertyImpl.java b/src/org/apache/felix/framework/installer/property/NotBooleanPropertyImpl.java
similarity index 89%
rename from src/org/apache/osgi/framework/installer/property/NotBooleanPropertyImpl.java
rename to src/org/apache/felix/framework/installer/property/NotBooleanPropertyImpl.java
index e242552..d780b61 100644
--- a/src/org/apache/osgi/framework/installer/property/NotBooleanPropertyImpl.java
+++ b/src/org/apache/felix/framework/installer/property/NotBooleanPropertyImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.property;
+package org.apache.felix.framework.installer.property;
 
 import javax.swing.JComponent;
 
-import org.apache.osgi.framework.installer.BooleanProperty;
-import org.apache.osgi.framework.installer.editor.BooleanEditor;
+import org.apache.felix.framework.installer.BooleanProperty;
+import org.apache.felix.framework.installer.editor.BooleanEditor;
 
 public class NotBooleanPropertyImpl implements BooleanProperty
 {
diff --git a/src/org/apache/osgi/framework/installer/property/StringPropertyImpl.java b/src/org/apache/felix/framework/installer/property/StringPropertyImpl.java
similarity index 89%
rename from src/org/apache/osgi/framework/installer/property/StringPropertyImpl.java
rename to src/org/apache/felix/framework/installer/property/StringPropertyImpl.java
index 47f8db1..b2d99e9 100644
--- a/src/org/apache/osgi/framework/installer/property/StringPropertyImpl.java
+++ b/src/org/apache/felix/framework/installer/property/StringPropertyImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.property;
+package org.apache.felix.framework.installer.property;
 
 import javax.swing.JComponent;
 
-import org.apache.osgi.framework.installer.StringProperty;
-import org.apache.osgi.framework.installer.editor.StringEditor;
+import org.apache.felix.framework.installer.StringProperty;
+import org.apache.felix.framework.installer.editor.StringEditor;
 
 public class StringPropertyImpl implements StringProperty
 {
diff --git a/src/org/apache/osgi/framework/installer/resource/ResourceLoader.java b/src/org/apache/felix/framework/installer/resource/ResourceLoader.java
similarity index 94%
rename from src/org/apache/osgi/framework/installer/resource/ResourceLoader.java
rename to src/org/apache/felix/framework/installer/resource/ResourceLoader.java
index ae7d675..c4a4cbf 100644
--- a/src/org/apache/osgi/framework/installer/resource/ResourceLoader.java
+++ b/src/org/apache/felix/framework/installer/resource/ResourceLoader.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.installer.resource;
+package org.apache.felix.framework.installer.resource;
 
 import java.io.InputStream;
 import java.net.URL;
diff --git a/src/org/apache/felix/framework/manifest.mf b/src/org/apache/felix/framework/manifest.mf
new file mode 100644
index 0000000..6b055c6
--- /dev/null
+++ b/src/org/apache/felix/framework/manifest.mf
@@ -0,0 +1,2 @@
+Main-Class: org.apache.felix.framework.Main
+Class-Path: osgi.jar moduleloader.jar
diff --git a/src/org/apache/osgi/framework/searchpolicy/R4Attribute.java b/src/org/apache/felix/framework/searchpolicy/R4Attribute.java
similarity index 95%
rename from src/org/apache/osgi/framework/searchpolicy/R4Attribute.java
rename to src/org/apache/felix/framework/searchpolicy/R4Attribute.java
index a3161b9..d2c0217 100644
--- a/src/org/apache/osgi/framework/searchpolicy/R4Attribute.java
+++ b/src/org/apache/felix/framework/searchpolicy/R4Attribute.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.searchpolicy;
+package org.apache.felix.framework.searchpolicy;
 
 public class R4Attribute
 {
diff --git a/src/org/apache/osgi/framework/searchpolicy/R4Directive.java b/src/org/apache/felix/framework/searchpolicy/R4Directive.java
similarity index 94%
rename from src/org/apache/osgi/framework/searchpolicy/R4Directive.java
rename to src/org/apache/felix/framework/searchpolicy/R4Directive.java
index 12de924..2d81fa3 100644
--- a/src/org/apache/osgi/framework/searchpolicy/R4Directive.java
+++ b/src/org/apache/felix/framework/searchpolicy/R4Directive.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.searchpolicy;
+package org.apache.felix.framework.searchpolicy;
 
 public class R4Directive
 {
diff --git a/src/org/apache/osgi/framework/searchpolicy/R4Package.java b/src/org/apache/felix/framework/searchpolicy/R4Package.java
similarity index 98%
rename from src/org/apache/osgi/framework/searchpolicy/R4Package.java
rename to src/org/apache/felix/framework/searchpolicy/R4Package.java
index 380c5f0..a46e17f 100755
--- a/src/org/apache/osgi/framework/searchpolicy/R4Package.java
+++ b/src/org/apache/felix/framework/searchpolicy/R4Package.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.searchpolicy;
+package org.apache.felix.framework.searchpolicy;
 
 import java.util.*;
 
-import org.apache.osgi.framework.util.FelixConstants;
-import org.apache.osgi.framework.util.Util;
+import org.apache.felix.framework.util.FelixConstants;
+import org.apache.felix.framework.util.Util;
 
 public class R4Package
 {
@@ -190,7 +190,7 @@
         }
 
         // Get the class name portion of the target class.
-        String className = org.apache.osgi.moduleloader.Util.getClassName(name);
+        String className = org.apache.felix.moduleloader.Util.getClassName(name);
 
         // If there are no include filters then all classes are included
         // by default, otherwise try to find one match.
diff --git a/src/org/apache/osgi/framework/searchpolicy/R4SearchPolicy.java b/src/org/apache/felix/framework/searchpolicy/R4SearchPolicy.java
similarity index 99%
rename from src/org/apache/osgi/framework/searchpolicy/R4SearchPolicy.java
rename to src/org/apache/felix/framework/searchpolicy/R4SearchPolicy.java
index 5855c06..bb8e1c8 100755
--- a/src/org/apache/osgi/framework/searchpolicy/R4SearchPolicy.java
+++ b/src/org/apache/felix/framework/searchpolicy/R4SearchPolicy.java
@@ -14,15 +14,15 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.searchpolicy;
+package org.apache.felix.framework.searchpolicy;
 
 import java.net.URL;
 import java.util.*;
 
-import org.apache.osgi.framework.LogWrapper;
-import org.apache.osgi.moduleloader.*;
-import org.apache.osgi.moduleloader.search.ResolveException;
-import org.apache.osgi.moduleloader.search.ResolveListener;
+import org.apache.felix.framework.LogWrapper;
+import org.apache.felix.moduleloader.*;
+import org.apache.felix.moduleloader.search.ResolveException;
+import org.apache.felix.moduleloader.search.ResolveListener;
 
 public class R4SearchPolicy implements SearchPolicy, ModuleListener
 {
diff --git a/src/org/apache/osgi/framework/searchpolicy/R4Version.java b/src/org/apache/felix/framework/searchpolicy/R4Version.java
similarity index 98%
rename from src/org/apache/osgi/framework/searchpolicy/R4Version.java
rename to src/org/apache/felix/framework/searchpolicy/R4Version.java
index e7f11fc..c57975e 100644
--- a/src/org/apache/osgi/framework/searchpolicy/R4Version.java
+++ b/src/org/apache/felix/framework/searchpolicy/R4Version.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.searchpolicy;
+package org.apache.felix.framework.searchpolicy;
 
 import java.util.StringTokenizer;
 
diff --git a/src/org/apache/osgi/framework/searchpolicy/R4Wire.java b/src/org/apache/felix/framework/searchpolicy/R4Wire.java
similarity index 90%
rename from src/org/apache/osgi/framework/searchpolicy/R4Wire.java
rename to src/org/apache/felix/framework/searchpolicy/R4Wire.java
index 52ab909..e249fcc 100755
--- a/src/org/apache/osgi/framework/searchpolicy/R4Wire.java
+++ b/src/org/apache/felix/framework/searchpolicy/R4Wire.java
@@ -14,9 +14,9 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.searchpolicy;
+package org.apache.felix.framework.searchpolicy;
 
-import org.apache.osgi.moduleloader.Module;
+import org.apache.felix.moduleloader.Module;
 
 public class R4Wire
 {
diff --git a/src/org/apache/osgi/framework/util/BundleListenerWrapper.java b/src/org/apache/felix/framework/util/BundleListenerWrapper.java
similarity index 98%
rename from src/org/apache/osgi/framework/util/BundleListenerWrapper.java
rename to src/org/apache/felix/framework/util/BundleListenerWrapper.java
index 033bac6..7915f12 100644
--- a/src/org/apache/osgi/framework/util/BundleListenerWrapper.java
+++ b/src/org/apache/felix/framework/util/BundleListenerWrapper.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
diff --git a/src/org/apache/osgi/framework/util/CaseInsensitiveMap.java b/src/org/apache/felix/framework/util/CaseInsensitiveMap.java
similarity index 96%
rename from src/org/apache/osgi/framework/util/CaseInsensitiveMap.java
rename to src/org/apache/felix/framework/util/CaseInsensitiveMap.java
index 6d805aa..cee55e5 100644
--- a/src/org/apache/osgi/framework/util/CaseInsensitiveMap.java
+++ b/src/org/apache/felix/framework/util/CaseInsensitiveMap.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.*;
 
diff --git a/src/org/apache/osgi/framework/util/DispatchQueue.java b/src/org/apache/felix/framework/util/DispatchQueue.java
similarity index 99%
rename from src/org/apache/osgi/framework/util/DispatchQueue.java
rename to src/org/apache/felix/framework/util/DispatchQueue.java
index 9d70a9c..73d8086 100644
--- a/src/org/apache/osgi/framework/util/DispatchQueue.java
+++ b/src/org/apache/felix/framework/util/DispatchQueue.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.*;
 
-import org.apache.osgi.framework.LogWrapper;
+import org.apache.felix.framework.LogWrapper;
 
 /**
  * This class implements an event dispatching queue to simplify delivering
diff --git a/src/org/apache/osgi/framework/util/Dispatcher.java b/src/org/apache/felix/framework/util/Dispatcher.java
similarity index 97%
rename from src/org/apache/osgi/framework/util/Dispatcher.java
rename to src/org/apache/felix/framework/util/Dispatcher.java
index a3c0192..0496e3b 100644
--- a/src/org/apache/osgi/framework/util/Dispatcher.java
+++ b/src/org/apache/felix/framework/util/Dispatcher.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.EventListener;
 import java.util.EventObject;
diff --git a/src/org/apache/osgi/framework/util/FelixConstants.java b/src/org/apache/felix/framework/util/FelixConstants.java
similarity index 98%
rename from src/org/apache/osgi/framework/util/FelixConstants.java
rename to src/org/apache/felix/framework/util/FelixConstants.java
index a98e4e3..960e911 100644
--- a/src/org/apache/osgi/framework/util/FelixConstants.java
+++ b/src/org/apache/felix/framework/util/FelixConstants.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 public interface FelixConstants extends org.osgi.framework.Constants
 {
diff --git a/src/org/apache/osgi/framework/util/FelixDispatchQueue.java b/src/org/apache/felix/framework/util/FelixDispatchQueue.java
similarity index 98%
rename from src/org/apache/osgi/framework/util/FelixDispatchQueue.java
rename to src/org/apache/felix/framework/util/FelixDispatchQueue.java
index bed03a4..4a008b3 100644
--- a/src/org/apache/osgi/framework/util/FelixDispatchQueue.java
+++ b/src/org/apache/felix/framework/util/FelixDispatchQueue.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.EventListener;
 import java.util.EventObject;
 
-import org.apache.osgi.framework.LogWrapper;
+import org.apache.felix.framework.LogWrapper;
 import org.osgi.framework.*;
 
 /**
diff --git a/src/org/apache/osgi/framework/util/FrameworkListenerWrapper.java b/src/org/apache/felix/framework/util/FrameworkListenerWrapper.java
similarity index 97%
rename from src/org/apache/osgi/framework/util/FrameworkListenerWrapper.java
rename to src/org/apache/felix/framework/util/FrameworkListenerWrapper.java
index 630c78c..e0cfdc9 100644
--- a/src/org/apache/osgi/framework/util/FrameworkListenerWrapper.java
+++ b/src/org/apache/felix/framework/util/FrameworkListenerWrapper.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
diff --git a/src/org/apache/osgi/framework/util/IteratorToEnumeration.java b/src/org/apache/felix/framework/util/IteratorToEnumeration.java
similarity index 96%
rename from src/org/apache/osgi/framework/util/IteratorToEnumeration.java
rename to src/org/apache/felix/framework/util/IteratorToEnumeration.java
index c457827..adf8b19 100644
--- a/src/org/apache/osgi/framework/util/IteratorToEnumeration.java
+++ b/src/org/apache/felix/framework/util/IteratorToEnumeration.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.Enumeration;
 import java.util.Iterator;
diff --git a/src/org/apache/osgi/framework/util/LibraryInfo.java b/src/org/apache/felix/framework/util/LibraryInfo.java
similarity index 99%
rename from src/org/apache/osgi/framework/util/LibraryInfo.java
rename to src/org/apache/felix/framework/util/LibraryInfo.java
index f444ef9..b6171e9 100644
--- a/src/org/apache/osgi/framework/util/LibraryInfo.java
+++ b/src/org/apache/felix/framework/util/LibraryInfo.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.*;
 
diff --git a/src/org/apache/osgi/framework/util/ListenerWrapper.java b/src/org/apache/felix/framework/util/ListenerWrapper.java
similarity index 97%
rename from src/org/apache/osgi/framework/util/ListenerWrapper.java
rename to src/org/apache/felix/framework/util/ListenerWrapper.java
index 0265e8d..eb40c93 100644
--- a/src/org/apache/osgi/framework/util/ListenerWrapper.java
+++ b/src/org/apache/felix/framework/util/ListenerWrapper.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.EventListener;
 
diff --git a/src/org/apache/osgi/framework/util/MapToDictionary.java b/src/org/apache/felix/framework/util/MapToDictionary.java
similarity index 97%
rename from src/org/apache/osgi/framework/util/MapToDictionary.java
rename to src/org/apache/felix/framework/util/MapToDictionary.java
index 0bdd510..7149adf 100644
--- a/src/org/apache/osgi/framework/util/MapToDictionary.java
+++ b/src/org/apache/felix/framework/util/MapToDictionary.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.*;
 
diff --git a/src/org/apache/osgi/framework/util/MutablePropertyResolver.java b/src/org/apache/felix/framework/util/MutablePropertyResolver.java
similarity index 94%
rename from src/org/apache/osgi/framework/util/MutablePropertyResolver.java
rename to src/org/apache/felix/framework/util/MutablePropertyResolver.java
index f5aaf84..da9aa4b 100644
--- a/src/org/apache/osgi/framework/util/MutablePropertyResolver.java
+++ b/src/org/apache/felix/framework/util/MutablePropertyResolver.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 public interface MutablePropertyResolver extends PropertyResolver
 {
diff --git a/src/org/apache/osgi/framework/util/MutablePropertyResolverImpl.java b/src/org/apache/felix/framework/util/MutablePropertyResolverImpl.java
similarity index 96%
rename from src/org/apache/osgi/framework/util/MutablePropertyResolverImpl.java
rename to src/org/apache/felix/framework/util/MutablePropertyResolverImpl.java
index 3be8c37..5d01319 100644
--- a/src/org/apache/osgi/framework/util/MutablePropertyResolverImpl.java
+++ b/src/org/apache/felix/framework/util/MutablePropertyResolverImpl.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.util.Map;
 
diff --git a/src/org/apache/osgi/framework/util/ObjectInputStreamX.java b/src/org/apache/felix/framework/util/ObjectInputStreamX.java
similarity index 97%
rename from src/org/apache/osgi/framework/util/ObjectInputStreamX.java
rename to src/org/apache/felix/framework/util/ObjectInputStreamX.java
index e7b99be..b7f79a8 100644
--- a/src/org/apache/osgi/framework/util/ObjectInputStreamX.java
+++ b/src/org/apache/felix/framework/util/ObjectInputStreamX.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.io.*;
 
diff --git a/src/org/apache/osgi/framework/util/PropertyResolver.java b/src/org/apache/felix/framework/util/PropertyResolver.java
similarity index 94%
rename from src/org/apache/osgi/framework/util/PropertyResolver.java
rename to src/org/apache/felix/framework/util/PropertyResolver.java
index cd8f994..e7825ce 100644
--- a/src/org/apache/osgi/framework/util/PropertyResolver.java
+++ b/src/org/apache/felix/framework/util/PropertyResolver.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 public interface PropertyResolver
 {
diff --git a/src/org/apache/osgi/framework/util/ServiceListenerWrapper.java b/src/org/apache/felix/framework/util/ServiceListenerWrapper.java
similarity index 98%
rename from src/org/apache/osgi/framework/util/ServiceListenerWrapper.java
rename to src/org/apache/felix/framework/util/ServiceListenerWrapper.java
index 0eba299..9b30a43 100644
--- a/src/org/apache/osgi/framework/util/ServiceListenerWrapper.java
+++ b/src/org/apache/felix/framework/util/ServiceListenerWrapper.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.security.*;
 
diff --git a/src/org/apache/osgi/framework/util/Util.java b/src/org/apache/felix/framework/util/Util.java
similarity index 99%
rename from src/org/apache/osgi/framework/util/Util.java
rename to src/org/apache/felix/framework/util/Util.java
index 89591ab..534b776 100644
--- a/src/org/apache/osgi/framework/util/Util.java
+++ b/src/org/apache/felix/framework/util/Util.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util;
+package org.apache.felix.framework.util;
 
 import java.io.*;
 import java.util.ArrayList;
diff --git a/src/org/apache/osgi/framework/util/ldap/AttributeNotFoundException.java b/src/org/apache/felix/framework/util/ldap/AttributeNotFoundException.java
similarity index 94%
rename from src/org/apache/osgi/framework/util/ldap/AttributeNotFoundException.java
rename to src/org/apache/felix/framework/util/ldap/AttributeNotFoundException.java
index 69df531..40d044d 100644
--- a/src/org/apache/osgi/framework/util/ldap/AttributeNotFoundException.java
+++ b/src/org/apache/felix/framework/util/ldap/AttributeNotFoundException.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 public class AttributeNotFoundException extends EvaluationException
 {
diff --git a/src/org/apache/osgi/framework/util/ldap/Driver.java b/src/org/apache/felix/framework/util/ldap/Driver.java
similarity index 98%
rename from src/org/apache/osgi/framework/util/ldap/Driver.java
rename to src/org/apache/felix/framework/util/ldap/Driver.java
index f341255..0690187 100644
--- a/src/org/apache/osgi/framework/util/ldap/Driver.java
+++ b/src/org/apache/felix/framework/util/ldap/Driver.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 import java.io.*;
 import java.util.*;
diff --git a/src/org/apache/osgi/framework/util/ldap/EvaluationException.java b/src/org/apache/felix/framework/util/ldap/EvaluationException.java
similarity index 95%
rename from src/org/apache/osgi/framework/util/ldap/EvaluationException.java
rename to src/org/apache/felix/framework/util/ldap/EvaluationException.java
index c5e1fc9..096e4b2 100644
--- a/src/org/apache/osgi/framework/util/ldap/EvaluationException.java
+++ b/src/org/apache/felix/framework/util/ldap/EvaluationException.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 public class EvaluationException extends Exception
 {
diff --git a/src/org/apache/osgi/framework/util/ldap/Evaluator.java b/src/org/apache/felix/framework/util/ldap/Evaluator.java
similarity index 98%
rename from src/org/apache/osgi/framework/util/ldap/Evaluator.java
rename to src/org/apache/felix/framework/util/ldap/Evaluator.java
index 6b0ef58..ac16762 100644
--- a/src/org/apache/osgi/framework/util/ldap/Evaluator.java
+++ b/src/org/apache/felix/framework/util/ldap/Evaluator.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 import java.util.Stack;
 import java.util.Vector;
diff --git a/src/org/apache/osgi/framework/util/ldap/LdapLexer.java b/src/org/apache/felix/framework/util/ldap/LdapLexer.java
similarity index 97%
rename from src/org/apache/osgi/framework/util/ldap/LdapLexer.java
rename to src/org/apache/felix/framework/util/ldap/LdapLexer.java
index 1617c4d..0aa1511 100644
--- a/src/org/apache/osgi/framework/util/ldap/LdapLexer.java
+++ b/src/org/apache/felix/framework/util/ldap/LdapLexer.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 import java.io.IOException;
 import java.io.Reader;
diff --git a/src/org/apache/osgi/framework/util/ldap/Mapper.java b/src/org/apache/felix/framework/util/ldap/Mapper.java
similarity index 93%
rename from src/org/apache/osgi/framework/util/ldap/Mapper.java
rename to src/org/apache/felix/framework/util/ldap/Mapper.java
index bf9af65..6463511 100644
--- a/src/org/apache/osgi/framework/util/ldap/Mapper.java
+++ b/src/org/apache/felix/framework/util/ldap/Mapper.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 public interface Mapper
 {
diff --git a/src/org/apache/osgi/framework/util/ldap/Operator.java b/src/org/apache/felix/framework/util/ldap/Operator.java
similarity index 95%
rename from src/org/apache/osgi/framework/util/ldap/Operator.java
rename to src/org/apache/felix/framework/util/ldap/Operator.java
index b733238..84b9ac3 100644
--- a/src/org/apache/osgi/framework/util/ldap/Operator.java
+++ b/src/org/apache/felix/framework/util/ldap/Operator.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 import java.util.Stack;
 
diff --git a/src/org/apache/osgi/framework/util/ldap/ParseException.java b/src/org/apache/felix/framework/util/ldap/ParseException.java
similarity index 94%
rename from src/org/apache/osgi/framework/util/ldap/ParseException.java
rename to src/org/apache/felix/framework/util/ldap/ParseException.java
index cdc482b..3d68364 100644
--- a/src/org/apache/osgi/framework/util/ldap/ParseException.java
+++ b/src/org/apache/felix/framework/util/ldap/ParseException.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 public class ParseException extends Exception {
     public ParseException() {super();}
diff --git a/src/org/apache/osgi/framework/util/ldap/Parser.java b/src/org/apache/felix/framework/util/ldap/Parser.java
similarity index 99%
rename from src/org/apache/osgi/framework/util/ldap/Parser.java
rename to src/org/apache/felix/framework/util/ldap/Parser.java
index d14cfe3..61449c6 100644
--- a/src/org/apache/osgi/framework/util/ldap/Parser.java
+++ b/src/org/apache/felix/framework/util/ldap/Parser.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 import java.io.IOException;
 import java.io.PrintStream;
diff --git a/src/org/apache/osgi/framework/util/ldap/Unknown.java b/src/org/apache/felix/framework/util/ldap/Unknown.java
similarity index 95%
rename from src/org/apache/osgi/framework/util/ldap/Unknown.java
rename to src/org/apache/felix/framework/util/ldap/Unknown.java
index 8139f8b..34e7ca8 100644
--- a/src/org/apache/osgi/framework/util/ldap/Unknown.java
+++ b/src/org/apache/felix/framework/util/ldap/Unknown.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.framework.util.ldap;
+package org.apache.felix.framework.util.ldap;
 
 /**
  * This class is used to create simple marker instances that are inserted
diff --git a/src/org/apache/osgi/moduleloader/DefaultURLPolicy.java b/src/org/apache/felix/moduleloader/DefaultURLPolicy.java
similarity index 94%
rename from src/org/apache/osgi/moduleloader/DefaultURLPolicy.java
rename to src/org/apache/felix/moduleloader/DefaultURLPolicy.java
index 55b2e96..0aa9d8d 100644
--- a/src/org/apache/osgi/moduleloader/DefaultURLPolicy.java
+++ b/src/org/apache/felix/moduleloader/DefaultURLPolicy.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.net.URL;
 
@@ -37,9 +37,9 @@
  * the above <tt>URL</tt> and retrieve the associated resource bytes using
  * methods from <tt>ModuleManager</tt> and <tt>Module</tt>.
  * </p>
- * @see org.apache.osgi.moduleloader.ModuleManager
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.URLPolicy
+ * @see org.apache.felix.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.URLPolicy
 **/
 public class DefaultURLPolicy implements URLPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/JarResourceSource.java b/src/org/apache/felix/moduleloader/JarResourceSource.java
similarity index 98%
rename from src/org/apache/osgi/moduleloader/JarResourceSource.java
rename to src/org/apache/felix/moduleloader/JarResourceSource.java
index 16cd8fc..0f3fdbf 100644
--- a/src/org/apache/osgi/moduleloader/JarResourceSource.java
+++ b/src/org/apache/felix/moduleloader/JarResourceSource.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.io.*;
 import java.util.jar.JarFile;
@@ -26,7 +26,7 @@
  * from a JAR file. The approach used by this implementation is to defer
  * opening the JAR file until a request for a resource is made.
  * </p>
- * @see org.apache.osgi.moduleloader.ResourceSource
+ * @see org.apache.felix.moduleloader.ResourceSource
 **/
 public class JarResourceSource implements ResourceSource
 {
diff --git a/src/org/apache/osgi/moduleloader/LibrarySource.java b/src/org/apache/felix/moduleloader/LibrarySource.java
similarity index 93%
rename from src/org/apache/osgi/moduleloader/LibrarySource.java
rename to src/org/apache/felix/moduleloader/LibrarySource.java
index 775dcd7..a0538ae 100644
--- a/src/org/apache/osgi/moduleloader/LibrarySource.java
+++ b/src/org/apache/felix/moduleloader/LibrarySource.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 /**
  * <p>
@@ -30,8 +30,8 @@
  * should be implemented such that they can be opened, closed, and then
  * re-opened.
  * </p>
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.ModuleClassLoader
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.ModuleClassLoader
 **/
 public interface LibrarySource
 {
diff --git a/src/org/apache/osgi/moduleloader/Module.java b/src/org/apache/felix/moduleloader/Module.java
similarity index 93%
rename from src/org/apache/osgi/moduleloader/Module.java
rename to src/org/apache/felix/moduleloader/Module.java
index c33a5fa..66b64a2 100644
--- a/src/org/apache/osgi/moduleloader/Module.java
+++ b/src/org/apache/felix/moduleloader/Module.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -69,10 +69,10 @@
  * associated with it. The <tt>ModuleClassLoader</tt> consults these two types
  * of sources to find classes, resources, and native libraries.
  * </p>
- * @see org.apache.osgi.moduleloader.ModuleManager
- * @see org.apache.osgi.moduleloader.ModuleClassLoader
- * @see org.apache.osgi.moduleloader.ResourceSource
- * @see org.apache.osgi.moduleloader.LibrarySource
+ * @see org.apache.felix.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.ModuleClassLoader
+ * @see org.apache.felix.moduleloader.ResourceSource
+ * @see org.apache.felix.moduleloader.LibrarySource
 **/
 public class Module
 {
@@ -115,9 +115,9 @@
      *        class loader should be used as a resource source; this is an
      *        ugly hack to allow a module to masquerade as the system
      *        class loader.
-     * @see org.apache.osgi.moduleloader.ModuleManager
-     * @see org.apache.osgi.moduleloader.ResourceSource
-     * @see org.apache.osgi.moduleloader.LibrarySource
+     * @see org.apache.felix.moduleloader.ModuleManager
+     * @see org.apache.felix.moduleloader.ResourceSource
+     * @see org.apache.felix.moduleloader.LibrarySource
     **/
     public Module(
         ModuleManager mgr, String id, Object[][] attributes,
@@ -199,7 +199,7 @@
      * </p>
      * @return the array of <tt>ResourceSource</tt>s associated with
      *         the module.
-     * @see org.apache.osgi.moduleloader.ResourceSource
+     * @see org.apache.felix.moduleloader.ResourceSource
     **/
     public ResourceSource[] getResourceSources()
     {
@@ -214,7 +214,7 @@
      * </p>
      * @return the array of <tt>LibrarySource</tt>s associated with
      *         the module.
-     * @see org.apache.osgi.moduleloader.LibrarySource
+     * @see org.apache.felix.moduleloader.LibrarySource
     **/
     public LibrarySource[] getLibrarySources()
     {
@@ -228,7 +228,7 @@
      * action to avoid a security exception being thrown to the caller.
      * </p>
      * @return the <tt>ModuleClassLoader</tt> associated with this module.
-     * @see org.apache.osgi.moduleloader.ModuleClassLoader
+     * @see org.apache.felix.moduleloader.ModuleClassLoader
     **/
     public synchronized ModuleClassLoader getClassLoader()
     {
@@ -268,8 +268,8 @@
      * @param attributes the new attributes to be associated with the module.
      * @param resSources the new resource sources to be associated with the module.
      * @param libSources the new library sources to be associated with the module.
-     * @see org.apache.osgi.moduleloader.ResourceSource
-     * @see org.apache.osgi.moduleloader.LibrarySource
+     * @see org.apache.felix.moduleloader.ResourceSource
+     * @see org.apache.felix.moduleloader.LibrarySource
     **/
     protected synchronized void reset(
         Object[][] attributes, ResourceSource[] resSources,
@@ -311,8 +311,8 @@
      * @param attributes the attributes to be put into a map.
      * @param resSources the resource sources to be opened.
      * @param libSources the library sources to be opened.
-     * @see org.apache.osgi.moduleloader.ResourceSource
-     * @see org.apache.osgi.moduleloader.LibrarySource
+     * @see org.apache.felix.moduleloader.ResourceSource
+     * @see org.apache.felix.moduleloader.LibrarySource
     **/
     private void initialize(
         Object[][] attributes, ResourceSource[] resSources, LibrarySource[] libSources)
diff --git a/src/org/apache/osgi/moduleloader/ModuleClassLoader.java b/src/org/apache/felix/moduleloader/ModuleClassLoader.java
similarity index 99%
rename from src/org/apache/osgi/moduleloader/ModuleClassLoader.java
rename to src/org/apache/felix/moduleloader/ModuleClassLoader.java
index e2c9b96..262128d 100644
--- a/src/org/apache/osgi/moduleloader/ModuleClassLoader.java
+++ b/src/org/apache/felix/moduleloader/ModuleClassLoader.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.io.IOException;
 import java.net.URL;
diff --git a/src/org/apache/osgi/moduleloader/ModuleEvent.java b/src/org/apache/felix/moduleloader/ModuleEvent.java
similarity index 89%
rename from src/org/apache/osgi/moduleloader/ModuleEvent.java
rename to src/org/apache/felix/moduleloader/ModuleEvent.java
index ee878bc..ec15d49 100644
--- a/src/org/apache/osgi/moduleloader/ModuleEvent.java
+++ b/src/org/apache/felix/moduleloader/ModuleEvent.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.util.EventObject;
 
@@ -25,9 +25,9 @@
  * events, a <tt>ModuleListener</tt> must be added to the <tt>ModuleManager</tt>
  * instance.
  * </p>
- * @see org.apache.osgi.moduleloader.ModuleManager
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.ModuleListener
+ * @see org.apache.felix.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.ModuleListener
 **/
 public class ModuleEvent extends EventObject
 {
diff --git a/src/org/apache/osgi/moduleloader/ModuleListener.java b/src/org/apache/felix/moduleloader/ModuleListener.java
similarity index 92%
rename from src/org/apache/osgi/moduleloader/ModuleListener.java
rename to src/org/apache/felix/moduleloader/ModuleListener.java
index aae6b3c..4a583d9 100644
--- a/src/org/apache/osgi/moduleloader/ModuleListener.java
+++ b/src/org/apache/felix/moduleloader/ModuleListener.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.util.EventListener;
 
@@ -24,8 +24,8 @@
  * To receive events, an implementation of this listener must be added
  * to the <tt>ModuleManager</tt> instance.
  * </p>
- * @see org.apache.osgi.moduleloader.ModuleManager
- * @see org.apache.osgi.moduleloader.ModuleEvent
+ * @see org.apache.felix.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.ModuleEvent
 **/
 public interface ModuleListener extends EventListener
 {
diff --git a/src/org/apache/osgi/moduleloader/ModuleManager.java b/src/org/apache/felix/moduleloader/ModuleManager.java
similarity index 94%
rename from src/org/apache/osgi/moduleloader/ModuleManager.java
rename to src/org/apache/felix/moduleloader/ModuleManager.java
index 68a0cc2..7640479 100644
--- a/src/org/apache/osgi/moduleloader/ModuleManager.java
+++ b/src/org/apache/felix/moduleloader/ModuleManager.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.util.*;
 
@@ -89,11 +89,11 @@
  * share modules across multiple <tt>ModuleManager</tt>s. A given <tt>ModuleManager</tt>
  * can only have one <tt>SelectionPolicy</tt> and one <tt>URLPolicy</tt>.
  * </p>
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.ModuleClassLoader
- * @see org.apache.osgi.moduleloader.SearchPolicy
- * @see org.apache.osgi.moduleloader.URLPolicy
- * @see org.apache.osgi.moduleloader.DefaultURLPolicy
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.ModuleClassLoader
+ * @see org.apache.felix.moduleloader.SearchPolicy
+ * @see org.apache.felix.moduleloader.URLPolicy
+ * @see org.apache.felix.moduleloader.DefaultURLPolicy
 **/
 public class ModuleManager
 {
@@ -110,7 +110,7 @@
      * search policy and the default <tt>URL</tt> policy.
      * </p>
      * @param searchPolicy the search policy that the instance should use.
-     * @see org.apache.osgi.moduleloader.SearchPolicy
+     * @see org.apache.felix.moduleloader.SearchPolicy
     **/
     public ModuleManager(SearchPolicy searchPolicy)
     {
@@ -124,8 +124,8 @@
      * </p>
      * @param searchPolicy the search policy that the instance should use.
      * @param urlPolicy the <tt>URL</tt> policy that the instance should use.
-     * @see org.apache.osgi.moduleloader.SearchPolicy
-     * @see org.apache.osgi.moduleloader.URLPolicy
+     * @see org.apache.felix.moduleloader.SearchPolicy
+     * @see org.apache.felix.moduleloader.URLPolicy
     **/
     public ModuleManager(SearchPolicy searchPolicy, URLPolicy urlPolicy)
     {
@@ -148,7 +148,7 @@
      * Returns the <tt>URL</tt> policy used by this instance.
      * </p>
      * @return the <tt>URL</tt> policy used by this instance.
-     * @see org.apache.osgi.moduleloader.URLPolicy
+     * @see org.apache.felix.moduleloader.URLPolicy
     **/
     public URLPolicy getURLPolicy()
     {
@@ -160,7 +160,7 @@
      * Returns the search policy used by this instance.
      * </p>
      * @return the search policy used by this instance.
-     * @see org.apache.osgi.moduleloader.SearchPolicy
+     * @see org.apache.felix.moduleloader.SearchPolicy
     **/
     public SearchPolicy getSearchPolicy()
     {
@@ -176,7 +176,7 @@
      * </p>
      * @return an array of all modules being managed by the <tt>ModuleManager</tt>
      *         instance.
-     * @see org.apache.osgi.moduleloader.Module
+     * @see org.apache.felix.moduleloader.Module
     **/
     public synchronized Module[] getModules()
     {
@@ -190,7 +190,7 @@
      * </p>
      * @param id the identifier for the module to be retrieved.
      * @return the module associated with the identifier or <tt>null</tt>.
-     * @see org.apache.osgi.moduleloader.Module
+     * @see org.apache.felix.moduleloader.Module
     **/
     public synchronized Module getModule(String id)
     {
@@ -214,9 +214,9 @@
      * @return the newly created module.
      * @throws java.lang.IllegalArgumentException if the module identifier
      *         is not unique.
-     * @see org.apache.osgi.moduleloader.Module
-     * @see org.apache.osgi.moduleloader.ResourceSource
-     * @see org.apache.osgi.moduleloader.LibrarySource
+     * @see org.apache.felix.moduleloader.Module
+     * @see org.apache.felix.moduleloader.ResourceSource
+     * @see org.apache.felix.moduleloader.LibrarySource
     **/
     public Module addModule(String id, Object[][] attributes,
         ResourceSource[] resSources, LibrarySource[] libSources)
@@ -281,9 +281,9 @@
      *        with the module.
      * @param libSources an array of <tt>LibrarySource</tt>s to associate
      *        with the module.
-     * @see org.apache.osgi.moduleloader.Module
-     * @see org.apache.osgi.moduleloader.ResourceSource
-     * @see org.apache.osgi.moduleloader.LibrarySource
+     * @see org.apache.felix.moduleloader.Module
+     * @see org.apache.felix.moduleloader.ResourceSource
+     * @see org.apache.felix.moduleloader.LibrarySource
     **/
     public void resetModule(
         Module module, Object[][] attributes,
diff --git a/src/org/apache/osgi/moduleloader/ModuleURLConnection.java b/src/org/apache/felix/moduleloader/ModuleURLConnection.java
similarity index 98%
rename from src/org/apache/osgi/moduleloader/ModuleURLConnection.java
rename to src/org/apache/felix/moduleloader/ModuleURLConnection.java
index 92cacf2..9015bbf 100644
--- a/src/org/apache/osgi/moduleloader/ModuleURLConnection.java
+++ b/src/org/apache/felix/moduleloader/ModuleURLConnection.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.io.*;
 import java.net.URL;
diff --git a/src/org/apache/osgi/moduleloader/ModuleURLStreamHandler.java b/src/org/apache/felix/moduleloader/ModuleURLStreamHandler.java
similarity index 96%
rename from src/org/apache/osgi/moduleloader/ModuleURLStreamHandler.java
rename to src/org/apache/felix/moduleloader/ModuleURLStreamHandler.java
index 3cba43a..24595ec 100644
--- a/src/org/apache/osgi/moduleloader/ModuleURLStreamHandler.java
+++ b/src/org/apache/felix/moduleloader/ModuleURLStreamHandler.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.io.IOException;
 import java.net.*;
diff --git a/src/org/apache/osgi/moduleloader/ResourceNotFoundException.java b/src/org/apache/felix/moduleloader/ResourceNotFoundException.java
similarity index 94%
rename from src/org/apache/osgi/moduleloader/ResourceNotFoundException.java
rename to src/org/apache/felix/moduleloader/ResourceNotFoundException.java
index c10b451..23be347 100644
--- a/src/org/apache/osgi/moduleloader/ResourceNotFoundException.java
+++ b/src/org/apache/felix/moduleloader/ResourceNotFoundException.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 public class ResourceNotFoundException extends Exception
 {
diff --git a/src/org/apache/osgi/moduleloader/ResourceSource.java b/src/org/apache/felix/moduleloader/ResourceSource.java
similarity index 95%
rename from src/org/apache/osgi/moduleloader/ResourceSource.java
rename to src/org/apache/felix/moduleloader/ResourceSource.java
index a710a60..78d1ee1 100644
--- a/src/org/apache/osgi/moduleloader/ResourceSource.java
+++ b/src/org/apache/felix/moduleloader/ResourceSource.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 /**
  * <p>
@@ -33,8 +33,8 @@
  * should be implemented such that they can be opened, closed, and then
  * re-opened.
  * </p>
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.ModuleClassLoader
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.ModuleClassLoader
 **/
 public interface ResourceSource
 {
diff --git a/src/org/apache/osgi/moduleloader/SearchPolicy.java b/src/org/apache/felix/moduleloader/SearchPolicy.java
similarity index 98%
rename from src/org/apache/osgi/moduleloader/SearchPolicy.java
rename to src/org/apache/felix/moduleloader/SearchPolicy.java
index fac3d23..dfa51f2 100644
--- a/src/org/apache/osgi/moduleloader/SearchPolicy.java
+++ b/src/org/apache/felix/moduleloader/SearchPolicy.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.net.URL;
 
@@ -225,7 +225,7 @@
      * @param module the target module that is loading the resource.
      * @param name the name of the resource being loaded.
      * @return a <tt>URL</tt> to the resource if found, <tt>null</tt> otherwise.
-     * @throws org.apache.osgi.moduleloader.ResourceNotFoundException if the
+     * @throws org.apache.felix.moduleloader.ResourceNotFoundException if the
      *         resource could not be found and the entire search operation
      *         should fail.
     **/
diff --git a/src/org/apache/osgi/moduleloader/URLPolicy.java b/src/org/apache/felix/moduleloader/URLPolicy.java
similarity index 95%
rename from src/org/apache/osgi/moduleloader/URLPolicy.java
rename to src/org/apache/felix/moduleloader/URLPolicy.java
index 0372c96..452aebc 100644
--- a/src/org/apache/osgi/moduleloader/URLPolicy.java
+++ b/src/org/apache/felix/moduleloader/URLPolicy.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 import java.net.URL;
 
@@ -38,8 +38,8 @@
  * called <a href="DefaultURLPolicy.html"><tt>DefaultURLPolicy</tt></a>, but
  * it only supports resource loading, not security.
  * </p>
- * @see org.apache.osgi.moduleloader.ModuleManager
- * @see org.apache.osgi.moduleloader.DefaultURLPolicy
+ * @see org.apache.felix.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.DefaultURLPolicy
 **/
 public interface URLPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/Util.java b/src/org/apache/felix/moduleloader/Util.java
similarity index 98%
rename from src/org/apache/osgi/moduleloader/Util.java
rename to src/org/apache/felix/moduleloader/Util.java
index 28a12da..34b16d7 100755
--- a/src/org/apache/osgi/moduleloader/Util.java
+++ b/src/org/apache/felix/moduleloader/Util.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader;
+package org.apache.felix.moduleloader;
 
 public class Util
 {
diff --git a/src/org/apache/osgi/moduleloader/search/CompatibilityPolicy.java b/src/org/apache/felix/moduleloader/search/CompatibilityPolicy.java
similarity index 95%
rename from src/org/apache/osgi/moduleloader/search/CompatibilityPolicy.java
rename to src/org/apache/felix/moduleloader/search/CompatibilityPolicy.java
index 2ebb074..86b7efd 100644
--- a/src/org/apache/osgi/moduleloader/search/CompatibilityPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/CompatibilityPolicy.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
 /**
  * <p>
@@ -25,7 +25,7 @@
  * is to allow the <tt>ImportSearchPolicy</tt> to determine if one
  * import/export identifier and version is compatible with another.
  * </p>
- * @see org.apache.osgi.moduleloader.search.ImportSearchPolicy
+ * @see org.apache.felix.moduleloader.search.ImportSearchPolicy
 **/
 public interface CompatibilityPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/search/ExhaustiveSearchPolicy.java b/src/org/apache/felix/moduleloader/search/ExhaustiveSearchPolicy.java
similarity index 94%
rename from src/org/apache/osgi/moduleloader/search/ExhaustiveSearchPolicy.java
rename to src/org/apache/felix/moduleloader/search/ExhaustiveSearchPolicy.java
index cc7cf4d..d98d8e6 100644
--- a/src/org/apache/osgi/moduleloader/search/ExhaustiveSearchPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/ExhaustiveSearchPolicy.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
 import java.net.URL;
 
-import org.apache.osgi.moduleloader.*;
+import org.apache.felix.moduleloader.*;
 
 /**
  * <p>
@@ -35,10 +35,10 @@
  * the module manager at run time, there is no attempt to clean up its
  * loaded classes.
  * </p>
- * @see org.apache.osgi.moduleloader.SearchPolicy
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.ModuleClassLoader
- * @see org.apache.osgi.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.SearchPolicy
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.ModuleClassLoader
+ * @see org.apache.felix.moduleloader.ModuleManager
 **/
 public class ExhaustiveSearchPolicy implements SearchPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/search/ImportSearchPolicy.java b/src/org/apache/felix/moduleloader/search/ImportSearchPolicy.java
similarity index 99%
rename from src/org/apache/osgi/moduleloader/search/ImportSearchPolicy.java
rename to src/org/apache/felix/moduleloader/search/ImportSearchPolicy.java
index 1f776f9..3fefc24 100644
--- a/src/org/apache/osgi/moduleloader/search/ImportSearchPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/ImportSearchPolicy.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
 import java.net.URL;
 import java.util.*;
 
-import org.apache.osgi.moduleloader.*;
+import org.apache.felix.moduleloader.*;
 
 /**
  * <p>
@@ -205,10 +205,10 @@
  * import, where the import is also propagated via the module's export. The module
  * has multiple resource sources, but no library sources.
  * </p>
- * @see org.apache.osgi.moduleloader.SearchPolicy
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.ModuleClassLoader
- * @see org.apache.osgi.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.SearchPolicy
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.ModuleClassLoader
+ * @see org.apache.felix.moduleloader.ModuleManager
 **/
 public class ImportSearchPolicy implements SearchPolicy, ModuleListener
 {
@@ -513,7 +513,7 @@
      * modules are marked as validated, if they are not already validated.
      * If an error occurs, the valid state of all modules remains unchanged.
      * @param module the module to validate.
-     * @throws org.apache.osgi.moduleloader.search.ValidationException if
+     * @throws org.apache.felix.moduleloader.search.ValidationException if
      *         the module or any dependent modules could not be validated.
     **/
     public void validate(Module module)
diff --git a/src/org/apache/osgi/moduleloader/search/ResolveException.java b/src/org/apache/felix/moduleloader/search/ResolveException.java
similarity index 86%
rename from src/org/apache/osgi/moduleloader/search/ResolveException.java
rename to src/org/apache/felix/moduleloader/search/ResolveException.java
index efe6949..abc342c 100755
--- a/src/org/apache/osgi/moduleloader/search/ResolveException.java
+++ b/src/org/apache/felix/moduleloader/search/ResolveException.java
@@ -14,10 +14,10 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
-import org.apache.osgi.framework.searchpolicy.R4Package;
-import org.apache.osgi.moduleloader.Module;
+import org.apache.felix.framework.searchpolicy.R4Package;
+import org.apache.felix.moduleloader.Module;
 
 /**
  * <p>
@@ -26,7 +26,7 @@
  * identifier and version number. If the error was a result of a propagation
  * conflict, then the propagation error flag is set.
  * </p>
- * @see org.apache.osgi.moduleloader.search.ImportSearchPolicy#validate(org.apache.osgi.moduleloader.Module)
+ * @see org.apache.felix.moduleloader.search.ImportSearchPolicy#validate(org.apache.felix.moduleloader.Module)
 **/
 public class ResolveException extends Exception
 {
diff --git a/src/org/apache/osgi/moduleloader/search/ResolveListener.java b/src/org/apache/felix/moduleloader/search/ResolveListener.java
similarity index 89%
rename from src/org/apache/osgi/moduleloader/search/ResolveListener.java
rename to src/org/apache/felix/moduleloader/search/ResolveListener.java
index ebd8acd..a502021 100755
--- a/src/org/apache/osgi/moduleloader/search/ResolveListener.java
+++ b/src/org/apache/felix/moduleloader/search/ResolveListener.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
 import java.util.EventListener;
 
-import org.apache.osgi.moduleloader.ModuleEvent;
+import org.apache.felix.moduleloader.ModuleEvent;
 
 /**
  * <p>
@@ -26,7 +26,7 @@
  * events that are generated by the <tt>R4SearchPolicy</tt>. Events
  * are fired when a module is resolved and when it is unresolved.
  * </p>
- * @see org.apache.osgi.framework.searchpolicy.R4SearchPolicy
+ * @see org.apache.felix.framework.searchpolicy.R4SearchPolicy
 **/
 public interface ResolveListener extends EventListener
 {
diff --git a/src/org/apache/osgi/moduleloader/search/SelectionPolicy.java b/src/org/apache/felix/moduleloader/search/SelectionPolicy.java
similarity index 91%
rename from src/org/apache/osgi/moduleloader/search/SelectionPolicy.java
rename to src/org/apache/felix/moduleloader/search/SelectionPolicy.java
index 6ec8c44..2436bce 100644
--- a/src/org/apache/osgi/moduleloader/search/SelectionPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/SelectionPolicy.java
@@ -14,9 +14,9 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
-import org.apache.osgi.moduleloader.Module;
+import org.apache.felix.moduleloader.Module;
 
 /**
  * <p>
@@ -26,7 +26,7 @@
  * for a given module. A concrete implementation of this interface is
  * required to create an instance of <tt>ImportSearchPolicy</tt>.
  * </p>
- * @see org.apache.osgi.moduleloader.search.ImportSearchPolicy
+ * @see org.apache.felix.moduleloader.search.ImportSearchPolicy
 **/
 public interface SelectionPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/search/SelfContainedSearchPolicy.java b/src/org/apache/felix/moduleloader/search/SelfContainedSearchPolicy.java
similarity index 92%
rename from src/org/apache/osgi/moduleloader/search/SelfContainedSearchPolicy.java
rename to src/org/apache/felix/moduleloader/search/SelfContainedSearchPolicy.java
index e03b061..e2608c6 100644
--- a/src/org/apache/osgi/moduleloader/search/SelfContainedSearchPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/SelfContainedSearchPolicy.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
 import java.net.URL;
 
-import org.apache.osgi.moduleloader.*;
+import org.apache.felix.moduleloader.*;
 
 /**
  * <p>
@@ -28,10 +28,10 @@
  * particular module's resource sources are search. No classes or
  * resources are shared among modules.
  * </p>
- * @see org.apache.osgi.moduleloader.SearchPolicy
- * @see org.apache.osgi.moduleloader.Module
- * @see org.apache.osgi.moduleloader.ModuleClassLoader
- * @see org.apache.osgi.moduleloader.ModuleManager
+ * @see org.apache.felix.moduleloader.SearchPolicy
+ * @see org.apache.felix.moduleloader.Module
+ * @see org.apache.felix.moduleloader.ModuleClassLoader
+ * @see org.apache.felix.moduleloader.ModuleManager
 **/
 public class SelfContainedSearchPolicy implements SearchPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/search/ValidationException.java b/src/org/apache/felix/moduleloader/search/ValidationException.java
similarity index 92%
rename from src/org/apache/osgi/moduleloader/search/ValidationException.java
rename to src/org/apache/felix/moduleloader/search/ValidationException.java
index 15a8c5f..b996454 100644
--- a/src/org/apache/osgi/moduleloader/search/ValidationException.java
+++ b/src/org/apache/felix/moduleloader/search/ValidationException.java
@@ -14,9 +14,9 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
-import org.apache.osgi.moduleloader.Module;
+import org.apache.felix.moduleloader.Module;
 
 /**
  * <p>
@@ -25,7 +25,7 @@
  * identifier and version number. If the error was a result of a propagation
  * conflict, then the propagation error flag is set.
  * </p>
- * @see org.apache.osgi.moduleloader.search.ImportSearchPolicy#validate(org.apache.osgi.moduleloader.Module)
+ * @see org.apache.felix.moduleloader.search.ImportSearchPolicy#validate(org.apache.felix.moduleloader.Module)
 **/
 public class ValidationException extends Exception
 {
diff --git a/src/org/apache/osgi/moduleloader/search/ValidationListener.java b/src/org/apache/felix/moduleloader/search/ValidationListener.java
similarity index 89%
rename from src/org/apache/osgi/moduleloader/search/ValidationListener.java
rename to src/org/apache/felix/moduleloader/search/ValidationListener.java
index 656b46e..9491531 100644
--- a/src/org/apache/osgi/moduleloader/search/ValidationListener.java
+++ b/src/org/apache/felix/moduleloader/search/ValidationListener.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search;
+package org.apache.felix.moduleloader.search;
 
 import java.util.EventListener;
 
-import org.apache.osgi.moduleloader.ModuleEvent;
+import org.apache.felix.moduleloader.ModuleEvent;
 
 /**
  * <p>
@@ -26,7 +26,7 @@
  * events that are generated by the <tt>ImportSearchPolicy</tt>. Events
  * are fired when a module is validated and when it is invalidated.
  * </p>
- * @see org.apache.osgi.moduleloader.search.ImportSearchPolicy
+ * @see org.apache.felix.moduleloader.search.ImportSearchPolicy
 **/
 public interface ValidationListener extends EventListener
 {
diff --git a/src/org/apache/osgi/moduleloader/search/compatibility/ExactCompatibilityPolicy.java b/src/org/apache/felix/moduleloader/search/compatibility/ExactCompatibilityPolicy.java
similarity index 92%
rename from src/org/apache/osgi/moduleloader/search/compatibility/ExactCompatibilityPolicy.java
rename to src/org/apache/felix/moduleloader/search/compatibility/ExactCompatibilityPolicy.java
index 61fca1c..f971683 100644
--- a/src/org/apache/osgi/moduleloader/search/compatibility/ExactCompatibilityPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/compatibility/ExactCompatibilityPolicy.java
@@ -14,9 +14,9 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search.compatibility;
+package org.apache.felix.moduleloader.search.compatibility;
 
-import org.apache.osgi.moduleloader.search.CompatibilityPolicy;
+import org.apache.felix.moduleloader.search.CompatibilityPolicy;
 
 /**
  * This class implements a simple version numbering compatibility policy for the
@@ -25,8 +25,8 @@
  * "<tt>leftId.equals(rightId) && leftVersion.equals(rightVersion)</tt>". Any
  * calls to the <tt>compare()</tt> method result in an exception since this
  * policy has no basis for comparing identifiers and versions.
- * @see org.apache.osgi.moduleloader.search.CompatibilityPolicy
- * @see org.apache.osgi.moduleloader.search.ImportSearchPolicy
+ * @see org.apache.felix.moduleloader.search.CompatibilityPolicy
+ * @see org.apache.felix.moduleloader.search.ImportSearchPolicy
 **/
 public class ExactCompatibilityPolicy implements CompatibilityPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/search/selection/InteractiveSelectionPolicy.java b/src/org/apache/felix/moduleloader/search/selection/InteractiveSelectionPolicy.java
similarity index 88%
rename from src/org/apache/osgi/moduleloader/search/selection/InteractiveSelectionPolicy.java
rename to src/org/apache/felix/moduleloader/search/selection/InteractiveSelectionPolicy.java
index 06c234d..f1ddee7 100644
--- a/src/org/apache/osgi/moduleloader/search/selection/InteractiveSelectionPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/selection/InteractiveSelectionPolicy.java
@@ -14,14 +14,14 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search.selection;
+package org.apache.felix.moduleloader.search.selection;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 
-import org.apache.osgi.moduleloader.Module;
-import org.apache.osgi.moduleloader.search.CompatibilityPolicy;
-import org.apache.osgi.moduleloader.search.SelectionPolicy;
+import org.apache.felix.moduleloader.Module;
+import org.apache.felix.moduleloader.search.CompatibilityPolicy;
+import org.apache.felix.moduleloader.search.SelectionPolicy;
 
 /**
  * This class implements an interactive selection policy for the
@@ -30,8 +30,8 @@
  * input to allow the user to select a specific module from the
  * candidates. This selection policy is generally only useful for
  * debugging purposes.
- * @see org.apache.osgi.moduleloader.search.SelectionPolicy
- * @see org.apache.osgi.moduleloader.search.ImportSearchPolicy
+ * @see org.apache.felix.moduleloader.search.SelectionPolicy
+ * @see org.apache.felix.moduleloader.search.ImportSearchPolicy
 **/
 public class InteractiveSelectionPolicy implements SelectionPolicy
 {
diff --git a/src/org/apache/osgi/moduleloader/search/selection/SimpleSelectionPolicy.java b/src/org/apache/felix/moduleloader/search/selection/SimpleSelectionPolicy.java
similarity index 97%
rename from src/org/apache/osgi/moduleloader/search/selection/SimpleSelectionPolicy.java
rename to src/org/apache/felix/moduleloader/search/selection/SimpleSelectionPolicy.java
index 9b2daa7..a2f9648 100644
--- a/src/org/apache/osgi/moduleloader/search/selection/SimpleSelectionPolicy.java
+++ b/src/org/apache/felix/moduleloader/search/selection/SimpleSelectionPolicy.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.moduleloader.search.selection;
+package org.apache.felix.moduleloader.search.selection;
 
 import java.util.*;
 
-import org.apache.osgi.moduleloader.*;
-import org.apache.osgi.moduleloader.search.*;
+import org.apache.felix.moduleloader.*;
+import org.apache.felix.moduleloader.search.*;
 
 /**
  * This class implements a reasonably simple selection policy for the
diff --git a/src/org/apache/osgi/service/shell/CdCommand.java b/src/org/apache/felix/shell/CdCommand.java
similarity index 71%
rename from src/org/apache/osgi/service/shell/CdCommand.java
rename to src/org/apache/felix/shell/CdCommand.java
index 1713175..64569eb 100644
--- a/src/org/apache/osgi/service/shell/CdCommand.java
+++ b/src/org/apache/felix/shell/CdCommand.java
@@ -14,18 +14,18 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.shell;
+package org.apache.felix.shell;
 
 /**
  * This interface defines the <tt>cd</tt> command service interface for the
- * Felix shell service. The <tt>cd</tt> command does not really change the
- * directory of the shell, rather it maintains a base URL for
+ * Felix impl service. The <tt>cd</tt> command does not really change the
+ * directory of the impl, rather it maintains a base URL for
  * simplifying URL entry.
  * <p>
  * For example, if the base URL is <tt>http://www.foo.com/<tt> and you
  * try to install a bundle <tt>foo.jar</tt>, the actual URL will be
  * expanded to <tt>http://www.foo.com/foo.jar</tt>. Any bundles wishing
- * to retrieve or set the current directory of the shell can use this
+ * to retrieve or set the current directory of the impl can use this
  * service interface.
 **/
 public interface CdCommand extends Command
@@ -33,16 +33,16 @@
     /**
      * Property used to configure the base URL.
     **/
-    public static final String BASE_URL_PROPERTY = "felix.shell.baseurl";
+    public static final String BASE_URL_PROPERTY = "felix.impl.baseurl";
 
     /**
-     * Returns the current <i>directory</i> of the shell service.
-     * @return the current shell directory.
+     * Returns the current <i>directory</i> of the impl service.
+     * @return the current impl directory.
     **/
     public String getBaseURL();
 
     /**
-     * Sets the current <i>directory</i> of the shell service.
+     * Sets the current <i>directory</i> of the impl service.
      * @param s the new value for the base URL.
     **/
     public void setBaseURL(String s);
diff --git a/src/org/apache/osgi/service/shell/Command.java b/src/org/apache/felix/shell/Command.java
similarity index 90%
rename from src/org/apache/osgi/service/shell/Command.java
rename to src/org/apache/felix/shell/Command.java
index 65c5852..f4bb0cc 100644
--- a/src/org/apache/osgi/service/shell/Command.java
+++ b/src/org/apache/felix/shell/Command.java
@@ -14,16 +14,16 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.shell;
+package org.apache.felix.shell;
 
 import java.io.PrintStream;
 
 /**
- * This interface is used to define commands for the Felix shell
+ * This interface is used to define commands for the Felix impl
  * service. Any bundle wishing to create commands for the
- * shell service simply needs to create a service object that
+ * impl service simply needs to create a service object that
  * implements this interface and then register it with the OSGi
- * framework. The shell service automatically includes any
+ * framework. The impl service automatically includes any
  * registered command services in its list of available commands.
 **/
 public interface Command
diff --git a/src/org/apache/osgi/service/shell/ShellService.java b/src/org/apache/felix/shell/ShellService.java
similarity index 89%
rename from src/org/apache/osgi/service/shell/ShellService.java
rename to src/org/apache/felix/shell/ShellService.java
index 4f1178d..82d8b7e 100644
--- a/src/org/apache/osgi/service/shell/ShellService.java
+++ b/src/org/apache/felix/shell/ShellService.java
@@ -14,21 +14,21 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.service.shell;
+package org.apache.felix.shell;
 
 import java.io.PrintStream;
 
 import org.osgi.framework.ServiceReference;
 
 /**
- * This interface defines the Felix shell service. The shell service
- * is an extensible, user interface neutral shell for controlling and
- * interacting with the framework. In general, the shell service assumes that
+ * This interface defines the Felix impl service. The impl service
+ * is an extensible, user interface neutral impl for controlling and
+ * interacting with the framework. In general, the impl service assumes that
  * it is operating in a command line fashion, i.e., it receives a
  * complete command line, parses it, and executes the corresponding
  * command, but graphical interfaces are also possible.
  * <p>
- * All commands in the shell service are actually implemented as OSGi
+ * All commands in the impl service are actually implemented as OSGi
  * services; these services implement the <tt>Command</tt> service
  * interface. Any bundle can implement custom commands by creating
  * command services and registering them with the OSGi framework.
@@ -36,7 +36,7 @@
 public interface ShellService
 {
     /**
-     * Returns an array of command names available in the shell service.
+     * Returns an array of command names available in the impl service.
      * @return an array of available command names or an empty array.
     **/
     public String[] getCommands();
diff --git a/src/org/apache/osgi/bundle/shell/Activator.java b/src/org/apache/felix/shell/impl/Activator.java
similarity index 86%
rename from src/org/apache/osgi/bundle/shell/Activator.java
rename to src/org/apache/felix/shell/impl/Activator.java
index 348d586..3e9a038 100644
--- a/src/org/apache/osgi/bundle/shell/Activator.java
+++ b/src/org/apache/felix/shell/impl/Activator.java
@@ -14,13 +14,13 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.security.*;
 import java.util.*;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class Activator implements BundleActivator
@@ -32,14 +32,14 @@
     {
         m_context = context;
 
-        // Register shell service implementation.
+        // Register impl service implementation.
         String[] classes = {
-            org.apache.osgi.service.shell.ShellService.class.getName(),
+            org.apache.felix.shell.ShellService.class.getName(),
             org.ungoverned.osgi.service.shell.ShellService.class.getName()
         };
         context.registerService(classes, m_shell = new ShellServiceImpl(), null);
 
-        // Listen for registering/unregistering of shell command
+        // Listen for registering/unregistering of impl command
         // services so that we can automatically add/remove them
         // from our list of available commands.
         ServiceListener sl = new ServiceListener() {
@@ -63,7 +63,7 @@
         {
             m_context.addServiceListener(sl,
                 "(|(objectClass="
-                + org.apache.osgi.service.shell.Command.class.getName()
+                + org.apache.felix.shell.Command.class.getName()
                 + ")(objectClass="
                 + org.ungoverned.osgi.service.shell.Command.class.getName()
                 + "))");
@@ -80,84 +80,84 @@
 
         // Register "exports" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new BundleLevelCommandImpl(m_context), null);
 
         // Register "cd" command service.
         classes = new String[2];
-        classes[0] = org.apache.osgi.service.shell.Command.class.getName();
-        classes[1] = org.apache.osgi.service.shell.CdCommand.class.getName();
+        classes[0] = org.apache.felix.shell.Command.class.getName();
+        classes[1] = org.apache.felix.shell.CdCommand.class.getName();
         context.registerService(
             classes, new CdCommandImpl(m_context), null);
 
         // Register "exports" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new PackagesCommandImpl(m_context), null);
 
         // Register "headers" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new HeadersCommandImpl(m_context), null);
 
         // Register "help" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new HelpCommandImpl(m_context), null);
 
         // Register "install" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new InstallCommandImpl(m_context), null);
 
         // Register "ps" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new PsCommandImpl(m_context), null);
 
         // Register "refresh" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new RefreshCommandImpl(m_context), null);
 
         // Register "services" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new ServicesCommandImpl(m_context), null);
 
         // Register "startlevel" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new StartLevelCommandImpl(m_context), null);
 
         // Register "shutdown" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new ShutdownCommandImpl(m_context), null);
 
         // Register "start" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new StartCommandImpl(m_context), null);
 
         // Register "stop" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new StopCommandImpl(m_context), null);
 
         // Register "uninstall" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new UninstallCommandImpl(m_context), null);
 
         // Register "update" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new UpdateCommandImpl(m_context), null);
 
         // Register "version" command service.
         context.registerService(
-            org.apache.osgi.service.shell.Command.class.getName(),
+            org.apache.felix.shell.Command.class.getName(),
             new VersionCommandImpl(m_context), null);
     }
 
@@ -173,7 +173,7 @@
             try
             {
                 ServiceReference[] refs = m_context.getServiceReferences(
-                    org.apache.osgi.service.shell.Command.class.getName(), null);
+                    org.apache.felix.shell.Command.class.getName(), null);
                 if (refs != null)
                 {
                     for (int i = 0; i < refs.length; i++)
@@ -190,7 +190,7 @@
     }
 
     private class ShellServiceImpl implements
-        org.apache.osgi.service.shell.ShellService,
+        org.apache.felix.shell.ShellService,
         org.ungoverned.osgi.service.shell.ShellService
     {
         private HashMap m_commandRefMap = new HashMap();
diff --git a/src/org/apache/osgi/bundle/shell/BundleLevelCommandImpl.java b/src/org/apache/felix/shell/impl/BundleLevelCommandImpl.java
similarity index 97%
rename from src/org/apache/osgi/bundle/shell/BundleLevelCommandImpl.java
rename to src/org/apache/felix/shell/impl/BundleLevelCommandImpl.java
index 06fc95c..a1ad2b4 100644
--- a/src/org/apache/osgi/bundle/shell/BundleLevelCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/BundleLevelCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 import org.osgi.service.startlevel.StartLevel;
 
diff --git a/src/org/apache/osgi/bundle/shell/CdCommandImpl.java b/src/org/apache/felix/shell/impl/CdCommandImpl.java
similarity index 95%
rename from src/org/apache/osgi/bundle/shell/CdCommandImpl.java
rename to src/org/apache/felix/shell/impl/CdCommandImpl.java
index c876550..ed05f4d 100644
--- a/src/org/apache/osgi/bundle/shell/CdCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/CdCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.CdCommand;
+import org.apache.felix.shell.CdCommand;
 import org.osgi.framework.BundleContext;
 
 public class CdCommandImpl implements CdCommand
diff --git a/src/org/apache/osgi/bundle/shell/HeadersCommandImpl.java b/src/org/apache/felix/shell/impl/HeadersCommandImpl.java
similarity index 96%
rename from src/org/apache/osgi/bundle/shell/HeadersCommandImpl.java
rename to src/org/apache/felix/shell/impl/HeadersCommandImpl.java
index bb341d8..3c4ee0b 100644
--- a/src/org/apache/osgi/bundle/shell/HeadersCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/HeadersCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.*;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
diff --git a/src/org/apache/osgi/bundle/shell/HelpCommandImpl.java b/src/org/apache/felix/shell/impl/HelpCommandImpl.java
similarity index 90%
rename from src/org/apache/osgi/bundle/shell/HelpCommandImpl.java
rename to src/org/apache/felix/shell/impl/HelpCommandImpl.java
index b2d969f..54b8601 100644
--- a/src/org/apache/osgi/bundle/shell/HelpCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/HelpCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 
-import org.apache.osgi.service.shell.Command;
-import org.apache.osgi.service.shell.ShellService;
+import org.apache.felix.shell.Command;
+import org.apache.felix.shell.ShellService;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
@@ -44,15 +44,15 @@
 
     public String getShortDescription()
     {
-        return "display shell commands.";
+        return "display impl commands.";
     }
 
     public void execute(String s, PrintStream out, PrintStream err)
     {
         try {
-            // Get a reference to the shell service.
+            // Get a reference to the impl service.
             ServiceReference ref = m_context.getServiceReference(
-                org.apache.osgi.service.shell.ShellService.class.getName());
+                org.apache.felix.shell.ShellService.class.getName());
 
             if (ref != null)
             {
diff --git a/src/org/apache/osgi/bundle/shell/InstallCommandImpl.java b/src/org/apache/felix/shell/impl/InstallCommandImpl.java
similarity index 94%
rename from src/org/apache/osgi/bundle/shell/InstallCommandImpl.java
rename to src/org/apache/felix/shell/impl/InstallCommandImpl.java
index 4603cc7..82e718e 100644
--- a/src/org/apache/osgi/bundle/shell/InstallCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/InstallCommandImpl.java
@@ -14,15 +14,15 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.CdCommand;
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.CdCommand;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class InstallCommandImpl implements Command
@@ -127,7 +127,7 @@
             {
                 // Get a reference to the "cd" command service.
                 ServiceReference ref = m_context.getServiceReference(
-                    org.apache.osgi.service.shell.CdCommand.class.getName());
+                    org.apache.felix.shell.CdCommand.class.getName());
 
                 if (ref != null)
                 {
diff --git a/src/org/apache/osgi/bundle/shell/PackagesCommandImpl.java b/src/org/apache/felix/shell/impl/PackagesCommandImpl.java
similarity index 97%
rename from src/org/apache/osgi/bundle/shell/PackagesCommandImpl.java
rename to src/org/apache/felix/shell/impl/PackagesCommandImpl.java
index 2722cdd..b88ec41 100644
--- a/src/org/apache/osgi/bundle/shell/PackagesCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/PackagesCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 import org.osgi.service.packageadmin.ExportedPackage;
 import org.osgi.service.packageadmin.PackageAdmin;
diff --git a/src/org/apache/osgi/bundle/shell/PsCommandImpl.java b/src/org/apache/felix/shell/impl/PsCommandImpl.java
similarity index 98%
rename from src/org/apache/osgi/bundle/shell/PsCommandImpl.java
rename to src/org/apache/felix/shell/impl/PsCommandImpl.java
index 5099815..303f831 100644
--- a/src/org/apache/osgi/bundle/shell/PsCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/PsCommandImpl.java
@@ -14,13 +14,13 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.Dictionary;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 import org.osgi.service.startlevel.StartLevel;
 
diff --git a/src/org/apache/osgi/bundle/shell/RefreshCommandImpl.java b/src/org/apache/felix/shell/impl/RefreshCommandImpl.java
similarity index 95%
rename from src/org/apache/osgi/bundle/shell/RefreshCommandImpl.java
rename to src/org/apache/felix/shell/impl/RefreshCommandImpl.java
index 25d063b..4cff498 100644
--- a/src/org/apache/osgi/bundle/shell/RefreshCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/RefreshCommandImpl.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.packageadmin.PackageAdmin;
diff --git a/src/org/apache/osgi/bundle/shell/ServicesCommandImpl.java b/src/org/apache/felix/shell/impl/ServicesCommandImpl.java
similarity index 96%
rename from src/org/apache/osgi/bundle/shell/ServicesCommandImpl.java
rename to src/org/apache/felix/shell/impl/ServicesCommandImpl.java
index af6bb3f..c1bb3a4 100644
--- a/src/org/apache/osgi/bundle/shell/ServicesCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/ServicesCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.*;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class ServicesCommandImpl implements Command
@@ -129,7 +129,7 @@
                                 ocIdx++)
                             {
                                 if (objectClass[ocIdx].equals(
-                                    org.apache.osgi.service.shell.Command.class.getName()))
+                                    org.apache.felix.shell.Command.class.getName()))
                                 {
                                     print = false;
                                 }
@@ -220,7 +220,7 @@
                             ocIdx++)
                         {
                             if (objectClass[ocIdx].equals(
-                                org.apache.osgi.service.shell.Command.class.getName()))
+                                org.apache.felix.shell.Command.class.getName()))
                             {
                                 print = false;
                             }
diff --git a/src/org/apache/osgi/bundle/shell/ShutdownCommandImpl.java b/src/org/apache/felix/shell/impl/ShutdownCommandImpl.java
similarity index 94%
rename from src/org/apache/osgi/bundle/shell/ShutdownCommandImpl.java
rename to src/org/apache/felix/shell/impl/ShutdownCommandImpl.java
index b92e7c5..0555ff4 100644
--- a/src/org/apache/osgi/bundle/shell/ShutdownCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/ShutdownCommandImpl.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
diff --git a/src/org/apache/osgi/bundle/shell/StartCommandImpl.java b/src/org/apache/felix/shell/impl/StartCommandImpl.java
similarity index 96%
rename from src/org/apache/osgi/bundle/shell/StartCommandImpl.java
rename to src/org/apache/felix/shell/impl/StartCommandImpl.java
index a03405d..3efe6b1 100644
--- a/src/org/apache/osgi/bundle/shell/StartCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/StartCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class StartCommandImpl extends InstallCommandImpl implements Command
diff --git a/src/org/apache/osgi/bundle/shell/StartLevelCommandImpl.java b/src/org/apache/felix/shell/impl/StartLevelCommandImpl.java
similarity index 96%
rename from src/org/apache/osgi/bundle/shell/StartLevelCommandImpl.java
rename to src/org/apache/felix/shell/impl/StartLevelCommandImpl.java
index d2c0303..12c440a 100644
--- a/src/org/apache/osgi/bundle/shell/StartLevelCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/StartLevelCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.startlevel.StartLevel;
diff --git a/src/org/apache/osgi/bundle/shell/StopCommandImpl.java b/src/org/apache/felix/shell/impl/StopCommandImpl.java
similarity index 96%
rename from src/org/apache/osgi/bundle/shell/StopCommandImpl.java
rename to src/org/apache/felix/shell/impl/StopCommandImpl.java
index 5ae2713..5ff0f40 100644
--- a/src/org/apache/osgi/bundle/shell/StopCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/StopCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class StopCommandImpl implements Command
diff --git a/src/org/apache/osgi/bundle/shell/UninstallCommandImpl.java b/src/org/apache/felix/shell/impl/UninstallCommandImpl.java
similarity index 96%
rename from src/org/apache/osgi/bundle/shell/UninstallCommandImpl.java
rename to src/org/apache/felix/shell/impl/UninstallCommandImpl.java
index 2182d6b..c0b7b4d 100644
--- a/src/org/apache/osgi/bundle/shell/UninstallCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/UninstallCommandImpl.java
@@ -14,12 +14,12 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class UninstallCommandImpl implements Command
diff --git a/src/org/apache/osgi/bundle/shell/UpdateCommandImpl.java b/src/org/apache/felix/shell/impl/UpdateCommandImpl.java
similarity index 95%
rename from src/org/apache/osgi/bundle/shell/UpdateCommandImpl.java
rename to src/org/apache/felix/shell/impl/UpdateCommandImpl.java
index 45c895c..167397c 100644
--- a/src/org/apache/osgi/bundle/shell/UpdateCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/UpdateCommandImpl.java
@@ -14,15 +14,15 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.StringTokenizer;
 
-import org.apache.osgi.service.shell.CdCommand;
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.CdCommand;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.*;
 
 public class UpdateCommandImpl implements Command
@@ -153,7 +153,7 @@
             {
                 // Get a reference to the "cd" command service.
                 ServiceReference ref = m_context.getServiceReference(
-                    org.apache.osgi.service.shell.CdCommand.class.getName());
+                    org.apache.felix.shell.CdCommand.class.getName());
 
                 if (ref != null)
                 {
diff --git a/src/org/apache/osgi/bundle/shell/Util.java b/src/org/apache/felix/shell/impl/Util.java
similarity index 98%
rename from src/org/apache/osgi/bundle/shell/Util.java
rename to src/org/apache/felix/shell/impl/Util.java
index 5eb0149..77a46a3 100644
--- a/src/org/apache/osgi/bundle/shell/Util.java
+++ b/src/org/apache/felix/shell/impl/Util.java
@@ -14,7 +14,7 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
diff --git a/src/org/apache/osgi/bundle/shell/VersionCommandImpl.java b/src/org/apache/felix/shell/impl/VersionCommandImpl.java
similarity index 93%
rename from src/org/apache/osgi/bundle/shell/VersionCommandImpl.java
rename to src/org/apache/felix/shell/impl/VersionCommandImpl.java
index 39133af..a952bb3 100644
--- a/src/org/apache/osgi/bundle/shell/VersionCommandImpl.java
+++ b/src/org/apache/felix/shell/impl/VersionCommandImpl.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shell;
+package org.apache.felix.shell.impl;
 
 import java.io.PrintStream;
 
-import org.apache.osgi.service.shell.Command;
+import org.apache.felix.shell.Command;
 import org.osgi.framework.BundleContext;
 
 public class VersionCommandImpl implements Command
diff --git a/src/org/apache/osgi/bundle/shell/manifest.mf b/src/org/apache/felix/shell/impl/manifest.mf
similarity index 64%
rename from src/org/apache/osgi/bundle/shell/manifest.mf
rename to src/org/apache/felix/shell/impl/manifest.mf
index 6406fdb..e5f3559 100644
--- a/src/org/apache/osgi/bundle/shell/manifest.mf
+++ b/src/org/apache/felix/shell/impl/manifest.mf
@@ -1,13 +1,13 @@
 Bundle-Name: Shell Service
-Bundle-SymbolicName: org.apache.osgi.bundle.shell
+Bundle-SymbolicName: org.apache.felix.shell.impl
 Bundle-Description: A simple command shell service for Felix.
 Bundle-Version: 1.0.2
-Bundle-Activator: org.apache.osgi.bundle.shell.Activator
+Bundle-Activator: org.apache.felix.shell.impl.Activator
 Bundle-ClassPath: .
 Import-Package: 
  org.osgi.framework,
  org.osgi.service.startlevel,
  org.osgi.service.packageadmin
 Export-Package: 
- org.apache.osgi.service.shell; specification-version="1.0.0",
+ org.apache.felix.shell; specification-version="1.0.0",
  org.ungoverned.osgi.service.shell; specification-version="1.0.0"
diff --git a/src/org/apache/osgi/bundle/shelltui/Activator.java b/src/org/apache/felix/shelltui/Activator.java
similarity index 90%
rename from src/org/apache/osgi/bundle/shelltui/Activator.java
rename to src/org/apache/felix/shelltui/Activator.java
index 39840c6..be713f0 100644
--- a/src/org/apache/osgi/bundle/shelltui/Activator.java
+++ b/src/org/apache/felix/shelltui/Activator.java
@@ -14,11 +14,11 @@
  *   limitations under the License.
  *
  */
-package org.apache.osgi.bundle.shelltui;
+package org.apache.felix.shelltui;
 
 import java.io.*;
 
-import org.apache.osgi.service.shell.ShellService;
+import org.apache.felix.shell.ShellService;
 import org.osgi.framework.*;
 
 public class Activator implements BundleActivator
@@ -32,7 +32,7 @@
     {
         m_context = context;
 
-        // Listen for registering/unregistering shell service.
+        // Listen for registering/unregistering impl service.
         ServiceListener sl = new ServiceListener() {
             public void serviceChanged(ServiceEvent event)
             {
@@ -66,18 +66,18 @@
         try {
             m_context.addServiceListener(sl,
                 "(objectClass="
-                + org.apache.osgi.service.shell.ShellService.class.getName()
+                + org.apache.felix.shell.ShellService.class.getName()
                 + ")");
         } catch (InvalidSyntaxException ex) {
             System.err.println("ShellTuiActivator: Cannot add service listener.");
             System.err.println("ShellTuiActivator: " + ex);
         }
 
-        // Now try to manually initialize the shell service
+        // Now try to manually initialize the impl service
         // since one might already be available.
         initializeService();
 
-        // Start shell thread.
+        // Start impl thread.
         new Thread(
             m_runnable = new ShellTuiRunnable(),
             "Felix Shell TUI").start();
@@ -88,7 +88,7 @@
         if (m_shell != null)
             return;
         m_shellRef = m_context.getServiceReference(
-            org.apache.osgi.service.shell.ShellService.class.getName());
+            org.apache.felix.shell.ShellService.class.getName());
         if (m_shellRef == null)
             return;
         m_shell = (ShellService) m_context.getService(m_shellRef);
@@ -131,7 +131,7 @@
                 {
                     if (m_shell == null)
                     {
-                        System.out.println("No shell service available.");
+                        System.out.println("No impl service available.");
                         continue;
                     }
 
diff --git a/src/org/apache/felix/shelltui/manifest.mf b/src/org/apache/felix/shelltui/manifest.mf
new file mode 100644
index 0000000..9c75221
--- /dev/null
+++ b/src/org/apache/felix/shelltui/manifest.mf
@@ -0,0 +1,7 @@
+Bundle-Name: Shell TUI
+Bundle-SymbolicName: org.apache.felix.shelltui
+Bundle-Description: A simple textual user interface for Felix's the shell service.
+Bundle-Version: 1.0.0
+Bundle-Activator: org.apache.felix.shelltui.Activator
+Bundle-ClassPath: .
+Import-Package: org.osgi.framework, org.apache.felix.shell
diff --git a/src/org/apache/osgi/bundle/bundlerepository/manifest.mf b/src/org/apache/osgi/bundle/bundlerepository/manifest.mf
deleted file mode 100644
index ad49efe..0000000
--- a/src/org/apache/osgi/bundle/bundlerepository/manifest.mf
+++ /dev/null
@@ -1,10 +0,0 @@
-Bundle-Name: Bundle Repository
-Bundle-SymbolicName: org.apache.osgi.bundle.bundlerepository
-Bundle-Description: A simple bundle repository for Felix.
-Bundle-Activator: org.apache.osgi.bundle.bundlerepository.Activator
-Bundle-ClassPath: .,org/apache/osgi/bundle/bundlerepository/kxml.jar
-Bundle-Version: 2.0.0.alpha2
-Import-Package: org.osgi.framework
-DynamicImport-Package: org.apache.osgi.service.shell
-Export-Package: 
- org.apache.osgi.service.bundlerepository; specification-version="1.1.0"
diff --git a/src/org/apache/osgi/bundle/shelltui/manifest.mf b/src/org/apache/osgi/bundle/shelltui/manifest.mf
deleted file mode 100644
index f8f17d4..0000000
--- a/src/org/apache/osgi/bundle/shelltui/manifest.mf
+++ /dev/null
@@ -1,7 +0,0 @@
-Bundle-Name: Shell TUI
-Bundle-SymbolicName: org.apache.osgi.bundle.shelltui
-Bundle-Description: A simple textual user interface for Felix's the shell service.
-Bundle-Version: 1.0.0
-Bundle-Activator: org.apache.osgi.bundle.shelltui.Activator
-Bundle-ClassPath: .
-Import-Package: org.osgi.framework, org.apache.osgi.service.shell
diff --git a/src/org/apache/osgi/framework/manifest.mf b/src/org/apache/osgi/framework/manifest.mf
deleted file mode 100644
index d9208d9..0000000
--- a/src/org/apache/osgi/framework/manifest.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-Main-Class: org.apache.osgi.framework.Main
-Class-Path: osgi.jar moduleloader.jar
diff --git a/src/org/osgi/framework/AdminPermission.java b/src/org/osgi/framework/AdminPermission.java
index 05a0966..6512fe7 100644
--- a/src/org/osgi/framework/AdminPermission.java
+++ b/src/org/osgi/framework/AdminPermission.java
@@ -14,7 +14,7 @@
 import java.io.InputStream;
 import java.security.*;
 import java.util.*;
-import org.apache.osgi.framework.FilterImpl;
+import org.apache.felix.framework.FilterImpl;
 
 /**
  * Indicates the caller's authority to perform specific privileged administrative 
diff --git a/src/org/osgi/framework/FrameworkUtil.java b/src/org/osgi/framework/FrameworkUtil.java
index 6a95479..8af18fa 100644
--- a/src/org/osgi/framework/FrameworkUtil.java
+++ b/src/org/osgi/framework/FrameworkUtil.java
@@ -10,7 +10,7 @@
 
 package org.osgi.framework;
 
-import org.apache.osgi.framework.FilterImpl;
+import org.apache.felix.framework.FilterImpl;
 
 /**
  * Framework Utility class.
diff --git a/src/org/ungoverned/osgi/service/shell/CdCommand.java b/src/org/ungoverned/osgi/service/shell/CdCommand.java
index 227ac3d..98bc27e 100644
--- a/src/org/ungoverned/osgi/service/shell/CdCommand.java
+++ b/src/org/ungoverned/osgi/service/shell/CdCommand.java
@@ -18,14 +18,14 @@
 
 /**
  * This interface defines the <tt>cd</tt> command service interface for the
- * Felix shell service. The <tt>cd</tt> command does not really change the
- * directory of the shell, rather it maintains a base URL for
+ * Felix impl service. The <tt>cd</tt> command does not really change the
+ * directory of the impl, rather it maintains a base URL for
  * simplifying URL entry.
  * <p>
  * For example, if the base URL is <tt>http://www.foo.com/<tt> and you
  * try to install a bundle <tt>foo.jar</tt>, the actual URL will be
  * expanded to <tt>http://www.foo.com/foo.jar</tt>. Any bundles wishing
- * to retrieve or set the current directory of the shell can use this
+ * to retrieve or set the current directory of the impl can use this
  * service interface.
 **/
 public interface CdCommand extends Command
@@ -33,16 +33,16 @@
     /**
      * Property used to configure the base URL.
     **/
-    public static final String BASE_URL_PROPERTY = "felix.shell.baseurl";
+    public static final String BASE_URL_PROPERTY = "felix.impl.baseurl";
 
     /**
-     * Returns the current <i>directory</i> of the shell service.
-     * @return the current shell directory.
+     * Returns the current <i>directory</i> of the impl service.
+     * @return the current impl directory.
     **/
     public String getBaseURL();
 
     /**
-     * Sets the current <i>directory</i> of the shell service.
+     * Sets the current <i>directory</i> of the impl service.
      * @param s the new value for the base URL.
     **/
     public void setBaseURL(String s);
diff --git a/src/org/ungoverned/osgi/service/shell/Command.java b/src/org/ungoverned/osgi/service/shell/Command.java
index 16ee2f6..c3a8363 100644
--- a/src/org/ungoverned/osgi/service/shell/Command.java
+++ b/src/org/ungoverned/osgi/service/shell/Command.java
@@ -19,11 +19,11 @@
 import java.io.PrintStream;
 
 /**
- * This interface is used to define commands for the Felix shell
+ * This interface is used to define commands for the Felix impl
  * service. Any bundle wishing to create commands for the
- * shell service simply needs to create a service object that
+ * impl service simply needs to create a service object that
  * implements this interface and then register it with the OSGi
- * framework. The shell service automatically includes any
+ * framework. The impl service automatically includes any
  * registered command services in its list of available commands.
 **/
 public interface Command
diff --git a/src/org/ungoverned/osgi/service/shell/ShellService.java b/src/org/ungoverned/osgi/service/shell/ShellService.java
index 41b954e..8ba31f3 100644
--- a/src/org/ungoverned/osgi/service/shell/ShellService.java
+++ b/src/org/ungoverned/osgi/service/shell/ShellService.java
@@ -21,14 +21,14 @@
 import org.osgi.framework.ServiceReference;
 
 /**
- * This interface defines the Felix shell service. The shell service
- * is an extensible, user interface neutral shell for controlling and
- * interacting with the framework. In general, the shell service assumes that
+ * This interface defines the Felix impl service. The impl service
+ * is an extensible, user interface neutral impl for controlling and
+ * interacting with the framework. In general, the impl service assumes that
  * it is operating in a command line fashion, i.e., it receives a
  * complete command line, parses it, and executes the corresponding
  * command, but graphical interfaces are also possible.
  * <p>
- * All commands in the shell service are actually implemented as OSGi
+ * All commands in the impl service are actually implemented as OSGi
  * services; these services implement the <tt>Command</tt> service
  * interface. Any bundle can implement custom commands by creating
  * command services and registering them with the OSGi framework.
@@ -36,7 +36,7 @@
 public interface ShellService
 {
     /**
-     * Returns an array of command names available in the shell service.
+     * Returns an array of command names available in the impl service.
      * @return an array of available command names or an empty array.
     **/
     public String[] getCommands();
