diff --git a/karaf/BUILDING.txt b/karaf/BUILDING.txt
index 7a7963e..7d72726 100644
--- a/karaf/BUILDING.txt
+++ b/karaf/BUILDING.txt
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-Building Apache ServiceMix Kernel
+Building Apache Felix Karaf
 ===================================
 
 Initial Setup
@@ -36,13 +36,13 @@
 Building
 --------
 
-1) Change to the top level directory of Apache ServiceMix Kernel source distribution.
+1) Change to the top level directory of Apache Felix Karaf source distribution.
 2) Run
          $> mvn
-   This will compile Apache ServiceMix Kernel and run all of the tests in the 
-   Apache ServiceMix Kernel source distribution. Alternatively, you can run
+   This will compile Apache Felix Karaf and run all of the tests in the
+   Apache Felix Karafl source distribution. Alternatively, you can run
          $> mvn -Pfastinstall
-   This will compile Apache ServiceMix Kernel without running the tests and takes less
+   This will compile Apache Felix Karaf without running the tests and takes less
    time to build.
    Depending on the load of remote Maven 2.0 repositories, you may have 
    to run "mvn" several times until the required dependencies are 
diff --git a/karaf/NOTICE.txt b/karaf/NOTICE.txt
index 15b77cc..4b3bb7e 100644
--- a/karaf/NOTICE.txt
+++ b/karaf/NOTICE.txt
@@ -1,6 +1,6 @@
    =========================================================================
    ==  NOTICE file for use with the Apache License, Version 2.0,          ==
-   ==  in this case for the Apache ServiceMix distribution.               ==
+   ==  in this case for the Apache Felix Karaf distribution.              ==
    =========================================================================
 
    This product contains software developed by
diff --git a/karaf/README.txt b/karaf/README.txt
index 07740ef..d1fd170 100644
--- a/karaf/README.txt
+++ b/karaf/README.txt
@@ -15,62 +15,61 @@
  * limitations under the License.
  */
 
-Welcome to Apache ServiceMix Kernel 
+Welcome to Apache Felix Karaf
 ====================================
-Apache ServiceMix Kernel is a small OSGi based kernel which provides a 
+Apache Felix Karaf is a small OSGi based kernel which provides a
 lightweight container onto which various bundles can be deployed.
 
 The following features are included:
-    * Hot deployment: ServiceMix Kernel supports hot deployment of OSGi bundles by monitoring
+    * Hot deployment: Karaf supports hot deployment of OSGi bundles by monitoring
       jar files inside the [home]/deploy directory. Each time a jar is copied in this folder,
       it will be installed inside the runtime. You can then update or delete it and changes will
       be handled automatically. In addition, the Kernel also supports exploded bundles and custom
       deployers (a spring one is included by default).
     * Dynamic configuration: Services are usually configured through the ConfigurationAdmin OSGi
-      service. Such configuration can be defined in ServiceMix Kernel using property files inside
+      service. Such configuration can be defined in Karf using property files inside
       the [home]/etc directory. These configurations are monitored and changes on the properties
       files will be propagated to the services.
-    * Logging System: using a centralized logging back end supported by Log4J, ServiceMix Kernel
+    * Logging System: using a centralized logging back end supported by Log4J, Karaf
       supports a number of different APIs (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi)
     * Provisioning: Provisioning of libraries or applications can be done through a number of
       different ways, by which they will be downloaded locally, installed and started.
-    * Native OS integration: ServiceMix Kernel can be integrated into your own Operating System as
+    * Native OS integration: Karaf can be integrated into your own Operating System as
       a service so that the lifecycle will be bound to your Operating System.
-    * Extensible Shell console: ServiceMix features a nice text console where you can manage the
+    * Extensible Shell console: Karaf features a nice text console where you can manage the
       services, install new applications or libraries and manage their state. This shell is easily
       extensible by deploying new commands dynamically along with new features or applications.
     * Remote access: use any SSH client to connect to the kernel and issue commands in the console
     * Security framework based on JAAS
-    * Managing instances: ServiceMix Kernel provides simple commands for managing instances of
-      ServiceMix Kernel. You can easily create, delete, start and stop instances of ServiceMix
-      Kernel through the console.
+    * Managing instances: Karaf provides simple commands for managing instances of Karaf.
+      You can easily create, delete, start and stop instances of Karaf through the console.
 
 Getting Started
 ===============
-For an Apache ServiceMix Kernel source distribution, please read 
-BUILDING.txt for instructions on building Apache ServiceMix Kernel. 
+For an Apache Felix Karaf source distribution, please read
+BUILDING.txt for instructions on building Apache Felix Karaf.
 
-For an Apache ServiceMix Kernel binary distribution, please read 
+For an Apache Felix Karaf binary distribution, please read
 RELEASE-NOTES.txt for installation instructions and list of supported 
 and unsupported features.
 
 Alternatively, you can also find out how to get started here:
