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();
