diff --git a/main.distribution/doc/apache-felix-framework-launching-and-embedding.html b/main.distribution/doc/apache-felix-framework-launching-and-embedding.html
index fc4887d..533f42c 100644
--- a/main.distribution/doc/apache-felix-framework-launching-and-embedding.html
+++ b/main.distribution/doc/apache-felix-framework-launching-and-embedding.html
@@ -12,27 +12,29 @@
 <ul>
 	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
 	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
-	<li><a href="http://felix.apache.org/site/downloads.cgi" rel="nofollow">downloads</a></li>
+	<li><a href="http://felix.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">downloads</a></li>
 	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
 	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
 	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
-	<li><a href="http://www.apache.org/" rel="nofollow">asf</a></li>
-	<li><a href="http://www.apache.org/foundation/sponsorship.html" rel="nofollow">sponsorship</a></li>
-	<li><a href="http://www.apache.org/foundation/thanks.html" rel="nofollow">sponsors</a>
+	<li><a href="http://www.apache.org/" class="external-link" rel="nofollow">asf</a></li>
+	<li><a href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">sponsorship</a></li>
+	<li><a href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">sponsors</a>
 <!-- ApacheCon Ad -->
 <iframe src="apache-felix-framework-launching-and-embedding_files/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
 <p style="height: 100px;">
 <!-- ApacheCon Ad -->
-</p></li></ul> </div>
+</p></li></ul>
+    </div>
     <div class="main">
 <h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-ApacheFelixFrameworkLaunchingandEmbedding"></a>Apache Felix Framework Launching and Embedding</h1>
 
 <p><em>[This document describes framework launching introduced in Felix
-2.0.0 and is incompatible with older versions of the Felix framework.]</em></p>
+Framework 2.0.0 and continuing with the latest releases; it is
+incompatible with older versions of the Felix framework.]</em></p>
 
 <ul>
 	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-introduction">Introduction</a></li>
-	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-overview">API Overview</a>
+	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-overview">OSGi Launching and Embedding API Overview</a>
 	<ul>
 		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-creatingandconfiguring">Creating and Configuring the Framework Instance</a></li>
 		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-startinginstance">Starting the Framework Instance</a></li>
@@ -66,23 +68,24 @@
 
 <h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-Introduction"></a>Introduction</h1>
 
-<p>The Apache Felix framework is intended to be easily launchable and
-embeddable. For example, Felix avoids the use of system properties for
-configuration, since these are globals and can cause interference if
-multiple framework instances are created in the same VM. Felix also
-tries to multiplex singleton facilities, like the URL stream handler
-factory. The goal is to make it possible to use Felix in as many
-scenarios as possible; however, this is still just a goal. In other
-words, this is a work in progress and if any issues arise, it would be
-greatly appreciated if they are brought to the attention of the Felix
-community. The next section provides a Felix API overview, while the
-remainder of the document is divided into two sections, one focusing on
-how to launch Felix and one focusing on how to embed Felix into a host
-application.</p>
+<p>The Apache Felix Framework is intended to be easily launchable and
+embeddable. For example, the Felix framework implementation avoids the
+use of system properties for configuration, since these are globals and
+can cause interference if multiple framework instances are created in
+the same VM. The framework also tries to multiplex singleton
+facilities, like the URL stream handler factory. The goal is to make it
+possible to use the framework in a variety of scenarios; however, this
+is still just a goal. In other words, this is a work in progress and if
+any issues arise, it would be greatly appreciated if they are brought
+to the attention of the Felix community. The next section provides an
+overview of the standard OSGi launching and embedding API for
+frameworks, while the remainder of the document is divided into two
+sections, one focusing on how to launch Felix and one focusing on how
+to embed Felix into a host application.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-overview"></a></p>
 
-<h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-APIOverview"></a>API Overview</h1>
+<h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-OSGiLaunchingandEmbeddingAPIOverview"></a>OSGi Launching and Embedding API Overview</h1>
 
 <p>The Felix framework is implemented by the <tt>org.apache.felix.framework.Felix</tt> class or just <tt>Felix</tt>
 for short. As part of the R4.2 OSGi specification, the launching and
@@ -125,17 +128,17 @@
 <pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> Framework <span class="code-keyword">extends</span> Bundle
 {
     void init();
-    FrameworkEvent waitForStop();
+    FrameworkEvent waitForStop(<span class="code-object">long</span> timeout);
 }
 </pre>
 </div></div>
 
-<p>To actually construct a framework instance, the R4.2 specification defines the FrameworkFactory interface:</p>
+<p>To actually construct a framework instance, the R4.2 specification defines the <tt>FrameworkFactory</tt> interface:</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> FrameworkFactory
 {
-    Framework newFramework(Map configMap);
+    Framework newFramework(Map config);
 }
 </pre>
 </div></div>
@@ -163,14 +166,12 @@
 to all bundles from the environment (i.e., no need to import them);
 there is no default value for this property and its use should be
 avoided.</li>
-	<li><tt>org.osgi.framework.storage</tt> - specifies the
-path to a directory, which will be created if it does not exist, to use
-for bundle cache storage; the default value for this property is "<tt>felix-cache</tt>" in the current working directory.</li>
-	<li><tt>org.osgi.framework.storage.clean</tt>
-- specifies whether the bundle cache should be flushed; the default
-value for this property is "none", but it can be changed to
-"onFirstInit" to flush the bundle cache when the framework is
-initialized.</li>
+	<li><tt>org.osgi.framework.bundle.parent</tt> - Specifies which class loader is used for boot delegation. Possible values are: <tt>boot</tt> for the boot class loader, <tt>app</tt> for the application class loader, <tt>ext</tt> for the extension class loader, and <tt>framework</tt> for the framework's class loader. The default is <tt>boot</tt>.</li>
+	<li><tt>org.osgi.framework.storage</tt>
+- specifies the path to a directory, which will be created if it does
+not exist, to use for bundle cache storage; the default value for this
+property is "<tt>felix-cache</tt>" in the current working directory.</li>
+	<li><tt>org.osgi.framework.storage.clean</tt> - specifies whether the bundle cache should be flushed; the default value for this property is "<tt>none</tt>", but it can be changed to "<tt>onFirstInit</tt>" to flush the bundle cache when the framework is initialized.</li>
 	<li><tt>org.osgi.framework.startlevel.beginning</tt> - specifies the start level the framework enters upon startup; the default value for this property is 1.</li>
 </ul>
 
@@ -203,7 +204,7 @@
 after construction. If you need a different configuration, you must
 create a new framework instance.</p>
 
-<div class="panelMacro"><table class="warningMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-framework-launching-and-embedding_files/forbidden.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b>WARNING</b><br><p>Felix configuration properties have change considerably starting from <tt>1.4.0</tt>; if you are upgrading from an earlier version, the <a href="http://felix.apache.org/site/apache-felix-framework-usage-documentation.html#ApacheFelixFrameworkUsageDocumentation-migrating">usage document</a> describes the configuration property changes.</p></td></tr></tbody></table></div>
+<div class="panelMacro"><table class="warningMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-framework-launching-and-embedding_files/forbidden.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b>WARNING</b><br>Felix configuration properties have change considerably starting from <tt>1.4.0</tt>; if you are upgrading from an earlier version, the <a href="http://felix.apache.org/site/apache-felix-framework-usage-documentation.html#ApacheFelixFrameworkUsageDocumentation-migrating">usage document</a> describes the configuration property changes.</td></tr></tbody></table></div>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-startinginstance"></a></p>
 
@@ -217,7 +218,7 @@
 </ul>
 
 
-<p>The <tt>init()</tt> method is necessary since the framework does not have a <tt>BundleContext</tt> when it is first created, so a transition to the <tt>Bundle.STARTING</tt> state is required to acquire its context (via <tt>Bundle.getBundleContext()</tt>) for performing various tasks, such as installing bundles. Note that Felix also provides the <tt>felix.systembundle.activators</tt> property that serves a similar purpose, but is not standard. After the <tt>init()</tt> method completes, the follow actions have been performed:</p>
+<p>The <tt>init()</tt> method is necessary since the framework does not have a <tt>BundleContext</tt> when it is first created, so a transition to the <tt>Bundle.STARTING</tt> state is required to acquire its context (via <tt>Bundle.getBundleContext()</tt>) for performing various tasks, such as installing bundles. Note that the Felix framework also provides the <tt>felix.systembundle.activators</tt> property that serves a similar purpose, but is not standard. After the <tt>init()</tt> method completes, the follow actions have been performed:</p>
 
 <ul>
 	<li>Event handling is enabled.</li>
@@ -257,20 +258,20 @@
 generally want to more than that, such as automatically installing and
 starting bundles when you start the framework instance. The default
 Felix launcher defines reusable functionality to automatically install
-and/or start bundles upon framework startup; see the <a href="http://felix.apache.org/site/apache-felix-framework-usage-documentation.html#ApacheFelixFrameworkUsageDocumentation-configuringfelix">usage document</a> for more information on configuring Felix and on the various configuration properties.</p>
+and/or start bundles upon framework startup; see the <a href="http://felix.apache.org/site/apache-felix-framework-usage-documentation.html#ApacheFelixFrameworkUsageDocumentation-configuringfelix">usage document</a> for more information on configuring the Felix framework and on the various configuration properties.</p>
 
-<p>The remainder of this section describes how the standard Felix
-launcher works as well as how to create a custom launcher for Felix.</p>
+<p>The remainder of this section describes how the standard Felix launcher works as well as how to create a custom launcher.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-standardlauncher"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-StandardFelixFrameworkLauncher"></a>Standard Felix Framework Launcher</h2>
 
-<p>The standard Felix launcher is very simple and is not intended to
-solve every possible requirement; it is intended to work for most
-standard situations. Most special launching requirements should be
-resolved by creating a custom launcher. This section describes how the
-standard launcher works. The following code represents the complete <tt>main()</tt> method of the standard launcher, each numbered comment will be described in more detail below:</p>
+<p>The standard Felix framework launcher is very simple and is not
+intended to solve every possible requirement; it is intended to work
+for most standard situations. Most special launching requirements
+should be resolved by creating a custom launcher. This section
+describes how the standard launcher works. The following code
+represents the complete <tt>main()</tt> method of the standard launcher, each numbered comment will be described in more detail below:</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">static</span> void main(<span class="code-object">String</span>[] args) <span class="code-keyword">throws</span> Exception
@@ -295,6 +296,7 @@
             cacheDir = args[i];
         }
     }