-    http://servicemix.apache.org/kernel/
+    http://felix.apache.org/site/apache-felix-karaf.html
 
 If you need more help try talking to us on our mailing lists
-    http://servicemix.apache.org/mailing-lists.html
+    http://felix.apache.org/site/mailinglists.html
 
-If you find any issues with ServiceMix Kernel, please submit reports 
+If you find any issues with Apache Felix Karaf, please submit reports
 with JIRA here:
-    http://issues.apache.org/activemq/browse/SMX4KNL
+    http://issues.apache.org/jira/browse/FELIX
 
 We welcome contributions, and encourage you to get involved in the 
-ServiceMix community. If you'd like to learn more about how you can 
+Felix community. If you'd like to learn more about how you can
 contribute, please see:
-    http://servicemix.apache.org/contributing.html
+    http://felix.apache.org/site/contributing.html
 
-Many thanks for using Apache ServiceMix.
+Many thanks for using Apache Felix Karaf.
 
 
-The ServiceMix Team
-http://servicemix.apache.org/team.html
+The Felix Team
+
diff --git a/karaf/assembly/pom.xml b/karaf/assembly/pom.xml
index baf5bec..c9f4cc0 100644
--- a/karaf/assembly/pom.xml
+++ b/karaf/assembly/pom.xml
@@ -271,19 +271,19 @@
                                     <groupId>org.apache.felix.karaf</groupId>
                                     <artifactId>org.apache.felix.karaf.main</artifactId>
                                     <outputDirectory>target/dependencies</outputDirectory>
-                                    <destFileName>servicemix.jar</destFileName>
+                                    <destFileName>karaf.jar</destFileName>
                                 </artifactItem>
                                 <artifactItem>
                                     <groupId>org.apache.felix.karaf</groupId>
                                     <artifactId>org.apache.felix.karaf.client</artifactId>
                                     <outputDirectory>target/dependencies</outputDirectory>
-                                    <destFileName>servicemix-client.jar</destFileName>
+                                    <destFileName>karaf-client.jar</destFileName>
                                 </artifactItem>
                                 <artifactItem>
                                     <groupId>org.apache.felix.karaf.jaas</groupId>
                                     <artifactId>org.apache.felix.karaf.jaas.boot</artifactId>
                                     <outputDirectory>target/dependencies</outputDirectory>
-                                    <destFileName>servicemix-jaas-boot.jar</destFileName>
+                                    <destFileName>karaf-jaas-boot.jar</destFileName>
                                 </artifactItem>
                             </artifactItems>
                         </configuration>
diff --git a/karaf/assembly/src/main/descriptors/unix-src.xml b/karaf/assembly/src/main/descriptors/unix-src.xml
index 9227d56..4385030 100644
--- a/karaf/assembly/src/main/descriptors/unix-src.xml
+++ b/karaf/assembly/src/main/descriptors/unix-src.xml
@@ -52,7 +52,7 @@
                 <include>**/*.bin</include>
                 <include>**/*.jnilib</include>
                 <include>**/*.cert</include>
-                <include>apache-servicemix/src/main/release/bin/*/wrapper</include>
+                <include>apache-felix-karaf/src/main/release/bin/*/wrapper</include>
             </includes>
             <excludes>
                 <exclude>**/eclipse-classes/**</exclude>
@@ -82,7 +82,7 @@
                 <exclude>**/*.bin</exclude>
                 <exclude>**/*.jnilib</exclude>
                 <exclude>**/*.cert</exclude>
-                <exclude>apache-servicemix/src/main/release/bin/*/wrapper</exclude>
+                <exclude>apache-felix-karaf/src/main/release/bin/*/wrapper</exclude>
                 <exclude>**/target/**</exclude>
                 <exclude>**/build/**</exclude>
                 <exclude>activemq-data/**</exclude>
diff --git a/karaf/assembly/src/main/descriptors/windows-src.xml b/karaf/assembly/src/main/descriptors/windows-src.xml
index 4d0c6ae..15b969f 100644
--- a/karaf/assembly/src/main/descriptors/windows-src.xml
+++ b/karaf/assembly/src/main/descriptors/windows-src.xml
@@ -52,7 +52,7 @@
                 <include>**/*.bin</include>
                 <include>**/*.jnilib</include>
                 <include>**/*.cert</include>
-                <include>apache-servicemix/src/main/release/bin/*/wrapper</include>
+                <include>apache-felix-karaf/src/main/release/bin/*/wrapper</include>
             </includes>
             <excludes>
                 <exclude>**/eclipse-classes/**</exclude>
@@ -82,7 +82,7 @@
                 <exclude>**/*.bin</exclude>
                 <exclude>**/*.jnilib</exclude>
                 <exclude>**/*.cert</exclude>
-                <exclude>apache-servicemix/src/main/release/bin/*/wrapper</exclude>
+                <exclude>apache-felix-karaf/src/main/release/bin/*/wrapper</exclude>
 
                 <exclude>**/target/**</exclude>
                 <exclude>**/build/**</exclude>
diff --git a/karaf/assembly/src/main/distribution/unix-shell/bin/karaf b/karaf/assembly/src/main/distribution/unix-shell/bin/karaf
index a5771c9..4016399 100755
--- a/karaf/assembly/src/main/distribution/unix-shell/bin/karaf
+++ b/karaf/assembly/src/main/distribution/unix-shell/bin/karaf
@@ -15,7 +15,7 @@
 #    See the License for the specific language governing permissions and
 #    limitations under the License.
 #
-# $Id: servicemix 979 2005-11-30 22:50:55Z bsnyder $
+# $Id: karaf 979 2005-11-30 22:50:55Z bsnyder $
 #
 
 DIRNAME=`dirname $0`
diff --git a/karaf/assembly/src/main/distribution/windows-text/bin/karaf.bat b/karaf/assembly/src/main/distribution/windows-text/bin/karaf.bat
index 475663b..189dd1c 100755
--- a/karaf/assembly/src/main/distribution/windows-text/bin/karaf.bat
+++ b/karaf/assembly/src/main/distribution/windows-text/bin/karaf.bat
@@ -17,7 +17,7 @@
 rem    limitations under the License.
 rem
 rem 
-rem $Id: servicemix.bat 979 2005-11-30 22:50:55Z bsnyder $
+rem $Id: karaf.bat 979 2005-11-30 22:50:55Z bsnyder $
 rem 
 
 if not "%ECHO%" == "" echo %ECHO%
diff --git a/karaf/client/pom.xml b/karaf/client/pom.xml
index b6d9738..283e47b 100644
--- a/karaf/client/pom.xml
+++ b/karaf/client/pom.xml
@@ -67,7 +67,7 @@
                             ../system/org/apache/mina/mina-core/${mina.version}/mina-core-${mina.version}.jar
                             ../system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.jline/${jline.version}/org.apache.servicemix.bundles.jline-${jline.version}.jar
                         </Class-Path>
-                        <Bundle-Name>Apache ServiceMix Shell Client</Bundle-Name>
+                        <Bundle-Name>Apache Felix Karaf Shell Client</Bundle-Name>
                         <Bundle-Description>Shell client bundle for Apache Felix Karaf.</Bundle-Description>
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                         <Export-Package>org.apache.felix.karaf.client</Export-Package>
diff --git a/karaf/gshell/gshell-admin/pom.xml b/karaf/gshell/gshell-admin/pom.xml
index fd50615..36faa9d 100644
--- a/karaf/gshell/gshell-admin/pom.xml
+++ b/karaf/gshell/gshell-admin/pom.xml
@@ -43,11 +43,11 @@
             org.apache.geronimo.gshell*,
         </gshell.osgi.import>
         <gshell.osgi.export>
-            org.apache.servicemix.jpm
+            org.apache.felix.karaf.jpm
         </gshell.osgi.export>
         <gshell.osgi.private>
             org.apache.felix.karaf.gshell.admin.*,
-            org.apache.servicemix.jpm.impl
+            org.apache.feix.karaf.jpm.impl
         </gshell.osgi.private>
     </properties>
 
diff --git a/karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/felix/karaf/gshell/admin/etc/org.apache.servicemix.features.cfg b/karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/felix/karaf/gshell/admin/etc/org.apache.felix.karaf.features.cfg
similarity index 100%
rename from karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/felix/karaf/gshell/admin/etc/org.apache.servicemix.features.cfg
rename to karaf/gshell/gshell-admin/src/main/filtered-resources/org/apache/felix/karaf/gshell/admin/etc/org.apache.felix.karaf.features.cfg
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java
index 002c6c9..48d03b4 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/AdminServiceImpl.java
@@ -79,7 +79,7 @@
             }
             instances = newInstances;
         } catch (Exception e) {
-            LOGGER.warn("Unable to reload ServiceMix instance list", e);
+            LOGGER.warn("Unable to reload Karaf instance list", e);
         }
     }
 
@@ -117,7 +117,7 @@
         mkdir(serviceMixBase, "data");
 
         copyResourceToDir(serviceMixBase, "etc/config.properties", true);
-        copyResourceToDir(serviceMixBase, "etc/org.apache.servicemix.features.cfg", true);
+        copyResourceToDir(serviceMixBase, "etc/org.apache.felix.karaf.features.cfg", true);
         copyResourceToDir(serviceMixBase, "etc/users.properties", true);
         copyResourceToDir(serviceMixBase, "etc/org.ops4j.pax.logging.cfg", true);
         copyResourceToDir(serviceMixBase, "etc/org.ops4j.pax.url.mvn.cfg", true);
@@ -131,10 +131,10 @@
         copyFilteredResourceToDir(serviceMixBase, "etc/system.properties", props);
         copyFilteredResourceToDir(serviceMixBase, "etc/org.apache.felix.karaf.shell.cfg", props);
         if( System.getProperty("os.name").startsWith("Win") ) {
-            copyFilteredResourceToDir(serviceMixBase, "bin/servicemix.bat", props);
+            copyFilteredResourceToDir(serviceMixBase, "bin/karaf.bat", props);
         } else {
-            copyFilteredResourceToDir(serviceMixBase, "bin/servicemix", props);
-            chmod(new File(serviceMixBase, "bin/servicemix"), "a+x");
+            copyFilteredResourceToDir(serviceMixBase, "bin/karaf", props);
+            chmod(new File(serviceMixBase, "bin/karaf"), "a+x");
         }
         Instance instance = new InstanceImpl(this, name, serviceMixBase.toString());
         instances.put(name, instance);
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java
index f255530..2bc1309 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java
@@ -20,7 +20,7 @@
 import org.apache.geronimo.gshell.clp.Option;
 
 /**
- * Creates a new servicemix instance 
+ * Creates a new Karaf instance 
  *
  * @version $Rev: 679826 $ $Date: 2008-07-25 17:00:12 +0200 (Fri, 25 Jul 2008) $
  */