+
     <span class="code-keyword">if</span> ((args.length &gt; 3) || (expectBundleDir &amp;&amp; bundleDir == <span class="code-keyword">null</span>))
     {
         <span class="code-object">System</span>.out.println(<span class="code-quote">"Usage: [-b &lt;bundle-deploy-dir&gt;] [&lt;bundle-cache-dir&gt;]"</span>);
@@ -331,7 +333,7 @@
 </span>    <span class="code-object">String</span> enableHook = configProps.getProperty(SHUTDOWN_HOOK_PROP);
     <span class="code-keyword">if</span> ((enableHook == <span class="code-keyword">null</span>) || !enableHook.equalsIgnoreCase(<span class="code-quote">"<span class="code-keyword">false</span>"</span>))
     {
-        <span class="code-object">Runtime</span>.getRuntime().addShutdownHook(<span class="code-keyword">new</span> <span class="code-object">Thread</span>() {
+        <span class="code-object">Runtime</span>.getRuntime().addShutdownHook(<span class="code-keyword">new</span> <span class="code-object">Thread</span>(<span class="code-quote">"Felix Shutdown Hook"</span>) {
             <span class="code-keyword">public</span> void run()
             {
                 <span class="code-keyword">try</span>
@@ -350,10 +352,6 @@
         });
     }
 
-    <span class="code-comment">// Print welcome banner.
-</span>    <span class="code-object">System</span>.out.println(<span class="code-quote">"\nWelcome to Felix"</span>);
-    <span class="code-object">System</span>.out.println(<span class="code-quote">"================\n"</span>);
-
     <span class="code-keyword">try</span>
     {
         <span class="code-comment">// (8) Create an instance and initialize the framework.
@@ -373,7 +371,7 @@
     {
         <span class="code-object">System</span>.err.println(<span class="code-quote">"Could not create framework: "</span> + ex);
         ex.printStackTrace();
-        <span class="code-object">System</span>.exit(-1);
+        <span class="code-object">System</span>.exit(0);
     }
 }
 </pre>
@@ -392,7 +390,7 @@
 specified. The file is a standard Java properties file, but it also
 supports property substitution using <tt>${&lt;property-name</tt>} syntax. Property substitution can be nested; only system properties will be used for substitution.</li>
 	<li>Load any configuration properties specified in the <tt>config.properties</tt> file; this file is typically located in the <tt>conf/</tt> directory of the Felix installation directory, but it can be specified directly using the <tt>felix.config.properties</tt>
-system property. This file is used to configure the Felix instance
+system property. This file is used to configure the framework instance
 created by the launcher. The file is a standard Java properties file,
 but it also supports property substitution using "<tt>${&lt;property-name&gt;</tt>}"
 syntax. Property substitution can be nested; configuration and system
@@ -427,20 +425,18 @@
 
 <p>This section creates a bare-bones launcher to demonstrate the
 minimum requirements for creating an interactive launcher for the Felix
-framework. This example uses the standard Felix shell bundles for
-interactivity, but any other bundles could be used instead. For
-example, the shell service and telnet bundles could be used to launch
-Felix and make it remotely accessible.</p>
-
-<p>This example launcher project has the following directory structure:</p>
+framework. This example uses the standard Gogo shell bundles for
+interactivity, but any other bundles could be used instead. This
+example launcher project has the following directory structure:</p>
 
 <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
 <pre>launcher/
    lib/
-      org.apache.felix.main-2.0.0.jar
+      org.apache.felix.main-3.0.0.jar
    bundle/
-      org.apache.felix.shell-1.4.0.jar
-      org.apache.felix.shell.tui-1.4.0.jar
+      org.apache.felix.gogo.command-0.6.0.jar
+      org.apache.felix.gogo.runtime-0.6.0.jar
+      org.apache.felix.gogo.shell-0.6.0.jar
    src/
       example/
          Main.java
@@ -454,10 +450,10 @@
 then it would be possible to use the framework JAR file instead of the
 main JAR file. The <tt>bundle/</tt> directory contains the shell
 service and textual shell interface bundles that will be used for
-interacting with the framework instance. Note: If you do not launch
-Felix with interactive bundles, it will appear as if the framework
+interacting with the framework instance. Note: If you do not launch the
+framework with interactive bundles, it will appear as if the framework
 instance is hung, but it is actually just sitting there waiting for
-someone to tell it to do something. The <tt>src/example/</tt> directory contains the following <tt>Main.java</tt> file, which is a very simplistic Felix launcher.</p>
+someone to tell it to do something. The <tt>src/example/</tt> directory contains the following <tt>Main.java</tt> file, which is a very simplistic framework launcher.</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java"><span class="code-keyword">package</span> example;
@@ -473,8 +469,8 @@
     <span class="code-keyword">public</span> <span class="code-keyword">static</span> void main(<span class="code-object">String</span>[] argv) <span class="code-keyword">throws</span> Exception
     {
         <span class="code-comment">// Print welcome banner.
-</span>        <span class="code-object">System</span>.out.println(<span class="code-quote">"\nWelcome to Felix."</span>);
-        <span class="code-object">System</span>.out.println(<span class="code-quote">"=================\n"</span>);
+</span>        <span class="code-object">System</span>.out.println(<span class="code-quote">"\nWelcome to My Launcher"</span>);
+        <span class="code-object">System</span>.out.println(<span class="code-quote">"======================\n"</span>);
 
         <span class="code-keyword">try</span>
         {
@@ -552,8 +548,8 @@
 auto-deploy directory and any referenced from the auto-install/start
 properties. Since we are using an empty configuration, the auto-deploy
 directory is the <tt>bundle</tt> directory in the current directory
-and there are no auto properties. Therefore, in this case, the two
-shell bundles will be installed.</p>
+and there are no auto properties. Therefore, in this case, the shell
+bundles will be installed.</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java">            m_fwk.start();
@@ -582,7 +578,7 @@
 <p>The following command compiles the launcher when run from the root directory of the launcher project:</p>
 
 <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>javac -d . -classpath lib/org.apache.felix.main-2.0.0.jar src/example/Main.java
+<pre>javac -d . -classpath lib/org.apache.felix.main-3.0.0.jar src/example/Main.java
 </pre>
 </div></div>
 
@@ -592,7 +588,7 @@
 the root directory of the launcher project:</p>
 
 <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>java -cp .:lib/org.apache.felix.main-2.0.0.jar example.Main
+<pre>java -cp .:lib/org.apache.felix.main-3.0.0.jar example.Main
 </pre>
 </div></div>
 
@@ -600,15 +596,15 @@
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-embedding"></a></p>
 
-<h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-EmbeddingFelix"></a>Embedding Felix</h1>
+<h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-EmbeddingtheFelixFramework"></a>Embedding the Felix Framework</h1>
 
-<p>Embedding Felix into a host application is a simple way to provide a
-sophisticated extensibility mechanism (i.e., a plugin system) to the
-host application. Embedding Felix is very similar to launching Felix as
-described above, the main difference is that the host application
-typically wants to interact with the framework instance and/or
-installed bundles/services from the outside. This is fairly easy to
-achieve with Felix, but there are some subtle issues to understand.
+<p>Embedding the Felix framework into a host application is a simple
+way to provide a sophisticated extensibility mechanism (i.e., a plugin
+system) to the host application. Embedding the Felix framework is very
+similar to launching it as described above, the main difference is that
+the host application typically wants to interact with the framework
+instance and/or installed bundles/services from the outside. This is
+fairly easy to achieve, but there are some subtle issues to understand.
 This section presents the mechanisms for embedding Felix into a host
 application and the issues in doing so.</p>
 
@@ -616,13 +612,17 @@
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-Host/FelixInteraction"></a>Host/Felix Interaction</h2>
 
-<p>In the section on <a href="#ApacheFelixFrameworkLaunchingandEmbedding-launching">launching</a> Felix above, the <tt>Felix</tt> accepts a configuration property called <tt>felix.systembundle.activators</tt>,
+<p>In the section on <a href="#ApacheFelixFrameworkLaunchingandEmbedding-launching">launching</a> the framework above, the <tt>Felix</tt> class accepts a configuration property called <tt>felix.systembundle.activators</tt>,
 which is a list of bundle activator instances. These bundle activator
 instances provide a convenient way for host applications to interact
-with the Felix framework. The ability offered by these activators can
-also be accomplished by invoking <tt>init()</tt> on the framework instance and the using <tt>getBundleContext()</tt> to get the System Bundle's context, but it can be more convenient to use an activator instance.</p>
+with the Felix framework.</p>
 
-<p>Each activator instance passed into the constructor effectively becomes part of the System Bundle. This means that the <tt>start()</tt>/<tt>stop()</tt> methods of each activator instance in the list gets invoked when the System Bundle's activator <tt>start()</tt>/<tt>stop()</tt> methods gets invoked, respectively. Each activator instance will be given the System Bundle's <tt>BundleContext</tt> object so that they can interact with the framework. Consider following snippet of a bundle activator:</p>
+<div class="panelMacro"><table class="warningMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-framework-launching-and-embedding_files/forbidden.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b>WARNING</b><br>The <tt>felix.systembundle.activators</tt>
+configuration property is specific to the Felix framework
+implementation. If you want your code to work with other framework
+implementations, you should call <tt>init()</tt> on the framework instance and use <tt>getBundleContext()</tt> directly. Otherwise, the approach would be very similar.</td></tr></tbody></table></div>
+
+<p>Each activator instance passed into the constructor effectively becomes part of the system bundle. This means that the <tt>start()</tt>/<tt>stop()</tt> methods of each activator instance in the list gets invoked when the system bundle's activator <tt>start()</tt>/<tt>stop()</tt> methods gets invoked, respectively. Each activator instance will be given the system bundle's <tt>BundleContext</tt> object so that they can interact with the framework. Consider following snippet of a bundle activator:</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java"><span class="code-keyword">public</span> class HostActivator <span class="code-keyword">implements</span> BundleActivator
@@ -651,9 +651,9 @@
 </pre>
 </div></div>
 
-<p>Given the above bundle activator, it is now possible to embed Felix
-into a host application and interact with it as the following snippet
-illustrates:</p>
+<p>Given the above bundle activator, it is now possible to embed the
+Felix framework into a host application and interact with it as the
+following snippet illustrates:</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java"><span class="code-keyword">public</span> class HostApplication
@@ -664,7 +664,7 @@
     <span class="code-keyword">public</span> HostApplication()
     {
         <span class="code-comment">// Create a configuration property map.
-</span>        Map configMap = <span class="code-keyword">new</span> HashMap();
+</span>        Map config = <span class="code-keyword">new</span> HashMap();
         <span class="code-comment">// Create host activator;
 </span>        m_activator = <span class="code-keyword">new</span> HostActivator();
         List list = <span class="code-keyword">new</span> ArrayList();
@@ -675,7 +675,7 @@
         {
             <span class="code-comment">// Now create an instance of the framework with
 </span>            <span class="code-comment">// our configuration properties.
-</span>            m_felix = <span class="code-keyword">new</span> Felix(configMap);
+</span>            m_felix = <span class="code-keyword">new</span> Felix(config);
             <span class="code-comment">// Now start Felix instance.
 </span>            m_felix.start();
         }
@@ -698,14 +698,14 @@
         <span class="code-comment">// Shut down the felix framework when stopping the
 </span>        <span class="code-comment">// host application.
 </span>        m_felix.stop();
-        m_felix.waitForStop();
+        m_felix.waitForStop(0);
     }
 }
 </pre>
 </div></div>
 
 <p>Notice how the <tt>HostApplication.getInstalledBundles()</tt> method
-uses its activator instance to get access to the System Bundle's
+uses its activator instance to get access to the system bundle's
 context in order to interact with the embedded Felix framework
 instance. This approach provides the foundation for all interaction
 between the host application and the embedded framework instance.</p>
@@ -732,7 +732,7 @@
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java"><span class="code-keyword">package</span> host.service.lookup;
 
-<span class="code-keyword">public</span> class Lookup
+<span class="code-keyword">public</span> <span class="code-keyword">interface</span> Lookup
 {
     <span class="code-keyword">public</span> <span class="code-object">Object</span> lookup(<span class="code-object">String</span> name);
 }
@@ -855,7 +855,7 @@
         <span class="code-comment">// Shut down the felix framework when stopping the
 </span>        <span class="code-comment">// host application.
 </span>        m_felix.stop();
-        m_felix.waitForStop();
+        m_felix.waitForStop(0);
     }
 }
 </pre>
@@ -1016,11 +1016,10 @@
 
     <span class="code-keyword">public</span> void shutdownApplication()
     {
-    {
         <span class="code-comment">// Shut down the felix framework when stopping the
 </span>        <span class="code-comment">// host application.
 </span>        m_felix.stop();
-        m_felix.waitForStop();
+        m_felix.waitForStop(0);
     }
 }
 </pre>
@@ -1047,7 +1046,7 @@
 
 <h3><a name="ApacheFelixFrameworkLaunchingandEmbedding-OtherApproaches"></a>Other Approaches</h3>
 
-<p>The <a href="http://code.google.com/p/transloader/" rel="nofollow">Transloader</a> project is another attempt at dealing with issues of classes loaded from different class loaders and may be of interest.</p>
+<p>The <a href="http://code.google.com/p/transloader/" class="external-link" rel="nofollow">Transloader</a> project is another attempt at dealing with issues of classes loaded from different class loaders and may be of interest.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-caveat"></a></p>
 
@@ -1062,6 +1061,6 @@
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-Feedback"></a>Feedback</h2>
 
-<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" rel="nofollow">users@felix.apache.org</a>.</p>
+<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" class="external-link" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" class="external-link" rel="nofollow">users@felix.apache.org</a>.</p>
     </div>
-  </body></html>
+  </body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-framework-launching-and-embedding_files/button.html b/main.distribution/doc/apache-felix-framework-launching-and-embedding_files/button.html
index 1a464ef..8503c58 100644
--- a/main.distribution/doc/apache-felix-framework-launching-and-embedding_files/button.html
+++ b/main.distribution/doc/apache-felix-framework-launching-and-embedding_files/button.html
@@ -1,5 +1,5 @@
 <html><head>
 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><!-- ads start -->
-</head><body><a href="http://www.us.apachecon.com/c/acus2009/" target="_blank"><img src="button_data/2009-usa-125x125.png" title="ApacheCon US 2009" border="0" height="125" width="125"></a>
+</head><body><a href="http://www.us.apachecon.com/" target="_blank"><img src="button_data/2010-na-125x125.png" title="ApacheCon NA 2010" border="0" height="125" width="125"></a>
 <!-- ads end -->
 </body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-framework-launching-and-embedding_files/button_data/2010-na-125x125.png b/main.distribution/doc/apache-felix-framework-launching-and-embedding_files/button_data/2010-na-125x125.png
new file mode 100644
index 0000000..90bd87b
--- /dev/null
+++ b/main.distribution/doc/apache-felix-framework-launching-and-embedding_files/button_data/2010-na-125x125.png
Binary files differ
diff --git a/main.distribution/doc/apache-felix-framework-usage-documentation.html b/main.distribution/doc/apache-felix-framework-usage-documentation.html
index b3b725c..c10d7d0 100644
--- a/main.distribution/doc/apache-felix-framework-usage-documentation.html
+++ b/main.distribution/doc/apache-felix-framework-usage-documentation.html
@@ -12,18 +12,19 @@
 <ul>
 	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
 	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
-	<li><a href="http://felix.apache.org/site/downloads.cgi" rel="nofollow">downloads</a></li>
+	<li><a href="http://felix.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">downloads</a></li>
 	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
 	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
 	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
-	<li><a href="http://www.apache.org/" rel="nofollow">asf</a></li>
-	<li><a href="http://www.apache.org/foundation/sponsorship.html" rel="nofollow">sponsorship</a></li>
-	<li><a href="http://www.apache.org/foundation/thanks.html" rel="nofollow">sponsors</a>
+	<li><a href="http://www.apache.org/" class="external-link" rel="nofollow">asf</a></li>
+	<li><a href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">sponsorship</a></li>
+	<li><a href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">sponsors</a>
 <!-- ApacheCon Ad -->
 <iframe src="apache-felix-framework-usage-documentation_files/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
 <p style="height: 100px;">
 <!-- ApacheCon Ad -->
-</p></li></ul> </div>
+</p></li></ul>
+    </div>
     <div class="main">
 <h1><a name="ApacheFelixFrameworkUsageDocumentation-ApacheFelixFrameworkUsageDocumentation"></a>Apache Felix Framework Usage Documentation</h1>
 
@@ -65,14 +66,14 @@
 </pre>
 </div></div>
 
-<p>The framework launcher starts the framework and installs a bundles contained in the <tt>bundle</tt>
+<p>The framework launcher starts the framework and installs and starts all bundles contained in the <tt>bundle</tt>
 directory of the current directory. By default, the bundle directory
-contains a simple text-based shell to interact with the framework.
-Bundles installed into the framework are copied into a bundle cache
-directory for subsequent executions. By default, the framework creates
-a cache directory, called <tt>felix-cache</tt>, in your current working directory; this behavior is configurable, see the <a href="http://felix.apache.org/site/apache-felix-framework-bundle-cache.html" title="Apache Felix Framework Bundle Cache">Apache Felix Framework Bundle Cache</a> document for more details.</p>
-
-<p>If you want to start the framework using a different bundle cache directory, you can do so like this:</p>
+contains shell-related bundles providing a textual user interface to
+interact with the framework. Bundles installed into the framework are
+copied into a bundle cache directory for subsequent executions. By
+default, the framework creates a cache directory, called <tt>felix-cache</tt>,
+in your current working directory. If you want to start the framework
+using a different bundle cache directory, you can do so like this:</p>
 
 <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
 <pre>java -jar bin/felix.jar &lt;cache-path&gt;
@@ -83,23 +84,23 @@
 bundle cache. If you specify a relative cache path, then it will be
 treated as relative to the current working directory.</p>
 
-<div class="panelMacro"><table class="infoMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-framework-usage-documentation_files/information.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b>Useful Information</b><br><p>Previous
+<div class="panelMacro"><table class="infoMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-framework-usage-documentation_files/information.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b>Useful Information</b><br>Previous
 versions of the framework prompted for a profile name when executed.
 The profile name was used to create a directory inside <tt>.felix/</tt>
 in the user home directory. This approach allowed users to have
 different sets of bundles for different purposes, e.g., testing,
 production, etc. If this behavior is still desired, it is very easy to
-mimic. Modify <tt>conf/config.properties</tt> to include "<tt>felix.cache.rootdir=${user.home}/.felix</tt>". Now, if you start Felix with something like "<tt>java -jar bin/felix.jar foo</tt>", it will use "<tt>${user.home}/.felix/foo/</tt>" as the bundle cache directory, where "<tt>${user.home</tt>}" is automatically substituted with the appropriate system property by the launcher.</p></td></tr></tbody></table></div>
+mimic. Modify <tt>conf/config.properties</tt> to include "<tt>felix.cache.rootdir=${user.home}/.felix</tt>". Now, if you start Felix with something like "<tt>java -jar bin/felix.jar foo</tt>", it will use "<tt>${user.home}/.felix/foo/</tt>" as the bundle cache directory, where "<tt>${user.home</tt>}" is automatically substituted with the appropriate system property by the launcher.</td></tr></tbody></table></div>
 
 <p><a name="ApacheFelixFrameworkUsageDocumentation-frameworkshell"></a></p>
 
 <h2><a name="ApacheFelixFrameworkUsageDocumentation-FrameworkShell"></a>Framework Shell</h2>
 
-<p>The main way to interact with the framework is via its shell. Felix'
-shell is implemented as an OSGi service that, be default, uses a simple
-text-based user interface. After starting the framework, type <tt>help</tt> into the shell to see the list of the available commands and <tt>help &lt;command-name&gt;</tt> to get help for a specific command.</p>
+<p>The main way to interact with the framework is via the supplied Apache Felix Gogo shell. After starting the framework, type <tt>help</tt> into the shell to see the list of the available commands and <tt>help &lt;command-name&gt;</tt> to get help for a specific command.</p>
 
-<p>To install bundles, use the <tt>install</tt> command, which is described in more detail in the next <a href="#ApacheFelixFrameworkUsageDocumentation-installingbundles">sub-section</a>. To view all currently installed bundles, use the <tt>ps</tt> command. To stop the framework type <tt>stop 0</tt>
+<div class="panelMacro"><table class="infoMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-framework-usage-documentation_files/information.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b>Useful Information</b><br>In Gogo, command names are made up of two parts: <tt>&lt;scope&gt;:&lt;name&gt;</tt>. This is similar to a fully qualified class name in Java and is used to avoid naming collisions. If the <tt>&lt;name&gt;</tt> portion of the command is unique, then you only need to type it. If not, then you must either type the full <tt>&lt;scope&gt;:&lt;name&gt;</tt> or arrange the scope search path accordingly.</td></tr></tbody></table></div>
+
+<p>To install bundles, use the <tt>felix:install</tt> command, which is described in more detail in the next <a href="#ApacheFelixFrameworkUsageDocumentation-installingbundles">sub-section</a>. To list installed bundles, use the <tt>felix:lb</tt> command. To stop the framework type <tt>stop 0</tt>
 to stop the System Bundle; any installed bundles will automatically be
 reloaded (and potentially restarted) the next time you launch with the
 associated cache.</p>
@@ -115,57 +116,59 @@
 implement a service that other bundles can use; bundles can only use
 functionality from other bundles through shared services and packages.</p>
 
-<p>The Felix framework is packaged with three bundles, which are located in the <tt>bundle/</tt>
-directory of the framework installation directory. There are bundles
-for the Felix shell service, a text-based shell service user interface,
-and a bundle repository service. In addition to these bundles, the
-bundle repository services provides access to other bundles for easy
-installation. The bundle repository service provides a shell command,
-named <tt>obr</tt>, to access available bundles; refer to the <a href="http://felix.apache.org/site/apache-felix-osgi-bundle-repository.html" title="Apache Felix OSGi Bundle Repository">Apache Felix OSGi Bundle Repository</a> for more information.</p>
+<p>The Felix framework distribution comes with three bundles, which are located in the <tt>bundle/</tt>
+directory of the framework distribution installation directory. These
+bundles include the Gogo Runtime (core command processing
+functionality), Gogo Shell (text-based shell user interface), Gogo
+Command (basic set of commands), and Bundle Repository (a bundle
+repository service). In addition to these bundles, the bundle
+repository provides access to other bundles for easy installation. The
+bundle repository service provides a set of shell commands in the <tt>obr:*</tt> scope; refer to the <a href="http://felix.apache.org/site/apache-felix-osgi-bundle-repository.html" title="Apache Felix OSGi Bundle Repository">Apache Felix OSGi Bundle Repository</a> for more information.</p>
 
 <p>Before installing any bundles, it is important to understand how
 bundles are manually deployed into the framework. Bundles are deployed
 in two stages; first they are installed, then they are started. To
-install a bundle use the <tt>install</tt> shell command followed by a bundle URL. For example, to install a <tt>bundle.jar</tt> bundle you type (assuming you have started Felix from its installation directory):</p>
+install a bundle use the <tt>felix:install</tt> shell command followed by a bundle URL. For example, to install a <tt>bundle.jar</tt> bundle you type:</p>
 
 <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>install file:/path/to/bundle/bundle.jar
+<pre>felix:install file:/path/to/bundle/bundle.jar
 </pre>
 </div></div>
 
-<p>Once a bundle is installed, it can then be started by using the <tt>start</tt> command and the bundle identifier of the desired bundle. The <tt>ps</tt>
-shell command is used to list all installed bundles and to obtain the
-bundle's identifier. The following Felix shell session capture
-illustrates how to start the <tt>bundle.jar</tt> bundle:</p>
+<p>Once a bundle is installed, it can then be started by using the <tt>felix:start</tt> command and the bundle identifier of the desired bundle. The <tt>felix:lb</tt>
+command is used to list installed bundles and to obtain the bundle's
+identifier. The following Felix shell session illustrates how to start
+the <tt>bundle.jar</tt> bundle:</p>
 
 <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>-&gt; install [file:bundle/simple]
--&gt; ps
+<pre>g! install file:/path/to/bundle/bundle.jar
+g! lb
 START LEVEL 1
-   ID   State         Level  Name
-[   0] [Active     ] [    0] System Bundle (2.0.0)
-[   1] [Active     ] [    1] Shell Service (1.4.0)
-[   2] [Active     ] [    1] Shell TUI (1.4.0)
-[   3] [Active     ] [    1] Bundle Repository (1.4.0)
-[   4] [Installed  ] [    1] Bundle Example (1.0.0)
--&gt; start 4
-Hello from Bundle 4.
--&gt;
+   ID|State      |Level|Name
+    0|Active     |    0|System Bundle (3.0.0)
+    1|Active     |    1|Apache Felix Bundle Repository (1.6.2)
+    2|Active     |    1|Apache Felix Gogo Command (0.6.0)
+    3|Active     |    1|Apache Felix Gogo Runtime (0.6.0)
+    4|Active     |    1|Apache Felix Gogo Shell (0.6.0)
+    5|Installed  |    1|Example Bundle (1.0.0)
+g! start 5
+Hello from Bundle 5.
+g!
 </pre>
 </div></div>
 
-<p>The <tt>stop</tt> command is used to stop a bundle and the <tt>uninstall</tt> command is used to remove a bundle from the bundle cache. As an alternative to using the <tt>install</tt> and <tt>start</tt> commands explicitly, it is also possible to install and start a bundle in one step by using the <tt>start</tt> command with a bundle URL.</p>
+<p>The <tt>felix:stop</tt> command is used to stop a bundle and the <tt>felix:uninstall</tt> command is used to remove a bundle from the bundle cache. As an alternative to using the <tt>felix:install</tt> and <tt>felix:start</tt> commands explicitly, it is also possible to install and start a bundle in one step by using the <tt>felix:start</tt> command with a bundle URL.</p>
 
-<p>Bundles can be updated using the <tt>update</tt> command. The update
-command allows you to specify an URL from which to retrieve the updated
-bundle, but if one is not specified it will try to update the bundle
-from the bundle's <tt>Bundle-UpdateLocation</tt> manifest attribute, if present, or the bundle's original location URL.</p>
+<p>Bundles can be updated using the <tt>felix:update</tt> command. The
+update command allows you to specify an URL from which to retrieve the
+updated bundle, but if one is not specified it will try to update the
+bundle from the bundle's <tt>Bundle-UpdateLocation</tt> manifest attribute, if present, or the bundle's original location URL.</p>
 
-<p><b>Important:</b> When you <tt>update</tt> or <tt>uninstall</tt> a
-bundle, the changes appear to take effect immediately, but in reality
-the changes are only partially enacted. If a bundle is updated or
+<div class="panelMacro"><table class="infoMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-framework-usage-documentation_files/information.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b>Useful Information</b><br>When you use <tt>felix:update</tt> or <tt>felix:uninstall</tt>,
+the changes appear to take effect immediately, but in reality the
+changes are only partially enacted. If a bundle is updated or
 uninstalled and it was exporting packages, these packages are not
-removed until the framework is refreshed using the <tt>PackageAdmin</tt> service. The Felix shell offers a convenient <tt>refresh</tt> command for this purpose.</p>
+removed until the framework is refreshed using the <tt>PackageAdmin</tt> service. The Felix shell offers a convenient <tt>refresh</tt> command for this purpose. This is the correct behavior as defined by the OSGi specification.</td></tr></tbody></table></div>
 
 <p>For an introduction to writing bundles and services, refer to the Felix bundle tutorial.</p>
 
@@ -174,9 +177,9 @@
 <h3><a name="ApacheFelixFrameworkUsageDocumentation-WebProxyIssueswhenInstallingBundles"></a>Web Proxy Issues when Installing Bundles</h3>
 
 <p>If you use a proxy for Web access, then you may run into difficulty
-using the Felix shell to install bundles from a remote URL. To remedy
-this situation, certain system properties must be set to make Felix
-work with your proxy. These properties are:</p>
+using the Gogo shell to install bundles from remote URLs. To remedy
+this situation, certain system properties must be set to make the
+framework work with your proxy. These properties are:</p>
 
 <ul>
 	<li><tt>http.proxyHost</tt> - the name of the proxy host.</li>
@@ -206,20 +209,20 @@
 </div></div>
 
 <p>Specifying an auto-deploy directory replaces the default directory,
-it does not augment it. The default deployment actions performed on the
-bundles in the auto-deploy directory are: install, update, and start.
-Both the location of the auto-deploy directory and the deployment
-actions performed can be controlled by the following configuration
-properties, respectively:</p>
+it does not augment it. The framework distribution is configured to
+install and start bundles in the auto-deploy directory. Both the
+location of the auto-deploy directory and the deployment actions
+performed can be controlled by the following configuration properties,
+respectively:</p>
 
 <ul>
 	<li><tt>felix.auto.deploy.dir</tt> - Specifies the auto-deploy directory from which bundles are automatically deploy at framework startup. The default is the <tt>bundle/</tt> directory of the current directory.</li>
 	<li><tt>felix.auto.deploy.action</tt>
-- Specifies the auto-deploy actions to be found on bundle JAR files
-found in the auto-deploy directory. The possible actions are <tt>install</tt>, <tt>update</tt>, <tt>start</tt>, and <tt>uninstall</tt>.
+- Specifies the auto-deploy actions to be performed on the bundle JAR
+files found in the auto-deploy directory. The possible actions are <tt>install</tt>, <tt>update</tt>, <tt>start</tt>, and <tt>uninstall</tt>.
 If no actions are specified, then the auto-deploy directory is not
-processed. There is no default value for this property, but the default
-<tt>config.properties</tt> file installed with the Felix framework sets the value to <tt>install</tt>, <tt>update</tt>, and <tt>start</tt>.</li>
+processed (i.e., it is disabled). There is no default value for this
+property, but the default <tt>config.properties</tt> file installed with the Felix framework distribution sets the value to: <tt>install, start</tt></li>
 </ul>
 
 
@@ -233,9 +236,7 @@
 properties to alter their default behavior. The framework can only be
 configured by passing properties into its constructor, but the launcher
 provides a mechanism to configure the framework via a property file.
-The launcher The Felix framework uses properties to configure certain
-aspects of its behavior. The framework launcher reads configuration
-properties from <tt>conf/config.properties</tt>. This file uses standard Java property file syntax.</p>
+The framework launcher reads configuration properties from <tt>conf/config.properties</tt>. This file uses standard Java property file syntax.</p>
 
 <p>The launcher also supports setting system properties via the <tt>conf/system.properties</tt>
 file. This file is purely for convenience when you need to repeatedly
@@ -244,7 +245,7 @@
 framework configuration properties found in the system properties into
 the framework configuration map, also for your convenience.</p>
 
-<p>It is possible to specify a different locations for these property files for the system properties file by using the <tt>felix.config.properties</tt> and <tt>felix.system.properties</tt> system properties when executing the framework. For example:</p>
+<p>It is possible to specify different locations for these property files using the <tt>felix.config.properties</tt> and <tt>felix.system.properties</tt> system properties when executing the framework. For example:</p>
 
 <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
 <pre>java -Dfelix.config.properties=file:/home/rickhall/config.properties -jar bin/felix.jar
@@ -253,13 +254,13 @@
 
 <p>Configuration and system properties are accessible at run time via <tt>BundleContext.getProperty()</tt>, but configuration properties override system properties.</p>
 
-<p>The following configuration properties are specifically for the launcher:</p>
+<p>The following configuration properties are for the launcher:</p>
 
 <ul>
 	<li><tt>felix.auto.deploy.dir</tt> - Specifies the auto-deploy directory from which bundles are automatically deploy at framework startup. The default is the <tt>bundle/</tt> directory of the current directory.</li>
 	<li><tt>felix.auto.deploy.action</tt>
-- Specifies the auto-deploy actions to be found on bundle JAR files
-found in the auto-deploy directory. The possible actions are <tt>install</tt>, <tt>update</tt>, <tt>start</tt>, and <tt>uninstall</tt>. An undefined or blank value is equivalent to disabling auto-deploy processing.</li>
+- Specifies a comma-delimited list of actions to be performed on bundle
+JAR files found in the auto-deploy directory. The possible actions are <tt>install</tt>, <tt>update</tt>, <tt>start</tt>, and <tt>uninstall</tt>. An undefined or blank value is equivalent to disabling auto-deploy processing.</li>
 	<li><tt>felix.auto.install.&lt;n&gt;</tt> - Space-delimited list of bundle URLs to automatically install when Felix is started, where <tt>&lt;n&gt;</tt> is the start level into which the bundle will be installed (e.g., <tt>felix.auto.install.2</tt>).</li>
 	<li><tt>felix.auto.start.&lt;n&gt;</tt> - Space-delimited list of bundle URLs to automatically install and start when Felix is started, where <tt>&lt;n&gt;</tt> is the start level into which the bundle will be installed (e.g., <tt>felix.auto.start.2</tt>).</li>
 	<li><tt>felix.shutdown.hook</tt>
@@ -268,7 +269,7 @@
 </ul>
 
 
-<p>The following configuration properties are specifically for the framework (properties starting with "<tt>felix</tt>" are specific to Felix, while those starting with "<tt>org.osgi</tt>" are standard OSGi properties):</p>
+<p>The following configuration properties are for the framework (properties starting with "<tt>felix</tt>" are specific to Felix, while those starting with "<tt>org.osgi</tt>" are standard OSGi properties):</p>
 
 <ul>
 	<li><tt>org.osgi.framework.storage</tt> - Sets the directory to use as the bundle cache; by default bundle cache directory is <tt>felix-cache</tt>
@@ -276,7 +277,7 @@
 name. The directory name can be either absolute or relative. Relative
 directory names are relative to the current working directory. The
 specified directory will be created if it does not exist.</li>
-	<li><tt>felix.cache.rootdir</tt> - Sets the root directory to use to calculate the bundle cache directory for relative directory names. If <tt>org.osgi.framework.storage</tt>
+	<li><tt>felix.cache.rootdir</tt> - Sets the root directory used to calculate the bundle cache directory for relative directory names. If <tt>org.osgi.framework.storage</tt>
 is set to a relative name, by default it is relative to the current
 working directory. If this property is set, then it will be calculated
 as being relative to the specified root directory.</li>
@@ -287,18 +288,19 @@
 of the internal buffer of the disk cache for performance reasons.</li>
 	<li><tt>org.osgi.framework.system.packages</tt>
 - Specifies a comma-delimited list of packages that should be exported
-via the System Bundle from the parent class loader. The framework will
-set this to a reasonable default. If the value is specified, it
+via the System Bundle from the framework class loader. The framework
+will set this to a reasonable default. If the value is specified, it
 replaces any default value.</li>
 	<li><tt>org.osgi.framework.system.packages.extra</tt>
 - Specifies a comma-delimited list of packages that should be exported
-via the System Bundle from the parent class loader in addition to the
-packages in <tt>org.osgi.framework.system.packages</tt>. The default value is empty. If a value is specified, it is appended to the list of default or specified packages in <tt>org.osgi.framework.system.packages</tt>.</li>
+via the System Bundle from the framework class loader in addition to
+the packages in <tt>org.osgi.framework.system.packages</tt>. The default value is empty. If a value is specified, it is appended to the list of default or specified packages in <tt>org.osgi.framework.system.packages</tt>.</li>
 	<li><tt>org.osgi.framework.bootdelegation</tt>
 - Specifies a comma-delimited list of packages that should be made
 implicitly available to all bundles from the parent class loader. It is
 recommended not to use this property since it breaks modularity. The
 default value is empty.</li>
+	<li><tt>org.osgi.framework.bundle.parent</tt> - Specifies which class loader is used for boot delegation. Possible values are: <tt>boot</tt> for the boot class loader, <tt>app</tt> for the application class loader, <tt>ext</tt> for the extension class loader, and <tt>framework</tt> for the framework's class loader. The default is <tt>boot</tt>.</li>
 	<li><tt>felix.bootdelegation.implicit</tt>
 - Specifies whether the framework should try to guess when to
 implicitly boot delegate to ease integration with external code. The
@@ -322,17 +324,16 @@
 	<li><tt>org.osgi.framework.startlevel.beginning</tt> - The initial start level of the framework once it starts execution; the default value is 1.</li>
 	<li><tt>felix.startlevel.bundle</tt> - The default start level for newly installed bundles; the default value is 1.</li>
 	<li><tt>felix.service.urlhandlers</tt> - Flag to indicate whether to activate the URL Handlers service for the framework instance; the default value is "<tt>true</tt>". Activating the URL Handlers service will result in the <tt>URL.setURLStreamHandlerFactory()</tt> and <tt>URLConnection.setContentHandlerFactory()</tt> being called.</li>
-	<li><tt>felix.fragment.validation</tt> - Determines if installing unsupported fragment bundles throws an exception or logs a warning. Possible values are "<tt>exception</tt>" or "<tt>warning</tt>". The default value is "<tt>exception</tt>".</li>
 </ul>
 
 
-<p>The Felix framework installation contains a default <tt>conf/config.properties</tt> file for automatically starting the shell-related bundles.</p>
+<p>The Felix framework distribution contains a default <tt>conf/config.properties</tt>.</p>
 
 <p><a name="ApacheFelixFrameworkUsageDocumentation-migrating"></a></p>
 
 <h3><a name="ApacheFelixFrameworkUsageDocumentation-MigratingfromEarlierVersions"></a>Migrating from Earlier Versions</h3>
 
-<p>Apache Felix Framework <tt>1.4.0</tt> introduced some configuration property changes. This section describes the differences from older versions of the framework.</p>
+<p>Apache Felix Framework <tt>2.0.0</tt> introduced some configuration property changes. This section describes the differences from older versions of the framework.</p>
 
 <ul>
 	<li><b>Removed</b>
@@ -340,7 +341,8 @@
 		<li><tt>felix.embedded.execution</tt> - No longer needed, since the framework now never calls <tt>System.exit()</tt>; the creator of the framework is now always responsible for exiting the VM.</li>
 		<li><tt>felix.strict.osgi</tt> - No longer needed, since all non-specification features have been removed.</li>
 		<li><tt>felix.cache.dir</tt> - No longer needed, since Felix no longer uses bundle cache profiles for saving sets of bundles.</li>
-		<li><tt>felix.cache.profile</tt> - No longer needed, since Felix no longer uses bundle cache profiles for saving sets of bundles.</li>
+		<li><tt>felix.cache.profile</tt> - No longer needed, since the framework no longer uses bundle cache profiles for saving sets of bundles.</li>
+		<li><tt>felix.fragment.validation</tt> - No longer needed, since the framework supports fragments.</li>
 	</ul>
 	</li>
 	<li><b>Renamed</b>
@@ -354,7 +356,6 @@
 		<li><tt>org.osgi.framework.system.packages.extra</tt> - New property, as described above, added to align with standard framework API.</li>
 		<li><tt>org.osgi.framework.storage.clean</tt> - New property, as described above, added to align with standard framework API.</li>
 		<li><tt>felix.cache.rootdir</tt> - Introduced as a result of removing bundle profiles to help resolve relative bundle cache directories.</li>
-		<li><tt>felix.fragment.validation</tt> - Introduced to control fragment validation, since the default behavior introduced in <tt>1.2.0</tt> of throwing an exception for fragments using unsupported features was causing issues for some users.</li>
 	</ul>
 	</li>
 </ul>
@@ -366,26 +367,26 @@
 
 <p><a name="ApacheFelixFrameworkUsageDocumentation-propertysubstitution"></a></p>
 
-<h3><a name="ApacheFelixFrameworkUsageDocumentation-SystemPropertySubstituion"></a>System Property Substituion</h3>
+<h3><a name="ApacheFelixFrameworkUsageDocumentation-SystemPropertySubstitution"></a>System Property Substitution</h3>
 
 <p>It is possible to use system properties to specify the values of properties in the <tt>conf/config.properties</tt> file. This is achieved through system property substitution, which is instigated by using <tt>${&lt;property&gt;</tt>} syntax, where <tt>&lt;property&gt;</tt>
-is the name of a system property to substitute. When such a property
-value is retrieved by a bundle, the system property value will be
-substituted into the bundle property value as appropriate. It is
-possible to have nested system property substitution, in which case the
-inner-most property is substituted first, then the next inner most,
-until reaching the outer most.</p>
+is the name of a system property to substitute. When the properties
+file is read, any such property values are substituted as appropriate.
+It is possible to have nested system property substitution, in which
+case the inner-most property is substituted first, then the next inner
+most, until reaching the outer most.</p>
 
 <p><a name="ApacheFelixFrameworkUsageDocumentation-configuringbundles"></a></p>
 
 <h2><a name="ApacheFelixFrameworkUsageDocumentation-ConfiguringBundles"></a>Configuring Bundles</h2>
 
-<p>Some bundles use properties to configure certain aspects of their behavior. As an example, the default URL for the <tt>cd</tt> command of the shell service can be specified using the property <tt>felix.shell.baseurl</tt>.
-It is a good idea, when implementing bundles, to parameterize them with
-properties where appropriate. To learn about the configuration options
-for specific bundles, refer to the documentation that accompanies them.</p>
+<p>Some bundles use properties to configure certain aspects of their
+behavior. It is a good idea, when implementing bundles, to parameterize
+them with properties where appropriate. To learn about the
+configuration options for specific bundles, refer to the documentation
+that accompanies them.</p>
 
-<p>Bundle properties are also defined in the <tt>conf/config.properties</tt> property file. Any property placed in this file will be accessible via <tt>BundleContext.getProperty()</tt>
+<p>Bundle properties may also be defined in the <tt>conf/config.properties</tt> property file. Any property placed in this file will be accessible via <tt>BundleContext.getProperty()</tt>
 at run time. The property file uses the standard Java property file
 syntax (i.e., attribute-value pairs). For information on changing the
 default location of this file, refer to the section on <a href="#ApacheFelixFrameworkUsageDocumentation-configuringframework">configuring Felix</a>.</p>
@@ -394,6 +395,6 @@
 
 <h2><a name="ApacheFelixFrameworkUsageDocumentation-Feedback"></a>Feedback</h2>
 
-<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" rel="nofollow">users@felix.apache.org</a>.</p>
+<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" class="external-link" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" class="external-link" rel="nofollow">users@felix.apache.org</a>.</p>
     </div>
-  </body></html>
+  </body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-framework-usage-documentation_files/button.html b/main.distribution/doc/apache-felix-framework-usage-documentation_files/button.html
index 1a464ef..8503c58 100644
--- a/main.distribution/doc/apache-felix-framework-usage-documentation_files/button.html
+++ b/main.distribution/doc/apache-felix-framework-usage-documentation_files/button.html
@@ -1,5 +1,5 @@
 <html><head>
 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><!-- ads start -->
-</head><body><a href="http://www.us.apachecon.com/c/acus2009/" target="_blank"><img src="button_data/2009-usa-125x125.png" title="ApacheCon US 2009" border="0" height="125" width="125"></a>
+</head><body><a href="http://www.us.apachecon.com/" target="_blank"><img src="button_data/2010-na-125x125.png" title="ApacheCon NA 2010" border="0" height="125" width="125"></a>
 <!-- ads end -->
 </body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-framework-usage-documentation_files/button_data/2010-na-125x125.png b/main.distribution/doc/apache-felix-framework-usage-documentation_files/button_data/2010-na-125x125.png
new file mode 100644
index 0000000..90bd87b
--- /dev/null
+++ b/main.distribution/doc/apache-felix-framework-usage-documentation_files/button_data/2010-na-125x125.png
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-tui_files/apache.png b/main.distribution/doc/apache-felix-gogo-Dateien/apache.png
similarity index 100%
rename from main.distribution/doc/apache-felix-shell-tui_files/apache.png
rename to main.distribution/doc/apache-felix-gogo-Dateien/apache.png
Binary files differ
diff --git a/main.distribution/doc/apache-felix-gogo-Dateien/button.html b/main.distribution/doc/apache-felix-gogo-Dateien/button.html
new file mode 100644
index 0000000..8503c58
--- /dev/null
+++ b/main.distribution/doc/apache-felix-gogo-Dateien/button.html
@@ -0,0 +1,5 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><!-- ads start -->
+</head><body><a href="http://www.us.apachecon.com/" target="_blank"><img src="button_data/2010-na-125x125.png" title="ApacheCon NA 2010" border="0" height="125" width="125"></a>
+<!-- ads end -->
+</body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-gogo-Dateien/button_data/2010-na-125x125.png b/main.distribution/doc/apache-felix-gogo-Dateien/button_data/2010-na-125x125.png
new file mode 100644
index 0000000..90bd87b
--- /dev/null
+++ b/main.distribution/doc/apache-felix-gogo-Dateien/button_data/2010-na-125x125.png
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-tui_files/logo.png b/main.distribution/doc/apache-felix-gogo-Dateien/logo.png
similarity index 100%
rename from main.distribution/doc/apache-felix-shell-tui_files/logo.png
rename to main.distribution/doc/apache-felix-gogo-Dateien/logo.png
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-tui_files/site.css b/main.distribution/doc/apache-felix-gogo-Dateien/site.css
similarity index 100%
rename from main.distribution/doc/apache-felix-shell-tui_files/site.css
rename to main.distribution/doc/apache-felix-gogo-Dateien/site.css
diff --git a/main.distribution/doc/apache-felix-gogo.html b/main.distribution/doc/apache-felix-gogo.html
new file mode 100644
index 0000000..3d18fe2
--- /dev/null
+++ b/main.distribution/doc/apache-felix-gogo.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head>
+
+
+  
+    <title>Apache Felix - Apache Felix Gogo</title>
+    <link rel="stylesheet" href="apache-felix-gogo-Dateien/site.css" type="text/css" media="all">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  </head><body>
+    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-gogo-Dateien/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-gogo-Dateien/apache.png" border="0"></a></div></div>
+    <div class="menu">
+<ul>
+	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
+	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
+	<li><a href="http://felix.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">downloads</a></li>
+	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
+	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
+	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
+	<li><a href="http://www.apache.org/" class="external-link" rel="nofollow">asf</a></li>
+	<li><a href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">sponsorship</a></li>
+	<li><a href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">sponsors</a>
+<!-- ApacheCon Ad -->
+<iframe src="apache-felix-gogo-Dateien/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
+<p style="height: 100px;">
+<!-- ApacheCon Ad -->
+</p></li></ul>
+    </div>
+    <div class="main">
+<h1><a name="ApacheFelixGogo-ApacheFelixGogo"></a>Apache Felix Gogo</h1>
+
+<p>Apache Felix Gogo is a subproject of Apache Felix implementing the
+OSGi RFC 147, which describes a standard shell for OSGi-based
+environments. See <a href="http://felix.apache.org/site/rfc-147-overview.html" title="RFC 147 Overview">RFC 147 Overview</a> for more information.</p>
+
+<h2><a name="ApacheFelixGogo-UsingGogowiththeFelixFramework"></a>Using Gogo with the Felix Framework</h2>
+
+<p>The Gogo subproject consists of three bundles:</p>
+
+<ol>
+	<li><b>runtime</b> - implements the core command processing functionality.</li>
+	<li><b>shell</b> - provides a simple textual user interface to interact with the command processor.</li>
+	<li><b>command</b> - implements a set of basic commands.</li>
+</ol>
+
+
+<p>As of the Apache Felix Framework 3.0.0, Gogo is included as the
+default shell in the framework distribution. To use it, you just start
+the framework like normal:</p>
+
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>$ cd felix-framework-3.0.0
+$ java -jar bin/felix.jar
+_______________
+Welcome to Apache Felix Gogo
+
+g! lb
+START LEVEL 1
+   ID|State      |Level|Name
+    0|Active     |    0|System Bundle (3.0.0)
+    1|Active     |    1|Apache Felix Bundle Repository (1.6.2)
+    2|Active     |    1|Apache Felix Gogo Command (0.6.0)
+    3|Active     |    1|Apache Felix Gogo Runtime (0.6.0)
+    4|Active     |    1|Apache Felix Gogo Shell (0.6.0)
+g! 
+</pre>
+</div></div>
+
+<p>Gogo shell integration in the framework distribution is also discussed in the <a href="http://felix.apache.org/site/apache-felix-framework-usage-documentation.html" title="Apache Felix Framework Usage Documentation">framework usage document</a></p>
+    </div>
+  </body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-shell-service.html b/main.distribution/doc/apache-felix-shell-service.html
deleted file mode 100644
index f2198d8..0000000
--- a/main.distribution/doc/apache-felix-shell-service.html
+++ /dev/null
@@ -1,439 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head>
-
-
-  
-    <title>Apache Felix - Apache Felix Shell Service</title>
-    <link rel="stylesheet" href="apache-felix-shell-service_files/site.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-  </head><body>
-    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-shell-service_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-shell-service-Dateien/apache.png" border="0"></a></div></div>
-    <div class="menu">
-<ul>
-	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
-	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
-	<li><a href="http://felix.apache.org/site/downloads.cgi" rel="nofollow">downloads</a></li>
-	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
-	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
-	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
-	<li><a href="http://www.apache.org/" rel="nofollow">asf</a></li>
-	<li><a href="http://www.apache.org/foundation/sponsorship.html" rel="nofollow">sponsorship</a></li>
-	<li><a href="http://www.apache.org/foundation/thanks.html" rel="nofollow">sponsors</a>
-<!-- ApacheCon Ad -->
-<iframe src="apache-felix-shell-service_files/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
-<p style="height: 100px;">
-<!-- ApacheCon Ad -->
-</p></li></ul> </div>
-    <div class="main">
-<h1><a name="ApacheFelixShellService-ApacheFelixShellService"></a>Apache Felix Shell Service</h1>
-
-<ul>
-	<li><a href="#ApacheFelixShellService-overview">Overview</a></li>
-	<li><a href="#ApacheFelixShellService-service">How the Shell Service Works</a></li>
-	<li><a href="#ApacheFelixShellService-commands">How Commands Work</a></li>
-	<li><a href="#ApacheFelixShellService-creating">Creating a Command</a></li>
-	<li><a href="#ApacheFelixShellService-security">Security and the Shell Service</a></li>
-	<li><a href="#ApacheFelixShellService-feedback">Feedback</a></li>
-</ul>
-
-
-<p><a name="ApacheFelixShellService-overview"></a></p>
-
-<h2><a name="ApacheFelixShellService-Overview"></a>Overview</h2>
-
-<p>In order to interact with Felix it is necessary to have some sort of
-interactive shell that allows you to issue commands to the framework
-and to obtain information from it. The OSGi specification does not
-define how an OSGi framework should provide this interactivity. Felix
-defines a shell service for creating and executing arbitrary commands.
-The shell service does not define a user interface, only a service API.</p>
-
-<p>The benefit of the Felix shell service approach is that it is possible to:</p>
-
-<ul>
-	<li>have multiple shell user interfaces (e.g., textual and graphical),</li>
-	<li>add custom commands to the shell (i.e., bundles can make commands available via the shell service), and</li>
-	<li>use the shell service from other bundles/services.</li>
-</ul>
-
-
-<p>The remainder of this document describes how the shell service works
-and how to create custom commands for it. This document does not
-describe how to use the command shell, nor does it describe the
-text-based or GUI-based user interfaces that are available for the
-shell.</p>
-
-<p><a name="ApacheFelixShellService-service"></a></p>
-
-<h2><a name="ApacheFelixShellService-HowtheShellServiceWorks"></a>How the Shell Service Works</h2>
-
-<p>The Felix shell service is intended to be a simple, but extensible
-shell service that can have multiple user interface implementations,
-all of which are independent from the Felix framework. The shell
-service is currently not intended to be sophisticated, rather it is
-just a mechanism to execute commands. The shell service maintains a
-list of command services, each of which have a unique command name. The
-shell service is defined by the following service interface:</p>
-
-<style type="text/css">
-@import url(/confluence/download/resources/confluence.ext.code:code/shStyles.css);
-</style>
-<!--[if IE]>
-<style type="text/css">
-    .code textarea, .code input { padding: 0 !important; }
-</style>
-<![endif]-->
-<script class="javascript" src="apache-felix-shell-service_files/shCore.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushCSharp.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushPhp.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushJScript.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushVb.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushSql.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushXml.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushShell.html"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushDelphi.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushPython.js"></script>
-<script class="javascript" src="apache-felix-shell-service_files/shBrushJava.js"></script>
-<div class="code">
-<textarea name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">package org.apache.felix.shell;
-
-public interface ShellService
-{
-    public String[] getCommands();
-    public String getCommandUsage(String name);
-    public String getCommandDescription(String name);
-    public ServiceReference getCommandReference(String name);
-    public void executeCommand(
-        String commandLine, PrintStream out, PrintStream err)
-        throws Exception;
-}</textarea>
-<script class="javascript">
-    if(!window.newcodemacro_initialised)
-    {
-        window.newcodemacro_initialised = true;
-        window.oldonloadmethod = window.onload;
-        window.onload = function(){
-            dp.SyntaxHighlighter.HighlightAll('newcodemacro');
-            if(window.oldonloadmethod)
-            {
-                window.oldonloadmethod();
-            }
-        }
-    }
-
-</script>
-</div>
-
-
-<p>Using the shell service interface, it is possible to access and
-execute available commands. The shell service methods perform the
-following functions:</p>
-
-<ul>
-	<li><tt>getCommands()</tt> - returns an array of strings that correspond to the names of the installed shell commands.</li>
-	<li><tt>getCommandUsage()</tt> - returns the command usage string for a particular command name</li>
-	<li><tt>getCommandDescription()</tt> - returns a short description for a particular command name.</li>
-	<li><tt>getCommandReference()</tt> - returns the service reference for a particular command name.</li>
-	<li><tt>executeCommand()</tt> - executes a particular command using the specified command line and print streams.</li>
-</ul>
-
-
-<p>Most of the shell service methods require no explanation except for
-the executeCommand() method. Even though this method is the most
-complex, it is still fairly simplistic. The assumption of the shell
-service is that a command line will be typed by the user (or perhaps
-constructed by a GUI) and passed into it for execution. The shell
-service interprets the command line in a very simplistic fashion; it
-takes the leading string of characters terminated by a space character
-(not including it) and assumes that this leading token is the command
-name. Consider the following command line:</p>
-
-<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>update 3 http://www.foo.com/bar.jar
-</pre>
-</div></div>
-
-<p>The shell service interprets this as an <tt>update</tt> command and
-will search for a command service with the same name. If a
-corresponding command service is not found, then it will print an error
-message to the error print stream. If a corresponding command service
-is found, then it will pass the entire command line string and the
-print streams into the <tt>executeCommand()</tt> method of the command service (for a more detailed description of command services, see the next section).</p>
-
-<p>Notice that there is no method to add commands to the shell service
-interface. This is because commands are implemented as OSGi services
-and the shell service listens for service events and when a command
-service registers/unregisters it automatically updates its list of
-commands accordingly.</p>
-
-<p><a name="ApacheFelixShellService-commands"></a></p>
-
-<h2><a name="ApacheFelixShellService-HowCommandsWork"></a>How Commands Work</h2>
-
-<p>All commands available in the shell service are implemented as OSGi
-services. The advantage of this approach is two-fold: the shell service
-can leverage OSGi service events to maintain its list of available
-commands and the set available commands is dynamically extendable by
-installed bundles. The command service interface is defined as follows:</p>
-
-<div class="code">
-<textarea name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">package org.apache.felix.shell;
-
-public interface Command
-{
-    public String getName();
-    public String getUsage();
-    public String getShortDescription();
-    public void execute(String line, PrintStream out, PrintStream err);
-}</textarea>
-<script class="javascript">
-    if(!window.newcodemacro_initialised)
-    {
-        window.newcodemacro_initialised = true;
-        window.oldonloadmethod = window.onload;
-        window.onload = function(){
-            dp.SyntaxHighlighter.HighlightAll('newcodemacro');
-            if(window.oldonloadmethod)
-            {
-                window.oldonloadmethod();
-            }
-        }
-    }
-
-</script>
-</div>
-
-
-<p>The semantics of the command service methods are:</p>
-
-<ul>
-	<li><tt>getName()</tt> - returns the name of the command; this must not contain whitespace and must be unique.</li>
-	<li><tt>getUsage()</tt>
-- returns the usage string of the command; this should be one line and
-as short as possible (this is used for generating the help command
-output).</li>
-	<li><tt>getShortDescription()</tt> - returns a short
-description of the command; this should be one line and as short as
-possible (this is used for generating the help command output).</li>
-	<li><tt>execute()</tt> - executes the command's functionality using supplied command line and print streams.</li>
-</ul>
-
-
-<p><a name="ApacheFelixShellService-creating"></a></p>
-
-<h2><a name="ApacheFelixShellService-CreatingaCommand"></a>Creating a Command</h2>
-
-<p>The following example creates a simple version of the <tt>start</tt> command.</p>
-
-<div class="code">
-<textarea name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">package test;
-
-import java.io.PrintStream;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.util.StringTokenizer;
-
-import org.osgi.framework.*;
-import org.apache.felix.shell.ShellService;
-import org.apache.felix.shell.Command;
-
-public class MyStartCommandImpl implements Command
-{
-    private BundleContext m_context = null;
-
-    public MyStartCommandImpl(BundleContext context)
-    {
-        m_context = context;
-    }
-
-    public String getName()
-    {
-        return "mystart";
-    }
-
-    public String getUsage()
-    {
-        return "mystart &lt;id&gt; [&lt;id&gt; ...]";
-    }
-
-    public String getShortDescription()
-    {
-        return "start bundle(s).";
-    }
-
-    public void execute(String s, PrintStream out, PrintStream err)
-    {
-        StringTokenizer st = new StringTokenizer(s, " ");
-
-        // Ignore the command name.
-        st.nextToken();
-
-        // There should be at least one bundle id.
-        if (st.countTokens() &gt;= 1)
-        {
-            while (st.hasMoreTokens())
-            {
-                String id = st.nextToken().trim();
-
-                try {
-                    long l = Long.valueOf(id).longValue();
-                    Bundle bundle = m_context.getBundle(l);
-                    if (bundle != null)
-                    {
-                        bundle.start();
-                    }
-                    else
-                    {
-                        err.println("Bundle ID " + id + " is invalid.");
-                    }
-                } catch (NumberFormatException ex) {
-                    err.println("Unable to parse id '" + id + "'.");
-                } catch (BundleException ex) {
-                    if (ex.getNestedException() != null)
-                        err.println(ex.getNestedException().toString());
-                    else
-                        err.println(ex.toString());
-                } catch (Exception ex) {
-                    err.println(ex.toString());
-                }
-            }
-        }
-        else
-        {
-            err.println("Incorrect number of arguments");
-        }
-    }
-}</textarea>
-<script class="javascript">
-    if(!window.newcodemacro_initialised)
-    {
-        window.newcodemacro_initialised = true;
-        window.oldonloadmethod = window.onload;
-        window.onload = function(){
-            dp.SyntaxHighlighter.HighlightAll('newcodemacro');
-            if(window.oldonloadmethod)
-            {
-                window.oldonloadmethod();
-            }
-        }
-    }
-
-</script>
-</div>
-
-
-<p>A bundle activator class is needed for packaging the command servce; the bundle activator registers the command service in its <tt>start()</tt> method. Note: You do not need one activator per command, a single activator can register any number of commands.</p>
-
-<div class="code">
-<textarea name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">package test;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class MyStartActivator implements BundleActivator
-{
-    private transient BundleContext m_context = null;
-
-    public void start(BundleContext context)
-    {
-        m_context = context;
-
-        // Register the command service.
-        context.registerService(
-            org.apache.felix.shell.Command.class.getName(),
-            new MyStartCommandImpl(m_context), null);
-    }
-
-    public void stop(BundleContext context)
-    {
-        // Services are automatically unregistered so
-        // we don't have to unregister the factory here.
-    }
-}</textarea>
-<script class="javascript">
-    if(!window.newcodemacro_initialised)
-    {
-        window.newcodemacro_initialised = true;
-        window.oldonloadmethod = window.onload;
-        window.onload = function(){
-            dp.SyntaxHighlighter.HighlightAll('newcodemacro');
-            if(window.oldonloadmethod)
-            {
-                window.oldonloadmethod();
-            }
-        }
-    }
-
-</script>
-</div>
-
-
-<p>To compile these classes you will need to have the <tt>framework.jar</tt> file on your class path. Compile all of the source files using a command like:</p>
-
-<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>java -d c:\classes *.java
-</pre>
-</div></div>
-
-<p>This command compiles all of the source files and outputs the generated class files into a subdirectory of the <tt>c:\classes</tt> directory, called test, named after the package of the source files; for the above command to work, the <tt>c:\classes</tt>
-directory must exist. Once you have compiled all of the above classes,
-you need to create a bundle JAR file of the generated package
-directory. The bundle JAR file needs a manifest, so create a file
-called <tt>manifest.mf</tt> with the following contents:</p>
-
-<div class="code">
-<textarea name="newcodemacro" class="java:nocontrols:nogutter" rows="10" readonly="readonly">Bundle-Name: My Start Command
-Bundle-Description: A 'start' command for the shell service.
-Bundle-Activator: test.MyStartActivator
-Bundle-ClassPath: .
-Import-Package: org.apache.felix.shell</textarea>
-<script class="javascript">
-    if(!window.newcodemacro_initialised)
-    {
-        window.newcodemacro_initialised = true;
-        window.oldonloadmethod = window.onload;
-        window.onload = function(){
-            dp.SyntaxHighlighter.HighlightAll('newcodemacro');
-            if(window.oldonloadmethod)
-            {
-                window.oldonloadmethod();
-            }
-        }
-    }
-
-</script>
-</div>
-
-
-<p>To create the bundle JAR file, issue the command:</p>
-
-<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>jar cfm mystart.jar manifest.mf -C c:\classes test
-</pre>
-</div></div>
-
-<p>This command creates a JAR file using the manifest you created and
-includes all of the classes in the test directory inside of the <tt>c:\classes</tt>
-directory. Once the bundle JAR file is created, you are ready to add
-the command service to the shell service; simply start Felix and
-install and start the bundle created by the above command. By doing so,
-the new <tt>mystart</tt> command is made available via the shell service.</p>
-
-<p><a name="ApacheFelixShellService-security"></a></p>
-
-<h2><a name="ApacheFelixShellService-SecurityandtheShellService"></a>Security and the Shell Service</h2>
-
-<p>The shell service security handling is quite simple, all security is
-handled by the standard OSGi framework mechanisms. For example, if a
-bundle should not be able to register a shell service, then it should
-not be given the corresponding service permission. Security handling
-may change in future release after some experience is gained through
-usage.</p>
-
-<p><a name="ApacheFelixShellService-feedback"></a></p>
-
-<h2><a name="ApacheFelixShellService-Feedback"></a>Feedback</h2>
-
-<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" rel="nofollow">users@felix.apache.org</a>.</p>
-    </div>
-  </body></html>
diff --git a/main.distribution/doc/apache-felix-shell-service_files/apache-felix-small.png b/main.distribution/doc/apache-felix-shell-service_files/apache-felix-small.png
deleted file mode 100644
index 95bfa5e..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/apache-felix-small.png
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-service_files/apache.png b/main.distribution/doc/apache-felix-shell-service_files/apache.png
deleted file mode 100644
index 5132f65..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/apache.png
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-service_files/button.html b/main.distribution/doc/apache-felix-shell-service_files/button.html
deleted file mode 100644
index d6a5da8..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/button.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><head><!-- ads start --></head><body><a href="http://www.us.apachecon.com/us2008/" target="_blank"><img src="button_data/2008-usa-125x125.png" title="ApacheCon US 2008" border="0" height="125" width="125"></a>
-<!-- ads end -->
-</body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-shell-service_files/button_data/2008-usa-125x125.png b/main.distribution/doc/apache-felix-shell-service_files/button_data/2008-usa-125x125.png
deleted file mode 100644
index 3d6008b..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/button_data/2008-usa-125x125.png
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-service_files/linkext7.gif b/main.distribution/doc/apache-felix-shell-service_files/linkext7.gif
deleted file mode 100644
index f2dd2dc..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/linkext7.gif
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-service_files/logo.png b/main.distribution/doc/apache-felix-shell-service_files/logo.png
deleted file mode 100644
index dccbddc..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/logo.png
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-service_files/mail_small.gif b/main.distribution/doc/apache-felix-shell-service_files/mail_small.gif
deleted file mode 100644
index a3b7d9f..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/mail_small.gif
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-service_files/site.css b/main.distribution/doc/apache-felix-shell-service_files/site.css
deleted file mode 100644
index 959ab0a..0000000
--- a/main.distribution/doc/apache-felix-shell-service_files/site.css
+++ /dev/null
@@ -1,25 +0,0 @@
-/* @override http://felix.apache.org/site/media.data/site.css */
-
-body { background-color: #ffffff; color: #3b3b3b; font-family: Tahoma, Arial, sans-serif; font-size: 10pt; line-height: 140% }
-h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #000000; line-height: 100%; margin-top: 0px}
-h1 { font-size: 200% }
-h2 { font-size: 175% }
-h3 { font-size: 150% }
-h4 { font-size: 140% }
-h5 { font-size: 130% }
-h6 { font-size: 120% }
-a { color: #1980af }
-a:visited { color: #1980af }
-a:hover { color: #1faae9 }
-.title { position: absolute; left: 1px; right: 1px; top:25px; height: 81px; background: url(http://felix.apache.org/site/media.data/gradient.png) repeat-x; background-position: bottom; }
-.logo { position: absolute; width: 15em; height: 81px; text-align: center; }
-.header { text-align: right; margin-right: 20pt; margin-top: 30pt;}
-.menu { border-top: 10px solid #f9bb00; position: absolute; top: 107px; left: 1px; width: 15em; bottom: 0px; padding: 0px; background-color: #fcfcfc }
-.menu ul { background-color: #fdf5d9; list-style: none; padding-left: 4em; margin-top: 0px; padding-top: 2em; padding-bottom: 2em; margin-left: 0px; color: #4a4a43}
-.menu a { text-decoration: none; color: #4a4a43 }
-.main { position: absolute; border-top: 10px solid #cde0ea; top: 107px; left: 15em; right: 1px; margin-left: 2px; padding-right: 4em; padding-left: 1em; padding-top: 1em;}
-.code { background-color: #eeeeee; border: solid 1px black; padding: 0.5em }
-.code-keyword { color: #880000 }
-.code-quote { color: #008800 }
-.code-object { color: #0000dd }
-.code-java { margin: 0em }
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-shell-tui.html b/main.distribution/doc/apache-felix-shell-tui.html
deleted file mode 100644
index 5f393db..0000000
--- a/main.distribution/doc/apache-felix-shell-tui.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html><head><title>Apache Felix - Apache Felix Shell TUI</title>
-
-
-  
-    
-    <link rel="stylesheet" href="apache-felix-shell-tui_files/site.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body>
-    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-shell-tui_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-shell-tui_files/apache.png" border="0"></a></div></div>
-    <div class="menu">
-<ul>
-	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
-	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
-	<li><span class="nobr"><a href="http://felix.apache.org/site/downloads.cgi" title="Visit page outside Confluence" rel="nofollow">downloads<sup><img class="rendericon" src="apache-felix-shell-tui_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
-	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
-	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
-	<li><span class="nobr"><a href="http://www.apache.org/" title="Visit page outside Confluence" rel="nofollow">asf<sup><img class="rendericon" src="apache-felix-shell-tui_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><span class="nobr"><a href="http://www.apache.org/foundation/sponsorship.html" title="Visit page outside Confluence" rel="nofollow">sponsorship<sup><img class="rendericon" src="apache-felix-shell-tui_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></li>
-	<li><span class="nobr"><a href="http://www.apache.org/foundation/thanks.html" title="Visit page outside Confluence" rel="nofollow">sponsors<sup><img class="rendericon" src="apache-felix-shell-tui_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span>
-<!-- ApacheCon Ad -->
-<iframe src="apache-felix-shell-tui_files/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
-<p style="height: 100px;">
-<!-- ApacheCon Ad -->
-</p></li></ul> </div>
-    <div class="main">
-<h1><a name="ApacheFelixShellTUI-ApacheFelixShellTUI"></a>Apache Felix Shell TUI</h1>
-<p>The Apache Felix Shell TUI (Textual User Interface) sub-project provides a simple, text-based user interface for the <a href="/confluence/display/FELIX/Apache+Felix+Shell+Service" title="Apache Felix Shell Service">Apache Felix Shell Service</a>. This bundle is not of much use by itself and should always be used in conjunction with the shell service bundle. The shell service and shell TUI bundles are used by the standard Felix launcher to provide a means for interacting with the launched Felix framework instance. The shell TUI bundle is not required to use the shell service; it is possible to use it programmatically, via a GUI interface, or a remote access interface.</p>
-
-<p>Shell TUI supports one configuration property:</p>
-
-<ul>
-	<li><tt>shell.tui.checkinput</tt> &#45; This is a simple workaround for a JRE bug which can appear when running Shell TUI inside Eclipse; the default value is <tt>false</tt>. Note that if this workaround is enabled, when running from the command line under Windows, character input is not echoed back to the screen.</li>
-</ul>
-
-
-<p>To set this property, add it to the <tt>conf/config.properties</tt> file of your Felix installation.</p>
-
-    </div>
-  </body></html>
diff --git a/main.distribution/doc/apache-felix-shell-tui_files/apache-felix-small.png b/main.distribution/doc/apache-felix-shell-tui_files/apache-felix-small.png
deleted file mode 100644
index 95bfa5e..0000000
--- a/main.distribution/doc/apache-felix-shell-tui_files/apache-felix-small.png
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-tui_files/button.html b/main.distribution/doc/apache-felix-shell-tui_files/button.html
deleted file mode 100644
index d6a5da8..0000000
--- a/main.distribution/doc/apache-felix-shell-tui_files/button.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><head><!-- ads start --></head><body><a href="http://www.us.apachecon.com/us2008/" target="_blank"><img src="button_data/2008-usa-125x125.png" title="ApacheCon US 2008" border="0" height="125" width="125"></a>
-<!-- ads end -->
-</body></html>
\ No newline at end of file
diff --git a/main.distribution/doc/apache-felix-shell-tui_files/button_data/2008-usa-125x125.png b/main.distribution/doc/apache-felix-shell-tui_files/button_data/2008-usa-125x125.png
deleted file mode 100644
index 3d6008b..0000000
--- a/main.distribution/doc/apache-felix-shell-tui_files/button_data/2008-usa-125x125.png
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/apache-felix-shell-tui_files/linkext7.gif b/main.distribution/doc/apache-felix-shell-tui_files/linkext7.gif
deleted file mode 100644
index f2dd2dc..0000000
--- a/main.distribution/doc/apache-felix-shell-tui_files/linkext7.gif
+++ /dev/null
Binary files differ
diff --git a/main.distribution/doc/changelog_framework.txt b/main.distribution/doc/changelog_framework.txt
index 47c699a..a95ad4a 100644
--- a/main.distribution/doc/changelog_framework.txt
+++ b/main.distribution/doc/changelog_framework.txt
@@ -1,3 +1,47 @@
+Changes from 2.0.5 to 3.0.0
+---------------------------
+** Sub-task
+    * [FELIX-2036] - Improve resolver's generic capability/requirement model
+    * [FELIX-2037] - Improve resolver performance by making solution space searching smarter
+
+** Bug
+    * [FELIX-995] - JRE packages are exported with wrong version
+    * [FELIX-1967] - Freeze finding consistent class space
+    * [FELIX-2080] - Updating bundles when debugging switched on might result in a deadlock with 100% CPU usage
+    * [FELIX-2150] - URLStreamHandlerProxy.setURL may not set query component correctly
+    * [FELIX-2172] - Extremely long resolve stage when running CXF-DOSGi system test
+    * [FELIX-2177] - Fragment bundles not loaded after second start when using autodeploy
+    * [FELIX-2271] - CLONE -NPE "name can't be null" when trying to install a bundle in Felix 2.0.3
+    * [FELIX-2273] - getClassLoader-permission required accessing classes from dynamically loaded class
+    * [FELIX-2281] - Bundle id order affects fragment resolution success
+    * [FELIX-2317] - Possible NPE for jars with null Manifest
+    * [FELIX-2321] - BundleException type should be properly set when installing a duplicate bundle
+    * [FELIX-2332] - Lots of contention on ExtensionManager.openConnection(URL)
+    * [FELIX-2335] - Bundle.loadClass() for system bundle doesn't obey boot delegation
+    * [FELIX-2356] - extension bundle cannot load class from embed jar
+    * [FELIX-2383] - Bundles are restarted during start level change
+    * [FELIX-2392] - Felix framework uses a Java5 method
+
+** Improvement
+    * [FELIX-1210] - Allow jars with missing intermediate entries to be handled as if they were present in Bundle.getEntryPaths
+    * [FELIX-1797] - Customizable Framework startup message
+    * [FELIX-2035] - Reimplement framework resolver
+    * [FELIX-2039] - Reimplement standard OSGi LDAP filter to use new filter solution for resolver
+    * [FELIX-2040] - Modify framework service registry to use resolver's new capability/requirement model
+    * [FELIX-2041] - Look into using generics in framework code
+    * [FELIX-2042] - Use Gogo as the default shell for the framework distribution
+    * [FELIX-2324] - Support execution environment so that OBR works properly
+    * [FELIX-2336] - Variable substitution in configuration files should ignore mismatched delimiters
+
+Changes from 2.0.4 to 2.0.5
+---------------------------
+** Bug
+    * [FELIX-1753] - The start level should check that the bundle still exists before starting it to avoid an ugly exception
+    * [FELIX-2087] - NPE "name can't be null" when trying to install a bundle in Felix 2.0.3
+    * [FELIX-2107] - Bundle.findEntries() matches '*<filePattern>' instead of '<filePattern>'
+    * [FELIX-2195] - Using URLDecoder.decode on locations is wrong
+    * [FELIX-2222] - Failure to reinstall a cached bundle will corrupt the bundle cache
+
 Changes from 2.0.3 to 2.0.4
 ---------------------------
 
diff --git a/main.distribution/doc/changelog_gogo.txt b/main.distribution/doc/changelog_gogo.txt
new file mode 100644
index 0000000..91accb0
--- /dev/null
+++ b/main.distribution/doc/changelog_gogo.txt
@@ -0,0 +1,25 @@
+Release Notes gogo 0.6.0
+------------------------
+
+** Bug
+    * [FELIX-1473] - [gogo] The syntax does not provide a way to call methods on a string
+    * [FELIX-1474] - [gogo] result of commands is implicitly written to pipe
+    * [FELIX-1493] - [gogo] automatic expansion of $args in Closure stops direct access to $args list
+    * [FELIX-2337] - [gogo] no way to access array[] elements produced by assignment
+    * [FELIX-2375] - [gogo] when supplied args can't be coerced, the error message prints the arg values, rather than their types
+    * [FELIX-2380] - [gogo] lock contention in piped writer when reader doesn't read all input
+
+** Improvement
+    * [FELIX-1487] - Support for commands on multiple lines
+    * [FELIX-2328] - [gogo] tidy-up runtime to remove optional code etc
+    * [FELIX-2339] - [gogo] add support for running scripts
+    * [FELIX-2342] - [gogo] remove old felix command adaptor
+
+** New Feature
+    * [FELIX-2363] - [Gogo] Add annotations for creating commands with optional and out-of-order arguments
+
+** Task
+    * [FELIX-1670] - [gogo] launcher bundle not required
+    * [FELIX-1889] - Gogo should depend on the official OSGi jars
+    * [FELIX-2334] - [Gogo] Use org.apache.felix as Maven groupId
+    * [FELIX-2367] - [Gogo] Use org.apache.felix namespace to avoid any perceived legal issues
diff --git a/main.distribution/doc/changelog_main.txt b/main.distribution/doc/changelog_main.txt
index 92e05be..df5e5d7 100644
--- a/main.distribution/doc/changelog_main.txt
+++ b/main.distribution/doc/changelog_main.txt
@@ -1,3 +1,18 @@
+Changes from 2.0.5 to 3.0.0
+---------------------------
+
+** Improvement
+    * Update to latest framework version 3.0.0
+    * [FELIX-1797] - Customizable Framework startup message
+    * [FELIX-2042] - Use Gogo as the default shell for the framework distribution
+    * [FELIX-2336] - Variable substitution in configuration files should ignore mismatched delimiters
+
+Changes from 2.0.4 to 2.0.5
+---------------------------
+
+** Improvement
+    * Update to latest framework version 2.0.5
+
 Changes from 2.0.3 to 2.0.4
 ---------------------------
 
diff --git a/main.distribution/doc/changelog_shell.tui.txt b/main.distribution/doc/changelog_shell.tui.txt
deleted file mode 100644
index dc1a7ee..0000000
--- a/main.distribution/doc/changelog_shell.tui.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-Changes from 1.2.0 to 1.4.0
----------------------------
-
-** Bug
-    * [FELIX-619] - Shell.TUI causes "new java.io.ServerSocket()" to hang
-    * [FELIX-1137] - [PATCH] Shell TUI pom has incorrect Bundle-DocURL tag
-
-** Improvments
-    * Update to shell 1.4.0
-
-Changes from 1.0.2 to 1.2.0
----------------------------
-
-** Bug
-    * [FELIX-729] - Shell-TUI causes 100% CPU load when using javaw launcher
-
-Changes from 1.0.1 to 1.0.2
----------------------------
-
-* [2008-08-12] Added OBR descriptor and updated to bundle plugin version 
-  1.4.3. (FELIX-669)
-
-Changes from 1.0.0 to 1.0.1
----------------------------
-
-* [2008-04-21] Re-release to make bytecode executable on jre 1.3.
-
-Changes from 0.8.0-incubator to 1.0.0
--------------------------------------
-
-* None.
diff --git a/main.distribution/doc/changelog_shell.txt b/main.distribution/doc/changelog_shell.txt
deleted file mode 100644
index 1026d54..0000000
--- a/main.distribution/doc/changelog_shell.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-Changes form 1.2.0 to 1.4.0
----------------------------
-
-** Bug
-    * [FELIX-1019] - New shell commands "requirers" and "exports" do not handle invalid bundle case properly
-
-** Improvement
-    * [FELIX-1058] - [PATCH] Add a "find" command to the shell
-    * [FELIX-1145] - Modify help shell command to avoid issues with long command descriptions
-    * [FELIX-1151] - Improve naming and consistency of shell commands for inspecting dependencies
-
-** New Feature
-    * [FELIX-1052] - Add log shell command
-    * [FELIX-1181] - Add support for activation policy in shell "start" command
-    * [FELIX-1510] - There is no command to set the initial bundle start level
-
-Changes from 1.0.2 to 1.2.0
----------------------------
-
-** Bug
-    * [FELIX-703] - Cannot install ShellGUIPlugin with OBR
-
-** Improvement
-    * [FELIX-669] - Shell & Shell TUI OBR descriptions
-    * [FELIX-1008] - Rename "packages" command to "exports" to match better with new "imports" command
-
-** New Feature
-    * [FELIX-741] - Modify shell start/stop commands to support transient starting/stopping of bundles
-    * [FELIX-1006] - Add command to shell to list a bundles imported packages
-    * [FELIX-1009] - Add requires/requirers commands to shell
-
-Changes from 1.0.1 to 1.0.2
----------------------------
-
-* [2008-08-12] Added OBR descriptor and updated to bundle plugin version
-  1.4.3. (FELIX-669)
-* [2008-05-08] Modified "update" command to not append ".jar" to URLs and 
-  modified the "install" command to use the same code. (FELIX-544)
-
-Changes from 1.0.0 to 1.0.1
----------------------------
-
-* [2008-04-21] Re-release to make bytecode executable on jre 1.3.
-
-Changes from 0.8.0-incubator to 1.0.0
--------------------------------------
-
-* [2006-12-15] Changed the symbolic name, since it was being calculated
-  incorrectly.
-* [2007-05-03] Modified 'ps' so that it displays reasonable defaults if
-  headers are missing. Also added ability to display symbolic name.
-* [2007-06-14] Modified refresh command to accept bundle IDs.