@@ -32,7 +32,7 @@
     @Option(name = "-l", aliases = { "--location"}, description = "Location of the new instance on the file system")
     private String location;
 
-    @Argument(index=0, required=true, description="Name of the new ServiceMix instance")
+    @Argument(index=0, required=true, description="Name of the new Karaf instance")
     private String instance = null;
 
     protected Object doExecute() throws Exception {
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java
index 8f0235f..b41dd8c 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java
@@ -19,13 +19,13 @@
 import org.apache.geronimo.gshell.clp.Argument;
 
 /**
- * Creates a new servicemix instance
+ * Destroy an existing Karaf instance
  *
  * @version $Rev: 679826 $ $Date: 2008-07-25 17:00:12 +0200 (Fri, 25 Jul 2008) $
  */
 public class DestroyCommand extends AdminCommandSupport
 {
-    @Argument(index=0, required=true, description="The name of the ServiceMix instance to destroy")
+    @Argument(index=0, required=true, description="The name of the Karaf instance to destroy")
     private String instance = null;
 
     protected Object doExecute() throws Exception {
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/etc/org.ops4j.pax.logging.cfg b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/etc/org.ops4j.pax.logging.cfg
index fcc4ea9..eca5c0e 100644
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/etc/org.ops4j.pax.logging.cfg
+++ b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/etc/org.ops4j.pax.logging.cfg
@@ -32,5 +32,5 @@
 log4j.appender.out=org.apache.log4j.FileAppender
 log4j.appender.out.layout=org.apache.log4j.PatternLayout
 log4j.appender.out.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
-log4j.appender.out.file=${karaf.base}/data/log/servicemix.log
+log4j.appender.out.file=${karaf.base}/data/log/karaf.log
 log4j.appender.out.append=true
diff --git a/karaf/gshell/gshell-core/src/main/filtered-resources/org/apache/felix/karaf/gshell/core/servicemix-version.properties b/karaf/gshell/gshell-core/src/main/filtered-resources/org/apache/felix/karaf/gshell/core/karaf-version.properties
similarity index 100%
rename from karaf/gshell/gshell-core/src/main/filtered-resources/org/apache/felix/karaf/gshell/core/servicemix-version.properties
rename to karaf/gshell/gshell-core/src/main/filtered-resources/org/apache/felix/karaf/gshell/core/karaf-version.properties
diff --git a/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/ApplicationImpl.java b/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/ApplicationImpl.java
index a512d44..4c01969 100644
--- a/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/ApplicationImpl.java
+++ b/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/ApplicationImpl.java
@@ -33,7 +33,7 @@
 public class ApplicationImpl implements Application  {
 
 	private static final String EMBEDDED_PROPS = "org/apache/felix/karaf/version/embedded.properties";
-    private static final String SERVICEMIX_VERSION ="org/apache/felix/karaf/gshell/core/servicemix-version.properties";
+    private static final String SERVICEMIX_VERSION ="org/apache/felix/karaf/gshell/core/karaf-version.properties";
     private static final String VERSION_PROPERTY = "version";
 
     private String id;
diff --git a/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/commands/InfoAction.java b/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/commands/InfoAction.java
index b9ace8d..ba09d82 100644
--- a/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/commands/InfoAction.java
+++ b/karaf/gshell/gshell-core/src/main/java/org/apache/felix/karaf/gshell/core/commands/InfoAction.java
@@ -64,13 +64,13 @@
         io = context.getIo();
 
         //
-        // print ServiceMix informations
+        // print Karaf informations
         //
         maxNameLen = 25;
-        io.out.println("ServiceMix");
-        printValue("ServiceMix home", maxNameLen, System.getProperty("karaf.home"));
-        printValue("ServiceMix base", maxNameLen, System.getProperty("karaf.base"));
-        printValue("ServiceMix Kernel version", maxNameLen, branding.getParent().getVersion());
+        io.out.println("Apache Felix Karaf");
+        printValue("Karaf home", maxNameLen, System.getProperty("karaf.home"));
+        printValue("Karaf base", maxNameLen, System.getProperty("karaf.base"));
+        printValue("Karaf version", maxNameLen, branding.getParent().getVersion());
 
         if (branding.getApplicationName() != null && branding.getApplicationVersion() != null) {
             printValue(branding.getApplicationName() + " version", maxNameLen, branding.getApplicationVersion());
diff --git a/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml b/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml
index c995a48..2f05dfe 100644
--- a/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml
+++ b/karaf/gshell/gshell-features/src/main/resources/META-INF/spring/gshell-features.xml
@@ -105,7 +105,7 @@
 
     <osgi:service ref="featuresService" interface="org.apache.felix.karaf.gshell.features.FeaturesService" />
 
-    <osgix:cm-properties id="cmProps" persistent-id="org.apache.servicemix.features">
+    <osgix:cm-properties id="cmProps" persistent-id="org.apache.felix.karaf.features">
         <prop key="featuresRepositories"></prop>
         <prop key="featuresBoot"></prop>
     </osgix:cm-properties>
diff --git a/karaf/gshell/gshell-osgi/src/main/java/org/apache/felix/karaf/gshell/osgi/Shutdown.java b/karaf/gshell/gshell-osgi/src/main/java/org/apache/felix/karaf/gshell/osgi/Shutdown.java
index 97b4272..f73161a 100644
--- a/karaf/gshell/gshell-osgi/src/main/java/org/apache/felix/karaf/gshell/osgi/Shutdown.java
+++ b/karaf/gshell/gshell-osgi/src/main/java/org/apache/felix/karaf/gshell/osgi/Shutdown.java
@@ -20,7 +20,7 @@
 import org.osgi.framework.Bundle;
 
 /**
- * Command to shut down ServiceMix Kernel
+ * Command to shut down Karaf
  */
 public class Shutdown extends OsgiCommandSupport {
 
@@ -31,7 +31,7 @@
                     Bundle bundle = getBundleContext().getBundle(0);
                     bundle.stop();
                 } catch (Exception e) {
-                    log.error("Error when shutting down ServiceMix Kernel", e);
+                    log.error("Error when shutting down Apache Felix Karaf", e);
                 }
             }
         }.start();
diff --git a/karaf/gshell/gshell-wrapper/src/main/java/org/apache/felix/karaf/gshell/wrapper/InstallCommand.java b/karaf/gshell/gshell-wrapper/src/main/java/org/apache/felix/karaf/gshell/wrapper/InstallCommand.java
index 9e4f365..6f3a7e1 100644
--- a/karaf/gshell/gshell-wrapper/src/main/java/org/apache/felix/karaf/gshell/wrapper/InstallCommand.java
+++ b/karaf/gshell/gshell-wrapper/src/main/java/org/apache/felix/karaf/gshell/wrapper/InstallCommand.java
@@ -31,7 +31,7 @@
 import org.apache.felix.karaf.gshell.core.OsgiCommandSupport;
 
 /**
- * Installs this ServiceMix instance as a service in your operating systems. 
+ * Installs this Karaf instance as a service in your operating systems.
  *
  * @version $Rev: 603634 $ $Date: 2007-12-12 16:07:16 +0100 (Wed, 12 Dec 2007) $
  */
@@ -39,7 +39,7 @@
 {
 	
     @Option(name="-n", aliases={"--name"}, description="The service name that will be used when installing the service.")
-    private String name="servicemix";
+    private String name="karaf";
     @Option(name="-d", aliases={"--display"}, description="The display name of the service.")
     private String displayName;
     @Option(name="-D", aliases={"--description"}, description="The description of the service.")
@@ -68,20 +68,20 @@
 			File serviceFile=null;
 			if( os.startsWith("Win") ) {
 				mkdir(bin);
-				copyResourceTo(new File(bin, name+"-wrapper.exe"), "windows/servicemix-wrapper.exe", false);
+				copyResourceTo(new File(bin, name+"-wrapper.exe"), "windows/karaf-wrapper.exe", false);
 				serviceFile = new File(bin,name+"-service.bat");
-				copyFilteredResourceTo(serviceFile, "windows/servicemix-service.bat", props);
+				copyFilteredResourceTo(serviceFile, "windows/karaf-service.bat", props);
 				mkdir(lib);
 				copyResourceTo(new File(bin, "wrapper.dll"), "windows/wrapper.dll", false);								
 			} else if( os.startsWith("Mac OS X") ) {
 				mkdir(bin);
 				
 				File file = new File(bin, name+"-wrapper");
-				copyResourceTo(file, "macosx/servicemix-wrapper", false);
+				copyResourceTo(file, "macosx/karaf-wrapper", false);
 				chmod(file, "a+x");
 				
 				serviceFile = new File(bin,name+"-service");
-				copyFilteredResourceTo(serviceFile, "unix/servicemix-service", props);
+				copyFilteredResourceTo(serviceFile, "unix/karaf-service", props);
 				chmod(serviceFile, "a+x");
 				
 				mkdir(lib);
@@ -93,11 +93,11 @@
 				mkdir(bin);
 				
 				File file = new File(bin, name+"-wrapper");
-				copyResourceTo(file, "linux/servicemix-wrapper", false);
+				copyResourceTo(file, "linux/karaf-wrapper", false);
 				chmod(file, "a+x");
 
 				serviceFile = new File(bin,name+"-service");
-				copyFilteredResourceTo(serviceFile, "unix/servicemix-service", props);
+				copyFilteredResourceTo(serviceFile, "unix/karaf-service", props);
 				chmod(serviceFile, "a+x");
 				
 				mkdir(lib);
@@ -112,10 +112,10 @@
 
     		// Install the wrapper jar to the lib directory..
 			mkdir(lib);
-			copyResourceTo(new File(lib, "servicemix-wrapper.jar"), "all/servicemix-wrapper.jar", false);
+			copyResourceTo(new File(lib, "karaf-wrapper.jar"), "all/karaf-wrapper.jar", false);
 			mkdir(etc);
 			File wrapperConf = new File(etc,name+"-wrapper.conf");
-			copyFilteredResourceTo(wrapperConf, "all/servicemix-wrapper.conf", props);
+			copyFilteredResourceTo(wrapperConf, "all/karaf-wrapper.conf", props);
 
 			io.out.println("");
 			io.out.println("Setup complete.  You may want to tweak the JVM properties in the wrapper configuration file: "+wrapperConf.getPath());
@@ -139,7 +139,7 @@
 				io.out.println("");
 				io.out.println("At this time it is not known how to get this service to start when the machine is rebooted.");
 				io.out.println("If you know how to install the following service script so that it gets started");
-				io.out.println("when OS X starts, please email dev@servicemix.apache.org and let us know how so");
+				io.out.println("when OS X starts, please email dev@felix.apache.org and let us know how so");
 				io.out.println("we can update this message.");
 				io.out.println(" ");
 				io.out.println("  To start the service:");
diff --git a/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/InstallCommand.properties b/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/InstallCommand.properties
index 785b4d8..f9fccf7 100644
--- a/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/InstallCommand.properties
+++ b/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/InstallCommand.properties
@@ -21,7 +21,7 @@
 ## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
 ##
 
-command.description=Install ServiceMix Kernel as a system service in the OS.
+command.description=Install Karaf as a system service in the OS.
 
 command.manual=\
   TODO: install manual
diff --git a/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/servicemix-wrapper.conf b/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/karaf-wrapper.conf
similarity index 90%
rename from karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/servicemix-wrapper.conf
rename to karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/karaf-wrapper.conf
index 1095fbd..1230daa 100644
--- a/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/servicemix-wrapper.conf
+++ b/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/karaf-wrapper.conf
@@ -18,25 +18,25 @@
 #********************************************************************
 # Wrapper Properties
 #********************************************************************
-set.default.SERVICEMIX_HOME=${servicemix.home}
-set.default.SERVICEMIX_BASE=${servicemix.base}
+set.default.KARAF_HOME=${karaf.home}
+set.default.KARAF_BASE=${karaf.base}
 
 # Java Application
 wrapper.working.dir=%SERVICEMIX_BASE%
 wrapper.java.command=java
 wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
-wrapper.java.classpath.1=%SERVICEMIX_BASE%/lib/servicemix-wrapper.jar
-wrapper.java.classpath.2=%SERVICEMIX_HOME%/lib/servicemix.jar
-wrapper.java.classpath.3=%SERVICEMIX_HOME%/lib/servicemix-jaas-boot.jar
-wrapper.java.library.path.1=%SERVICEMIX_BASE%/lib/
+wrapper.java.classpath.1=%KARAF_BASE%/lib/karaf-wrapper.jar
+wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
+wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jaas-boot.jar
+wrapper.java.library.path.1=%KARAF_BASE%/lib/
 
 # Application Parameters.  Add parameters as needed starting from 1
 wrapper.app.parameter.1=org.apache.felix.karaf.main.Main
 
 # JVM Parameters
 # note that n is the parameter number starting from 1.
-wrapper.java.additional.1=-Dservicemix.home=%SERVICEMIX_HOME%
-wrapper.java.additional.2=-Dservicemix.base=%SERVICEMIX_BASE%
+wrapper.java.additional.1=-Dservicemix.home=%KARAF_HOME%
+wrapper.java.additional.2=-Dservicemix.base=%KARAF_BASE%
 wrapper.java.additional.3=-Dcom.sun.management.jmxremote
 wrapper.java.additional.4=-Dservicemix.startLocalConsole=false
 wrapper.java.additional.5=-Dservicemix.startRemoteShell=true
diff --git a/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/servicemix-wrapper.jar b/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/karaf-wrapper.jar
similarity index 100%
rename from karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/servicemix-wrapper.jar
rename to karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/all/karaf-wrapper.jar
Binary files differ
diff --git a/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/linux/servicemix-wrapper b/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/linux/karaf-wrapper
similarity index 100%
rename from karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/linux/servicemix-wrapper
rename to karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/linux/karaf-wrapper
Binary files differ
diff --git a/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/macosx/servicemix-wrapper b/karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/macosx/karaf-wrapper
similarity index 100%
rename from karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/macosx/servicemix-wrapper
rename to karaf/gshell/gshell-wrapper/src/main/resources/org/apache/felix/karaf/gshell/wrapper/macosx/karaf-wrapper
Binary files differ
diff --git a/karaf/main/pom.xml b/karaf/main/pom.xml
index e69a59b..adf6fd2 100644
--- a/karaf/main/pom.xml
+++ b/karaf/main/pom.xml
@@ -57,7 +57,7 @@
                     <instructions>
                         <_donotcopy>(CVS|.svn|config.properties)</_donotcopy>
                         <Main-Class>org.apache.felix.karaf.main.Main</Main-Class>
-                        <Bundle-Name>Apache ServiceMix</Bundle-Name>
+                        <Bundle-Name>Apache Felix Karaf</Bundle-Name>
                         <Bundle-Description>OSGi R4 framework.</Bundle-Description>
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                         <Export-Package>org.apache.felix.karaf.main.spi.*;version=${pom.version}</Export-Package>
diff --git a/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java b/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java
index 1eec5aa..66bac66 100644
--- a/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java
+++ b/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java
@@ -84,23 +84,23 @@
      */
     public static final String PROPERTY_AUTO_START = "felix.auto.start";
     /**
-     * The system property for specifying the ServiceMix home directory.  The home directory
-     * hold the binary install of ServiceMix.
+     * The system property for specifying the Karaf home directory.  The home directory
+     * hold the binary install of Karaf.
      */
     public static final String PROP_KARAF_HOME = "karaf.home";
     /**
-     * The environment variable for specifying the ServiceMix home directory.  The home directory
-     * hold the binary install of ServiceMix.
+     * The environment variable for specifying the Karaf home directory.  The home directory
+     * hold the binary install of Karaf.
      */
     public static final String ENV_KARAF_HOME = "KARAF_HOME";
     /**
-     * The system property for specifying the ServiceMix base directory.  The base directory
-     * holds the configuration and data for a ServiceMix instance.
+     * The system property for specifying the Karaf base directory.  The base directory
+     * holds the configuration and data for a Karaf instance.
      */
     public static final String PROP_KARAF_BASE = "karaf.base";
     /**
-     * The environment variable for specifying the ServiceMix base directory.  The base directory
-     * holds the configuration and data for a ServiceMix instance.
+     * The environment variable for specifying the Karaf base directory.  The base directory
+     * holds the configuration and data for a Karaf instance.
      */
     public static final String ENV_KARAF_BASE = "KARAF_BASE";
 
@@ -131,8 +131,8 @@
     public static final String PROPERTY_LOCK_CLASS_DEFAULT = SimpleFileLock.class.getName();
 
 
-    private File servicemixHome;
-    private File servicemixBase;
+    private File karafHome;
+    private File karafBase;
     private static Properties m_configProps = null;
     private static Felix m_felix = null;
     private final String[] args;
@@ -149,14 +149,14 @@
     }
 
     public void launch() throws Exception {
-        servicemixHome = getServiceMixHome();
-        servicemixBase = getServiceMixBase(servicemixHome);
+        karafHome = getServiceMixHome();
+        karafBase = getServiceMixBase(karafHome);
 
-        //System.out.println("ServiceMix Home: "+main.servicemixHome.getPath());
-        //System.out.println("ServiceMix Base: "+main.servicemixBase.getPath());
+        //System.out.println("Karaf Home: "+main.servicemixHome.getPath());
+        //System.out.println("Karaf Base: "+main.servicemixBase.getPath());
 
-        System.setProperty(PROP_KARAF_HOME, servicemixHome.getPath());
-        System.setProperty(PROP_KARAF_BASE, servicemixBase.getPath());
+        System.setProperty(PROP_KARAF_HOME, karafHome.getPath());
+        System.setProperty(PROP_KARAF_BASE, karafBase.getPath());
 
         // Load system properties.
         loadSystemProperties();
@@ -169,7 +169,7 @@
 
         processSecurityProperties(m_configProps);
 
-        m_configProps.setProperty(BundleCache.CACHE_ROOTDIR_PROP, servicemixBase.getPath() + "/data");
+        m_configProps.setProperty(BundleCache.CACHE_ROOTDIR_PROP, karafBase.getPath() + "/data");
         m_configProps.setProperty(Constants.FRAMEWORK_STORAGE, "cache");
 
         // Register the Main class so that other bundles can inspect the command line args.
@@ -370,7 +370,7 @@
         if (rc == null) {
             // Dig into the classpath to guess the location of the jar
             String classpath = System.getProperty("java.class.path");
-            int index = classpath.toLowerCase().indexOf("servicemix.jar");
+            int index = classpath.toLowerCase().indexOf("karaf.jar");
             int start = classpath.lastIndexOf(File.pathSeparator, index) + 1;
             if (index >= start) {
                 String jarLocation = classpath.substring(start, index);
@@ -378,7 +378,7 @@
             }
         }
         if (rc == null) {
-            throw new IOException("The ServiceMix install directory could not be determined.  Please set the " + PROP_KARAF_HOME + " system property or the " + ENV_KARAF_HOME + " environment variable.");
+            throw new IOException("The Karaf install directory could not be determined.  Please set the " + PROP_KARAF_HOME + " system property or the " + ENV_KARAF_HOME + " environment variable.");
         }
 
         return rc;
@@ -422,7 +422,7 @@
     }
 
     private static void processSecurityProperties(Properties m_configProps) {
-        String prop = m_configProps.getProperty("org.apache.servicemix.security.providers");
+        String prop = m_configProps.getProperty("org.apache.felix.karaf.security.providers");
         if (prop != null) {
             String[] providers = prop.split(",");
             for (String provider : providers) {
@@ -683,7 +683,7 @@
         // See if the property URL was specified as a property.
         URL propURL = null;
         try {
-            File file = new File(new File(servicemixBase, "etc"), SYSTEM_PROPERTIES_FILE_NAME);
+            File file = new File(new File(karafBase, "etc"), SYSTEM_PROPERTIES_FILE_NAME);
             propURL = file.toURL();
         }
         catch (MalformedURLException ex) {
@@ -754,17 +754,17 @@
         URL startupPropURL = null;
 
         try {
-            File file = new File(new File(servicemixBase, "etc"), CONFIG_PROPERTIES_FILE_NAME);
+            File file = new File(new File(karafBase, "etc"), CONFIG_PROPERTIES_FILE_NAME);
             configPropURL = file.toURL();
 
-            file = new File(new File(servicemixBase, "etc"), STARTUP_PROPERTIES_FILE_NAME);
+            file = new File(new File(karafBase, "etc"), STARTUP_PROPERTIES_FILE_NAME);
             startupPropURL = file.toURL();
 
-            if (servicemixBase.equals(servicemixHome)) {
-                bundleDirs.add(new File(servicemixHome, "system"));
+            if (karafBase.equals(karafHome)) {
+                bundleDirs.add(new File(karafHome, "system"));
             } else {
-                bundleDirs.add(new File(servicemixBase, "system"));
-                bundleDirs.add(new File(servicemixHome, "system"));
+                bundleDirs.add(new File(karafBase, "system"));
+                bundleDirs.add(new File(karafHome, "system"));
             }
 
         }
@@ -847,7 +847,7 @@
              e.hasMoreElements();) {
             String key = (String) e.nextElement();
             if (key.startsWith("felix.") ||
-                    key.startsWith("servicemix.") ||
+                    key.startsWith("karaf.") ||
                     key.equals("org.osgi.framework.system.packages") ||
                     key.equals("org.osgi.framework.bootdelegation")) {
                 configProps.setProperty(key, System.getProperty(key));
@@ -1077,7 +1077,7 @@
     }
 
     /* (non-Javadoc)
-      * @see org.apache.servicemix.main.MainService#getArgs()
+      * @see org.apache.felix.karaf.main.MainService#getArgs()
       */
     public String[] getArgs() {
         return args;
@@ -1091,12 +1091,12 @@
         this.exitCode = exitCode;
     }
 
-    public File getServicemixHome() {
-        return servicemixHome;
+    public File getKarafHome() {
+        return karafHome;
     }
 
-    public File getServicemixBase() {
-        return servicemixBase;
+    public File getKarafBase() {
+        return karafBase;
     }
 
     public void lock(Properties props) {
