diff --git a/main/doc/apache-felix-framework-launching-and-embedding.html b/main/doc/apache-felix-framework-launching-and-embedding.html
index d2d0f82..c65aaea 100644
--- a/main/doc/apache-felix-framework-launching-and-embedding.html
+++ b/main/doc/apache-felix-framework-launching-and-embedding.html
@@ -27,37 +27,41 @@
     <div class="main">
 <h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-ApacheFelixFrameworkLaunchingandEmbedding"></a>Apache Felix Framework Launching and Embedding</h1>
 
-<p><em>[This document is based on Felix 1.4.0.]</em></p>
+<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>
 
 <ul>
-	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-introduction" title="introduction on Apache Felix Framework Launching and Embedding">Introduction</a></li>
-	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-overview" title="overview on Apache Felix Framework Launching and Embedding">API Overview</a>
+	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-introduction">Introduction</a></li>
+	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-overview">API Overview</a>
+
 	<ul>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-creatingandconfiguring" title="creating-and-configuring on Apache Felix Framework Launching and Embedding">Creating and Configuring the Framework Instance</a></li>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-startinginstance" title="starting-instance on Apache Felix Framework Launching and Embedding">Starting the Framework Instance</a></li>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-stoppinginstance" title="stopping-instance on Apache Felix Framework Launching and Embedding">Stopping the Framework Instance</a></li>
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-creatingandconfiguring">Creating and Configuring the Framework Instance</a></li>
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-startinginstance">Starting the Framework Instance</a></li>
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-stoppinginstance">Stopping the Framework Instance</a></li>
 	</ul>
 	</li>
-	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-launching" title="launching on Apache Felix Framework Launching and Embedding">Launching Felix</a>
+	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-launching">Launching Felix</a>
+
 	<ul>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-standardlauncher" title="standard-launcher on Apache Felix Framework Launching and Embedding">Standard Felix Launcher</a></li>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-customlauncher" title="custom-launcher on Apache Felix Framework Launching and Embedding">Custom Felix Launcher</a></li>
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-standardlauncher">Standard Felix Launcher</a></li>
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-customlauncher">Custom Felix Launcher</a></li>
 	</ul>
 	</li>
-	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-embedding" title="embedding on Apache Felix Framework Launching and Embedding">Embedding Felix</a>
+	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-embedding">Embedding Felix</a>
 	<ul>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostinteraction" title="host-interaction on Apache Felix Framework Launching and Embedding">Host/Felix Interaction</a></li>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostservices" title="host-services on Apache Felix Framework Launching and Embedding">Providing Host Application Services</a></li>
-		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostserviceusage" title="host-service-usage on Apache Felix Framework Launching and Embedding">Using Services Provided by Bundles</a>
+
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostinteraction">Host/Felix Interaction</a></li>
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostservices">Providing Host Application Services</a></li>
+		<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostserviceusage">Using Services Provided by Bundles</a>
 		<ul>
-			<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-servicereflection" title="service-reflection on Apache Felix Framework Launching and Embedding">Using Bundle Services via Reflection</a></li>
-			<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-serviceother" title="service-other on Apache Felix Framework Launching and Embedding">Other Approaches</a></li>
+			<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-servicereflection">Using Bundle Services via Reflection</a></li>
+			<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-serviceother">Other Approaches</a></li>
+
 		</ul>
 		</li>
 	</ul>
 	</li>
-	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-caveat" title="caveat on Apache Felix Framework Launching and Embedding">Caveat</a></li>
-	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-feedback" title="feedback on Apache Felix Framework Launching and Embedding">Feedback</a></li>
+	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-caveat">Caveat</a></li>
+	<li><a href="#ApacheFelixFrameworkLaunchingandEmbedding-feedback">Feedback</a></li>
 </ul>
 
 
@@ -65,32 +69,17 @@
 
 <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, 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><a name="ApacheFelixFrameworkLaunchingandEmbedding-overview"></a></p>
 
 <h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-APIOverview"></a>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 ongoing OSGi specification process, there is
-a movement to standardize the API for launching and embedding OSGi
-framework implementations. The approach is to have the framework
-implement the <tt>org.osgi.framework.launch.Framework</tt> interface, which extends the <tt>org.osgi.framework.Bundle</tt> interface. These interfaces provide the necessary means to launch and manage framework instances. The <tt>Bundle</tt> interface is defined as:</p>
+<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 embedding API of the OSGi framework has been standardized. The approach is to have the framework implement the <tt>org.osgi.framework.launch.Framework</tt> interface, which extends the <tt>org.osgi.framework.Bundle</tt> interface. These interfaces provide the necessary means to launch and manage framework instances. The <tt>Bundle</tt> interface is defined as:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> Bundle
+<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> Bundle
 {
     BundleContext getBundleContext();
     <span class="code-object">long</span> getBundleId();
@@ -107,6 +96,7 @@
     ServiceReference[] getServicesInUse();
     <span class="code-object">int</span> getState();
     <span class="code-object">String</span> getSymbolicName();
+    Version getVersion();
     <span class="code-object">boolean</span> hasPermission(<span class="code-object">Object</span> obj);
     <span class="code-object">Class</span> loadClass(<span class="code-object">String</span> name) <span class="code-keyword">throws</span> ClassNotFoundException;
     void start() <span class="code-keyword">throws</span> BundleException;
@@ -114,57 +104,52 @@
     void uninstall() <span class="code-keyword">throws</span> BundleException;
     void update() <span class="code-keyword">throws</span> BundleException;
     void update(InputStream is) <span class="code-keyword">throws</span> BundleException;
-}</pre>
+}
+
+</pre>
 </div></div>
 
 <p>The <tt>Framework</tt> interface is defined as:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> <span class="code-keyword">interface</span> Framework <span class="code-keyword">extends</span> Bundle
+<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> Framework <span class="code-keyword">extends</span> Bundle
 {
     void init();
     FrameworkEvent waitForStop();
-}</pre>
+}
+
+</pre>
 </div></div>
 
-<p>An additional requirement for framework implementations not captured
-in the interface definitions is that they must implement a public
-constructor that accepts a <tt>Map</tt>, which is used to pass in configuration properties. When you instantiate the <tt>Felix</tt>
-class, the resulting object is the actual System Bundle that bundles
-inside the framework will see if they get bundle 0, which is the System
-Bundle as defined by the OSGi specification.</p>
+<p>To actually construct a framework instance, the R4.2 specification defines the FrameworkFactory interface:</p>
 
-<table class="warningMacro" align="center" border="0" cellpadding="5" cellspacing="8" width="85%"><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 class="strong">WARNING</b><br>
-<p>This API is undergoing changes and is not completely finalized, so future changes are possible.</p></td></tr></tbody></table>
+<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);
+}
+</pre>
+</div></div>
+
+<p>The framework factory can be used to create configured framework instances. It is obtained following the standard <tt>META-INF/services</tt> approach.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-creatingandconfiguring"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-CreatingandConfiguringtheFrameworkInstance"></a>Creating and Configuring the Framework Instance</h2>
 
-<p>To create a framework instance, simply instantiate the <tt>Felix</tt> class. A newly created framework instance is in the <tt>Bundle.INSTALLED</tt> state. You configure the instance by passing the constructor a <tt>Map</tt> containing its configurations properties. The configuration map may contain the following OSGi standard properties:</p>
+<p>You use the framework factory to construct and configure a framework instance (or by directly instantiating the Felix class). The configuration map may contain the following OSGi standard properties:</p>
 
 <ul>
-	<li><tt>org.osgi.framework.system.packages</tt> - specifies a
-list of packages the system bundle should export from the environment;
-if this is not set, then the framework uses a reasonable default fault.</li>
-	<li><tt>org.osgi.framework.system.packages.extra</tt>
-- specifies a list of additional packages the system bundle should
-export from the environment that are appended to the packages specified
-in <tt>org.osgi.framework.system.packages</tt>; there is no default value for this property.</li>
-	<li><tt>org.osgi.framework.bootdelegation</tt>
-- specifies a list of packages that should be made implicitly available
-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.startlevel</tt> - specifies the start level the framework enters upon startup; the default value for this property is 1.</li>
+	<li><tt>org.osgi.framework.system.packages</tt> - specifies a list of packages the system bundle should export from the environment; if this is not set, then the framework uses a reasonable default fault.</li>
+	<li><tt>org.osgi.framework.system.packages.extra</tt> - specifies a list of additional packages the system bundle should export from the environment that are appended to the packages specified in <tt>org.osgi.framework.system.packages</tt>; there is no default value for this property.</li>
+
+	<li><tt>org.osgi.framework.bootdelegation</tt> - specifies a list of packages that should be made implicitly available 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.startlevel.beginning</tt> - specifies the start level the framework enters upon startup; the default value for this property is 1.</li>
 </ul>
 
 
@@ -172,48 +157,36 @@
 
 <ul>
 	<li><tt>felix.cache.rootdir</tt> - specifies which directory should be used to calculate absolute paths when relative paths are used for the <tt>org.osgi.framework.storage</tt> property; the default value for this property is the current working directory.</li>
-	<li><tt>felix.systembundle.activators</tt> - specifies a <tt>List</tt> of <tt>BundleActivator</tt>
-instances that are started/stopped when the System Bundle is
-started/stopped; the specified instances will receive the System
-Bundle's <tt>BundleContext</tt> when invoked.</li>
+
+	<li><tt>felix.systembundle.activators</tt> - specifies a <tt>List</tt> of <tt>BundleActivator</tt> instances that are started/stopped when the System Bundle is started/stopped; the specified instances will receive the System Bundle's <tt>BundleContext</tt> when invoked.</li>
 	<li><tt>felix.log.logger</tt> - specifies an instance of <tt>org.apache.felix.framework.util.Logger</tt> that the framework uses as its default logger.</li>
-	<li><tt>felix.log.level</tt> - specifies an integer <tt>String</tt>
-whose value indicates the degree of logging reported by the framework;
-the default value is "1" and "0" turns off logging completely,
-otherwise log levels match those specified in the OSGi Log Service
-(i.e., 1 = error, 2 = warning, 3 = information, and 4 = debug).</li>
+
+	<li><tt>felix.log.level</tt> - specifies an integer <tt>String</tt> whose value indicates the degree of logging reported by the framework; the default value is "1" and "0" turns off logging completely, otherwise log levels match those specified in the OSGi Log Service (i.e., 1 = error, 2 = warning, 3 = information, and 4 = debug).</li>
 	<li><tt>felix.startlevel.bundle</tt> - specifies the start level for newly installed bundles; the default value is 1.</li>
-	<li><tt>framework.service.urlhandlers</tt>
-- specifies whether or not to activate the URL Handlers service for the
-framework instance; the default value is "&lt;tt&gt;true&lt;/tt&gt;",
-which results in the
-&lt;tt&gt;URL.setURLStreamHandlerFactory()&lt;/tt&gt; and
-&lt;tt&gt;URLConnection.setContentHandlerFactory()&lt;/tt&gt; being
-called.</li>
+	<li><tt>felix.bootdelegation.implicit</tt> - specifies whether or not the framework should try to guess when to boot delegate when external code tries to load classes or resources; the default value is "<tt>true</tt>".</li>
+
+	<li><tt>framework.service.urlhandlers</tt> - specifies whether or not to activate the URL Handlers service for the framework instance; the default value is "<tt>true</tt>", which results in the <tt>URL.setURLStreamHandlerFactory()</tt> and <tt>URLConnection.setContentHandlerFactory()</tt> being called.</li>
 </ul>
 
 
-<p>The configuration map passed into the constructor is copied and the
-keys are treated as case insensitive. You are not able to change the
-framework's configuration after construction. If you need a different
-configuration, you must create a new framework instance.</p>
+<p>The configuration map is copied and the keys are treated as case insensitive. You are not able to change the framework's configuration after construction. If you need a different configuration, you must create a new framework instance.</p>
 
-<table class="warningMacro" align="center" border="0" cellpadding="5" cellspacing="8" width="85%"><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 class="strong">WARNING</b><br>
-<p>Felix <tt>1.4.0</tt> introduced some significant changes to its configuration properties; if you are upgrading from a previous version, the <a href="http://felix.apache.org/site/apache-felix-usage-documentation.html#ApacheFelixUsageDocumentation-migrating" title="migrating on Apache Felix Usage Documentation">usage document</a> describes the configuration property changes.</p></td></tr></tbody></table>
+<div class='panelMacro'><table class='warningMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></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="/confluence/display/FELIX/Apache+Felix+Framework+Usage+Documentation#ApacheFelixFrameworkUsageDocumentation-migrating">usage document</a> describes the configuration property changes.</p></td></tr></table></div>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-startinginstance"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-StartingtheFrameworkInstance"></a>Starting the Framework Instance</h2>
 
-<p>The <tt>start()</tt> method is used to start the framework instance. If the <tt>init()</tt> method was not invoked prior to calling <tt>start()</tt>, then it is implicitly invoked from <tt>start()</tt>. The two methods result in two different framework state transitions:</p>
+<p>The <tt>start()</tt> method is used to start the framework instance. If the <tt>init()</tt> method was not invoked prior to calling <tt>start()</tt>, then it is invoked by <tt>start()</tt>. The two methods result in two different framework state transitions:</p>
 
 <ul>
 	<li><tt>init()</tt> results in the framework instance in the <tt>Bundle.STARTING</tt> state.</li>
 	<li><tt>start()</tt> results in the framework instance in the <tt>Bundle.ACTIVE</tt> state.</li>
+
 </ul>
 
 
-<p>The <tt>init()} method is necessary since the framework does not have a {{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. 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 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>
 
 <ul>
 	<li>Event handling is enabled.</li>
@@ -221,6 +194,7 @@
 	<li>The framework is set to start level 0.</li>
 	<li>All bundles in the bundle caches are reified and their state is set to <tt>Bundle.INSTALLED</tt>.</li>
 	<li>The framework gets a valid <tt>BundleContext</tt>.</li>
+
 	<li>All framework-provided services are made available (e.g., PackageAdmin, StartLevel, etc.).</li>
 	<li>The framework enters the <tt>Bundle.STARTING</tt> state.</li>
 </ul>
@@ -236,82 +210,133 @@
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-launching"></a></p>
 
-<h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-LaunchingFelix"></a>Launching Felix</h1>
+<h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-LaunchingaFramework"></a>Launching a Framework</h1>
 
-<p>Launching Felix is fairly simple and involves only three steps:</p>
+<p>Launching a framework is fairly simple and involves only four steps:</p>
 
 <ol>
 	<li>Define some configuration properties.</li>
-	<li>Create an instance of <tt>org.apache.felix.framework.Felix</tt> with the configuration properties.</li>
-	<li>Invoke the <tt>org.apache.felix.framework.Felix.start()</tt> method.</li>
+	<li>Obtain framework factory.</li>
+	<li>Use factory to create framework with the configuration properties.</li>
+
+	<li>Invoke the <tt>Framework.start()</tt> method.</li>
 </ol>
 
 
-<p>In reality, the first step is optional, since all properties will
-have reasonable defaults, but if you are creating a launcher you will
-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-usage-documentation.html#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">usage document</a> for more information on configuring Felix and on the various configuration properties.</p>
+<p>In reality, the first step is optional, since all properties will have reasonable defaults, but if you are creating a launcher you will 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="/confluence/display/FELIX/Apache+Felix+Framework+Usage+Documentation#ApacheFelixFrameworkUsageDocumentation-configuringfelix">usage document</a> for more information on configuring Felix 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 for Felix.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-standardlauncher"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-StandardFelixLauncher"></a>Standard Felix 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 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"><div class="codeContent">
-<pre class="code-java"><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
+<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
 {
-    <span class="code-comment">// (1) Check <span class="code-keyword">for</span> proper command line usage.
-</span>    <span class="code-keyword">if</span> (args.length &gt; 1)
+    <span class="code-comment">// (1) Check <span class="code-keyword">for</span> command line arguments and verify usage.
+
+</span>    <span class="code-object">String</span> bundleDir = <span class="code-keyword">null</span>;
+    <span class="code-object">String</span> cacheDir = <span class="code-keyword">null</span>;
+    <span class="code-object">boolean</span> expectBundleDir = <span class="code-keyword">false</span>;
+    <span class="code-keyword">for</span> (<span class="code-object">int</span> i = 0; i &lt; args.length; i++)
     {
-        <span class="code-object">System</span>.out.println(<span class="code-quote">"Usage: [&lt;bundle-cache-dir&gt;]"</span>);
+        <span class="code-keyword">if</span> (args[i].equals(BUNDLE_DIR_SWITCH))
+        {
+            expectBundleDir = <span class="code-keyword">true</span>;
+        }
+        <span class="code-keyword">else</span> <span class="code-keyword">if</span> (expectBundleDir)
+        {
+            bundleDir = args[i];
+            expectBundleDir = <span class="code-keyword">false</span>;
+        }
+        <span class="code-keyword">else</span>
+
+        {
+            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>);
         <span class="code-object">System</span>.exit(0);
     }
 
     <span class="code-comment">// (2) Load system properties.
+
 </span>    Main.loadSystemProperties();
 
     <span class="code-comment">// (3) Read configuration properties.
 </span>    Properties configProps = Main.loadConfigProperties();
-
-    <span class="code-comment">// (4) Copy framework properties from the system properties.
-</span>    Main.copySystemProperties(configProps);
-
-    <span class="code-comment">// (5) If specified, use command-line argument as path to bundle cache.
-</span>    <span class="code-keyword">if</span> (args.length &gt; 0)
+    <span class="code-keyword">if</span> (configProps == <span class="code-keyword">null</span>)
     {
-        configProps.setProperty(Constants.FRAMEWORK_STORAGE, args[0]);
+        <span class="code-object">System</span>.err.println(<span class="code-quote">"No "</span> + CONFIG_PROPERTIES_FILE_VALUE + <span class="code-quote">" found."</span>);
+        configProps = <span class="code-keyword">new</span> Properties();
     }
 
-    <span class="code-comment">// (6) Create a list <span class="code-keyword">for</span> custom framework activators and
-</span>    <span class="code-comment">// add an instance of the auto-activator it <span class="code-keyword">for</span> processing
-</span>    <span class="code-comment">// auto-install and auto-start properties. Add <span class="code-keyword">this</span> list
-</span>    <span class="code-comment">// to the configuration properties.
-</span>    List list = <span class="code-keyword">new</span> ArrayList();
-    list.add(<span class="code-keyword">new</span> AutoActivator(configProps));
-    configProps.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, list);
+    <span class="code-comment">// (4) Copy framework properties from the system properties.
+
+</span>    Main.copySystemProperties(configProps);
+        
+    <span class="code-comment">// (5) Use the specified auto-deploy directory over <span class="code-keyword">default</span>.
+</span>    <span class="code-keyword">if</span> (bundleDir != <span class="code-keyword">null</span>)
+    {
+        configProps.setProperty(AutoProcessor.AUTO_DEPLOY_DIR_PROPERY, bundleDir);
+    }
+
+    <span class="code-comment">// (6) Use the specified bundle cache directory over <span class="code-keyword">default</span>.
+</span>    <span class="code-keyword">if</span> (cacheDir != <span class="code-keyword">null</span>)
+    {
+        configProps.setProperty(Constants.FRAMEWORK_STORAGE, cacheDir);
+    }
+
+    <span class="code-comment">// (7) Add a shutdown hook to clean stop the framework.
+
+</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-keyword">public</span> void run()
+            {
+                <span class="code-keyword">try</span>
+
+                {
+                    <span class="code-keyword">if</span> (m_fwk != <span class="code-keyword">null</span>)
+                    {
+                        m_fwk.stop();
+                        m_fwk.waitForStop(0);
+                    }
+                }
+                <span class="code-keyword">catch</span> (Exception ex)
+                {
+                    <span class="code-object">System</span>.err.println(<span class="code-quote">"Error stopping framework: "</span> + ex);
+                }
+            }
+        });
+    }
 
     <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 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">// (7) Create an instance and start the framework.
-</span>
-        m_felix = <span class="code-keyword">new</span> Felix(configProps);
-        m_felix.start();
-        <span class="code-comment">// (8) Wait <span class="code-keyword">for</span> framework to stop to exit the VM.
-</span>        m_felix.waitForStop();
+        <span class="code-comment">// (8) Create an instance and initialize the framework.
+</span>        FrameworkFactory factory = getFrameworkFactory();
+        m_fwk = factory.newFramework(configProps);
+        m_fwk.init();
+        <span class="code-comment">// (9) Use the system bundle context to process the auto-deploy
+</span>        <span class="code-comment">// and auto-install/auto-start properties.
+</span>        AutoProcessor.process(configProps, m_fwk.getBundleContext());
+        <span class="code-comment">// (10) Start the framework.
+</span>        m_fwk.start();
+        <span class="code-comment">// (11) Wait <span class="code-keyword">for</span> framework to stop to exit the VM.
+
+</span>        m_fwk.waitForStop(0);
         <span class="code-object">System</span>.exit(0);
     }
     <span class="code-keyword">catch</span> (Exception ex)
@@ -320,118 +345,80 @@
         ex.printStackTrace();
         <span class="code-object">System</span>.exit(-1);
     }
-}</pre>
+}
+</pre>
 </div></div>
 
 <p>The general steps of the standard launcher are quite straightforward:</p>
 
 <ol>
-	<li>The launcher only supports a single, optional command-line
-argument, which is the path to the bundle cache, so check for this and
-issue a usage message it there are more than one arguments.</li>
-	<li>Load any system properties specified in the <tt>system.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.system.properties</tt>
-system property. This file is not needed to launch Felix and is
-provided merely for convenience when system properties must be
-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
-created by the launcher. 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; configuration and system
-properties will be used for substitution with configuration properties
-having precedence.</li>
-	<li>For convenience, any configuration
-properties that are set as system properties will be copied into the
-set of configuration properties to provide an easy way to add to or
-override configuration properties specified in the <tt>config.properties</tt> file.</li>
-	<li>If there is a single command-line argument, then use that to set the value of <tt>org.osgi.framework.storage</tt>; relative paths are relative to the current directory unless the <tt>felix.cache.rootdir</tt> property is set.</li>
-	<li>Create a list to hold custom framework activators and add an instance of <tt>org.apache.felix.main.AutoActivator</tt>, which will process <tt>felix.auto.install</tt> and <tt>felix.auto.start</tt> configuration properties during framework startup to automatically install and/or start bundles; see the <a href="http://felix.apache.org/site/apache-felix-usage-documentation.html#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">usage document</a> for more information configuration properties.</li>
-	<li>Create the Felix instance passing in the configuration properties, then call <tt>start()</tt>.</li>
+	<li>The launcher supports setting the auto-deploy directory (with the <tt>-b</tt> switch) and setting the bundle cache path with a single argument, so check for this and issue a usage message it there are more than one arguments.</li>
+	<li>Load any system properties specified in the <tt>system.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.system.properties</tt> system property. This file is not needed to launch Felix and is provided merely for convenience when system properties must be 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 created by the launcher. 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; configuration and system properties will be used for substitution with configuration properties having precedence.</li>
+	<li>For convenience, any configuration properties that are set as system properties are copied into the set of configuration properties. This provide an easy way to add to or override configuration properties specified in the <tt>config.properties</tt> file, since the Felix instance will never look at system properties for configuration.</li>
+
+	<li>If the <tt>-b</tt> switch was used to specify an auto-deploy directory, then use that to set the value of <tt>felix.auto.deploy.dir</tt>.</li>
+	<li>If a single command-line argument is specified, then use that to set the value of <tt>org.osgi.framework.storage</tt>; relative paths are relative to the current directory unless the <tt>felix.cache.rootdir</tt> property is set.</li>
+	<li>Create a framework instance using the <tt>FrameworkFactory</tt> passing in the configuration properties, then initialize the factory instance.</li>
+
+	<li>Use <tt>org.apache.felix.main.AutoProcessor</tt>, which will automatically deploy any bundles in the auto-deploy directory as well as bundles specified in the <tt>felix.auto.install</tt> and <tt>felix.auto.start</tt> configuration properties during framework startup to automatically install and/or start bundles; see the usage document for more information <a href="/confluence/display/FELIX/Apache+Felix+Framework+Usage+Documentation#ApacheFelixFrameworkUsageDocumentation-configuringframework">configuration properties</a> and <a href="/confluence/display/FELIX/Apache+Felix+Framework+Usage+Documentation#ApacheFelixFrameworkUsageDocumentation-autodeploy">bundle auto-deploy</a>.</li>
 	<li>Invoke <tt>waitForStop()</tt> to wait for the framework to stop to force the VM to exit; this is necessary because the framework never calls <tt>System.exit()</tt> and some libraries (e.g., Swing) create threads that will not allow the VM to exit.</li>
+
 </ol>
 
 
-<p>The framework is not active until the <tt>start()</tt> method is
-called. If no shell bundles are installed and started or if there is
-difficulty locating the shell bundles specified in the auto-start
-property, then it will appear as if the framework is hung, but it is
-actually running without any way to interact with it since the shell
-bundles provide the only means of interaction.</p>
+<p>The framework is not active until the <tt>start()</tt> method is called. If no shell bundles are installed and started or if there is difficulty locating the shell bundles specified in the auto-start property, then it will appear as if the framework is hung, but it is actually running without any way to interact with it since the shell bundles provide the only means of interaction.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-customlauncher"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-CustomFelixLauncher"></a>Custom Felix Launcher</h2>
 
-<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 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>
 
-<div class="preformatted"><div class="preformattedContent">
+<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
 <pre>launcher/
    lib/
-      org.apache.felix.main-1.4.0.jar
+      org.apache.felix.main-2.0.0.jar
    bundle/
-      org.apache.felix.shell-1.0.2.jar
-      org.apache.felix.shell.tui-1.0.2.jar
+      org.apache.felix.shell-1.4.0.jar
+      org.apache.felix.shell.tui-1.4.0.jar
    src/
       example/
          Main.java
 </pre>
 </div></div>
 
-<p>The <tt>lib/</tt> directory contains Felix' main JAR file, which
-also contains the OSGi core interfaces. The main JAR file is used so
-that we can reuse the default launcher's auto-install/auto-start
-configuration property handling; if these capabilities are not needed,
-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
-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>
+<p>The <tt>lib/</tt> directory contains Felix' main JAR file, which also contains the OSGi core interfaces. The main JAR file is used so that we can reuse the default launcher's auto-install/auto-start configuration property handling; if these capabilities are not needed, 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 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>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> example;
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-keyword">package</span> example;
 
-<span class="code-keyword">import</span> java.util.ArrayList;
-<span class="code-keyword">import</span> java.util.List;
-<span class="code-keyword">import</span> java.util.Map;
-<span class="code-keyword">import</span> java.util.HashMap;
-<span class="code-keyword">import</span> org.osgi.framework.Constants;
-<span class="code-keyword">import</span> org.apache.felix.framework.Felix;
-<span class="code-keyword">import</span> org.apache.felix.framework.util.FelixConstants;
-<span class="code-keyword">import</span> org.apache.felix.main.AutoActivator;
+<span class="code-keyword">import</span> java.io.*;
+<span class="code-keyword">import</span> org.osgi.framework.launch.*;
+<span class="code-keyword">import</span> org.apache.felix.main.AutoProcessor;
 
 <span class="code-keyword">public</span> class Main
 {
-    <span class="code-keyword">private</span> <span class="code-keyword">static</span> Felix m_felix = <span class="code-keyword">null</span>;
+    <span class="code-keyword">private</span> <span class="code-keyword">static</span> Framework m_fwk = <span class="code-keyword">null</span>;
 
     <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>);
 
-        Map configMap = <span class="code-keyword">new</span> HashMap();
-        configMap.put(AutoActivator.AUTO_START_PROP + <span class="code-quote">".1"</span>,
-            <span class="code-quote">"file:bundle/org.apache.felix.shell-1.0.2.jar "</span> +
-            <span class="code-quote">"file:bundle/org.apache.felix.shell.tui-1.0.2.jar"</span>);
-        List list = <span class="code-keyword">new</span> ArrayList();
-        list.add(<span class="code-keyword">new</span> AutoActivator(configMap));
-        configMap.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, list);
-
         <span class="code-keyword">try</span>
         {
-            m_felix = <span class="code-keyword">new</span> Felix(configMap);
-            m_felix.start();
-            m_felix.waitForStop();
+            m_fwk = getFrameworkFactory().newFramework(<span class="code-keyword">null</span>);
+            m_fwk.init()
+            AutoProcessor.process(<span class="code-keyword">null</span>, m_fwk.getBundleContext());
+            m_fwk.start();
+            m_fwk.waitForStop();
             <span class="code-object">System</span>.exit(0);
         }
         <span class="code-keyword">catch</span> (Exception ex)
@@ -441,116 +428,117 @@
             <span class="code-object">System</span>.exit(-1);
         }
     }
-}</pre>
+
+    <span class="code-keyword">private</span> <span class="code-keyword">static</span> FrameworkFactory getFrameworkFactory() <span class="code-keyword">throws</span> Exception
+    {
+        URL url = Main.class.getClassLoader().getResource(
+            <span class="code-quote">"META-INF/services/org.osgi.framework.launch.FrameworkFactory"</span>);
+        <span class="code-keyword">if</span> (url != <span class="code-keyword">null</span>)
+        {
+            BufferedReader br = <span class="code-keyword">new</span> BufferedReader(<span class="code-keyword">new</span> InputStreamReader(url.openStream()));
+            <span class="code-keyword">try</span>
+
+            {
+                <span class="code-keyword">for</span> (<span class="code-object">String</span> s = br.readLine(); s != <span class="code-keyword">null</span>; s = br.readLine())
+                {
+                    s = s.trim();
+                    <span class="code-comment">// Try to load first non-empty, non-commented line.
+</span>                    <span class="code-keyword">if</span> ((s.length() &gt; 0) &amp;&amp; (s.charAt(0) != '#'))
+                    {
+                        <span class="code-keyword">return</span> (FrameworkFactory) <span class="code-object">Class</span>.forName(s).newInstance();
+                    }
+                }
+            }
+            <span class="code-keyword">finally</span>
+
+            {
+                <span class="code-keyword">if</span> (br != <span class="code-keyword">null</span>) br.close();
+            }
+        }
+
+        <span class="code-keyword">throw</span> <span class="code-keyword">new</span> Exception(<span class="code-quote">"Could not find framework factory."</span>);
+    }
+}
+</pre>
 </div></div>
 
-<p>This launcher has all information hard coded in it, unlike the
-default Felix launcher, which loads configuration properties from files
-and performs variable substitution. This simple launcher provides a
-good starting point if the features of the default launcher are not
-necessary. Since very few configuration properties are specified, the
-default values are used. In the case of the framework bundle cache, it
-will use "<tt>felix-cache</tt>" in the current directory.</p>
+<p>This launcher relies on the default behavior of <tt>AutoProcessor</tt> to automatically deploy the shell bundles. This simple, generic launcher provides a good starting point if the default Felix launcher is not sufficient. Since very few configuration properties are specified, the default values are used. For the bundle auto-deploy directory, "<tt>bundle</tt>" in the current directory is used, while for the framework bundle cache, "<tt>felix-cache</tt>" in the current directory is used.</p>
 
 <p>By breaking down the above source code into small chunks, it is quite easy to see what is going on.</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java">Map configMap = <span class="code-keyword">new</span> HashMap();</pre>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+            m_fwk = getFrameworkFactory().newFramework(<span class="code-keyword">null</span>);
+            m_fwk.init()
+
+</pre>
 </div></div>
 
-<p>This simply creates a map to hold configuration properties.</p>
+<p>These steps get a the framework factory service and use it to create a framework instance with a default configuration. Once the framework instance is created, it is initialized with <tt>init()</tt>.</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java">configMap.put(AutoActivator.AUTO_START_PROP + <span class="code-quote">".1"</span>,
-            <span class="code-quote">"file:bundle/org.apache.felix.shell-1.0.2.jar "</span> +
-            <span class="code-quote">"file:bundle/org.apache.felix.shell.tui-1.0.2.jar"</span>);</pre>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+            AutoProcessor.process(<span class="code-keyword">null</span>, m_fwk.getBundleContext());
+</pre>
 </div></div>
 
-<p>This sets the <tt>AutoActivator.AUTO_START_PROP</tt> configuration property (string value "<tt>felix.auto.start</tt>"),
-which is a space-delimited list of bundle URLs that the framework will
-automatically install and start when the framework starts. However,
-this property key cannot be used as is; it must be appended with a "."
-and then a number, where the number represents the start level for the
-bundle when it is installed. In this particular example, ".1" is
-appended to the property name, thus the two bundles will be installed
-into start level one. This example uses relative <tt>file:</tt> URLs, which will load the bundles from the <tt>bundle/</tt>
-directory assuming that the launcher is started from the root directory
-of the launcher project. It is also possible to specify absolute URLs
-or remote URLs.</p>
+<p>The <tt>AutorProcessor</tt> will automatically deploy bundles in the 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>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java">List list = <span class="code-keyword">new</span> ArrayList();
-        list.add(<span class="code-keyword">new</span> AutoActivator(configMap));
-        configMap.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, list);</pre>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+            m_fwk.start();
+            m_fwk.waitForStop();
+            <span class="code-object">System</span>.exit(0);
+</pre>
 </div></div>
 
-<p>This above creates a list to hold custom framework activators and adds an instance of <tt>org.apache.felix.main.AutoActivator</tt>
-to it, which will process the auto-install and auto-start configuration
-properties during framework startup. The list of activators is then
-added to the configuration map.</p>
+<p>These final steps start the framework and cause the launching application thread to wait for the framework to stop and when it does the launching thread calls <tt>System.exit()</tt> to make sure the VM actually exits.</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java">m_felix = <span class="code-keyword">new</span> Felix(configMap);
-            m_felix.start();</pre>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+    <span class="code-keyword">private</span> <span class="code-keyword">static</span> FrameworkFactory getFrameworkFactory() <span class="code-keyword">throws</span> Exception
+    {
+        ...
+    }
+
+</pre>
 </div></div>
 
-<p>These steps create the framework instance and start it. The configuration property map is passed into the <tt>Felix</tt> constructor.</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-java">m_felix.waitForStop();
-            <span class="code-object">System</span>.exit(0);</pre>
-</div></div>
-
-<p>These final steps cause the launching application thread to wait for
-the framework to stop and when it does the launching thread calls <tt>System.exit()</tt> to make sure the VM actually exits.</p>
+<p>This method retrieves the framework factory service by doing a META-INF/services resource lookup, which it can use to obtain the concrete class name for the factory. If you are using Java 6, then you can use the <tt>ServiceLoader</tt> API in the JRE to further simplify the factory service lookup.</p>
 
 <p>The following command compiles the launcher when run from the root directory of the launcher project:</p>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>javac -d . -classpath lib/org.apache.felix.main-1.4.0.jar src/example/Main.java
+<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>
 </div></div>
 
-<p>After executing this command, an <tt>example/</tt> directory is
-created in the current directory, which contains the generated class
-file. The following command executes the simple launcher when run from
-the root directory of the launcher project:</p>
+<p>After executing this command, an <tt>example/</tt> directory is created in the current directory, which contains the generated class file. The following command executes the simple launcher when run from the root directory of the launcher project:</p>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>java -cp .:lib/org.apache.felix.main-1.4.0.jar example.Main
+<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>
 </div></div>
 
-<p>After executing this command, a "<tt>felix-cache/</tt>" directory is created that contains the installed bundles, which were installed from the <tt>bundle/</tt> directory.</p>
+<p>After executing this command, a "<tt>felix-cache/</tt>" directory is created that contains the cached bundles, which were installed from the <tt>bundle/</tt> directory.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-embedding"></a></p>
 
 <h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-EmbeddingFelix"></a>Embedding Felix</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.
-This section presents the mechanisms for embedding Felix into a host
-application and the issues in doing so.</p>
+<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. This section presents the mechanisms for embedding Felix into a host application and the issues in doing so.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-hostinteraction"></a></p>
 
-<h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-Host/FelixInteraction"></a>Host/Felix Interaction</h2>
+<h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-Host%2FFelixInteraction"></a>Host/Felix Interaction</h2>
 
-<p>In the section on <a href="#ApacheFelixFrameworkLaunchingandEmbedding-launching" title="launching on Apache Felix Framework Launching and Embedding">launching</a> Felix above, the <tt>Felix</tt> 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>
+<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>, 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>
 
 <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"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> class HostActivator <span class="code-keyword">implements</span> BundleActivator
+<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
 {
     <span class="code-keyword">private</span> BundleContext m_context = <span class="code-keyword">null</span>;
 
@@ -572,15 +560,16 @@
         }
         <span class="code-keyword">return</span> <span class="code-keyword">null</span>;
     }
-}</pre>
+}
+
+</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 Felix into a host application and interact with it as the following snippet illustrates:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> class HostApplication
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-keyword">public</span> class HostApplication
 {
     <span class="code-keyword">private</span> HostActivator m_activator = <span class="code-keyword">null</span>;
     <span class="code-keyword">private</span> Felix m_felix = <span class="code-keyword">null</span>;
@@ -588,6 +577,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 class="code-comment">// Create host activator;
 </span>        m_activator = <span class="code-keyword">new</span> HostActivator();
@@ -598,6 +588,7 @@
         <span class="code-keyword">try</span>
         {
             <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 class="code-comment">// Now start Felix instance.
@@ -613,6 +604,7 @@
     <span class="code-keyword">public</span> Bundle[] getInstalledBundles()
     {
         <span class="code-comment">// Use the system bundle activator to gain external
+
 </span>        <span class="code-comment">// access to the set of installed bundles.
 </span>        <span class="code-keyword">return</span> m_activator.getBundles();
     }
@@ -624,53 +616,41 @@
 </span>        m_felix.stop();
         m_felix.waitForStop();
     }
-}</pre>
+}
+</pre>
 </div></div>
 
-<p>Notice how the <tt>HostApplication.getInstalledBundles()</tt> method
-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>
+<p>Notice how the <tt>HostApplication.getInstalledBundles()</tt> method 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>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-hostservices"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-ProvidingHostApplicationServices"></a>Providing Host Application Services</h2>
 
-<p>Providing services from the host application to bundles inside the
-embedded Felix framework instance follows the basic approach laid out
-in <a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostinteraction" title="host-interaction on Apache Felix Framework Launching and Embedding">above</a>.
-The main complication for providing a host application service to
-bundles is the fact that both the host application and the bundles must
-be using the same class definitions for the service interface classes.
-Since the host application cannot import classes from a bundle, this
-means that the service interface classes <b>must</b> be accessible on
-the class path, typically as part of the host application itself. The
-host application then must export the service interface package via the
-system bundle so that bundles installed into the embedded framework
-instance can import it. This is achieved using the <tt>org.osgi.framework.system.packages.extra</tt> configuration property previously presented.</p>
+<p>Providing services from the host application to bundles inside the embedded Felix framework instance follows the basic approach laid out in <a href="#ApacheFelixFrameworkLaunchingandEmbedding-hostinteraction">above</a>. The main complication for providing a host application service to bundles is the fact that both the host application and the bundles must be using the same class definitions for the service interface classes. Since the host application cannot import classes from a bundle, this means that the service interface classes <b>must</b> be accessible on the class path, typically as part of the host application itself. The host application then must export the service interface package via the system bundle so that bundles installed into the embedded framework instance can import it. This is achieved using the <tt>org.osgi.framework.system.packages.extra</tt> configuration property previously presented.</p>
 
 <p>Consider the follow simple property lookup service:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> host.service.lookup;
+<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-object">Object</span> lookup(<span class="code-object">String</span> name);
-}</pre>
+}
+
+</pre>
 </div></div>
 
-<p>This package is simply part of the host application, which is potentially packaged into a JAR file and started with the "<tt>java -jar</tt>"
-command. Now consider the following host application bundle activator,
-which will be used to register/unregister the property lookup service
-when the embedded framework instance starts/stops:</p>
+<p>This package is simply part of the host application, which is potentially packaged into a JAR file and started with the "<tt>java -jar</tt>" command. Now consider the following host application bundle activator, which will be used to register/unregister the property lookup service when the embedded framework instance starts/stops:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> host.core;
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-keyword">package</span> host.core;
 
 <span class="code-keyword">import</span> java.util.Map;
 <span class="code-keyword">import</span> org.osgi.framework.BundleActivator;
+
 <span class="code-keyword">import</span> org.osgi.framework.BundleContext;
 <span class="code-keyword">import</span> org.osgi.framework.ServiceRegistration;
 <span class="code-keyword">import</span> host.service.lookup;
@@ -684,6 +664,7 @@
     <span class="code-keyword">public</span> HostActivator(Map lookupMap)
     {
         <span class="code-comment">// Save a reference to the service's backing store.
+
 </span>        m_lookupMap = lookupMap;
     }
 
@@ -699,6 +680,7 @@
             }
         };
         <span class="code-comment">// Register the property lookup service and save
+
 </span>        <span class="code-comment">// the service registration.
 </span>        m_registration = m_context.registerService(
             Lookup.class.getName(), lookup, <span class="code-keyword">null</span>);
@@ -710,20 +692,20 @@
 </span>        m_registration.unregister();
         m_context = <span class="code-keyword">null</span>;
     }
-}</pre>
+}
+</pre>
 </div></div>
 
-<p>Given the above host application bundle activator, the following
-code snippet shows how the host application could create an embedded
-version of the Felix framework and provide the property lookup service
-to installed bundles:</p>
+<p>Given the above host application bundle activator, the following code snippet shows how the host application could create an embedded version of the Felix framework and provide the property lookup service to installed bundles:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> host.core;
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-keyword">package</span> host.core;
 
 <span class="code-keyword">import</span> java.util.List;
 <span class="code-keyword">import</span> java.util.ArrayList;
 <span class="code-keyword">import</span> java.util.Map;
+
 <span class="code-keyword">import</span> java.util.HashMap;
 <span class="code-keyword">import</span> host.service.lookup.Lookup;
 <span class="code-keyword">import</span> org.apache.felix.framework.Felix;
@@ -739,6 +721,7 @@
     <span class="code-keyword">public</span> HostApplication()
     {
         <span class="code-comment">// Initialize the map <span class="code-keyword">for</span> the property lookup service.
+
 </span>        m_lookupMap.put(<span class="code-quote">"name1"</span>, <span class="code-quote">"value1"</span>);
 
         m_lookupMap.put(<span class="code-quote">"name2"</span>, <span class="code-quote">"value2"</span>);
@@ -746,6 +729,7 @@
         m_lookupMap.put(<span class="code-quote">"name4"</span>, <span class="code-quote">"value4"</span>);
 
         <span class="code-comment">// Create a configuration property map.
+
 </span>        Map configMap = <span class="code-keyword">new</span> HashMap();
         <span class="code-comment">// Export the host provided service <span class="code-keyword">interface</span> <span class="code-keyword">package</span>.
 </span>        configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
@@ -757,6 +741,7 @@
         configMap.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, list);
 
         <span class="code-keyword">try</span>
+
         {
             <span class="code-comment">// Now create an instance of the framework with
 </span>            <span class="code-comment">// our configuration properties.
@@ -774,62 +759,49 @@
     <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();
     }
-}</pre>
+}
+</pre>
 </div></div>
 
-<p>Rather than having the host application bundle activator register
-the service, it is also possible for the the host application to simply
-get the bundle context from the bundle activator and register the
-service directly, but the presented approach is perhaps a little
-cleaner since it allows the host application to register/unregister the
-service when the system bundle starts/stops.</p>
+<p>Rather than having the host application bundle activator register the service, it is also possible for the the host application to simply get the bundle context from the bundle activator and register the service directly, but the presented approach is perhaps a little cleaner since it allows the host application to register/unregister the service when the system bundle starts/stops.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-hostserviceusage"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-UsingServicesProvidedbyBundles"></a>Using Services Provided by Bundles</h2>
 
-<p>Using services provided by bundles follows the same general approach
-of using a host application bundle activator. The main complication for
-the host application using a service from a bundle is the fact that
-both the host application and the bundle must be using the same class
-definitions for the service interface classes. Since the host
-application cannot import classes from a bundle, this means that the
-service interface classes <b>must</b> be accessible on the class path,
-typically as part of the host application itself. The host application
-then must export the service interface package via the system bundle so
-that bundles installed into the embedded framework instance can import
-it. This is achieved using the <tt>org.osgi.framework.system.packages.extra</tt> configuration property previously presented.</p>
+<p>Using services provided by bundles follows the same general approach of using a host application bundle activator. The main complication for the host application using a service from a bundle is the fact that both the host application and the bundle must be using the same class definitions for the service interface classes. Since the host application cannot import classes from a bundle, this means that the service interface classes <b>must</b> be accessible on the class path, typically as part of the host application itself. The host application then must export the service interface package via the system bundle so that bundles installed into the embedded framework instance can import it. This is achieved using the <tt>org.osgi.framework.system.packages.extra</tt> configuration property previously presented.</p>
 
-<p>Consider the following simple command service interface for which
-bundles provide implementations, such as might be used to create an
-extensible interactive shell:</p>
+<p>Consider the following simple command service interface for which bundles provide implementations, such as might be used to create an extensible interactive shell:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> host.service.command;
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-keyword">package</span> host.service.command;
 
 <span class="code-keyword">public</span> class Command
 {
     <span class="code-keyword">public</span> <span class="code-object">String</span> getName();
     <span class="code-keyword">public</span> <span class="code-object">String</span> getDescription();
     <span class="code-keyword">public</span> <span class="code-object">boolean</span> execute(<span class="code-object">String</span> commandline);
-}</pre>
+}
+
+</pre>
 </div></div>
 
-<p>This package is simply part of the host application, which is potentially packaged into a JAR file and started with the "<tt>java -jar</tt>"
-command. Now consider the previously introduced host application bundle
-activator below, which simply provides access to the system bundle
-context:</p>
+<p>This package is simply part of the host application, which is potentially packaged into a JAR file and started with the "<tt>java -jar</tt>" command. Now consider the previously introduced host application bundle activator below, which simply provides access to the system bundle context:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> host.core;
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-keyword">package</span> host.core;
 
 <span class="code-keyword">import</span> org.osgi.framework.BundleActivator;
 <span class="code-keyword">import</span> org.osgi.framework.BundleContext;
 
+
 <span class="code-keyword">public</span> class HostActivator <span class="code-keyword">implements</span> BundleActivator
 {
     <span class="code-keyword">private</span> BundleContext m_context = <span class="code-keyword">null</span>;
@@ -848,25 +820,27 @@
     {
         <span class="code-keyword">return</span> m_context;
     }
-}</pre>
+}
+
+</pre>
 </div></div>
 
-<p>With this bundle activator, the host application can use command
-services provided by bundles installed inside its embedded Felix
-framework instance. The following code snippet illustrates one possible
-approach:</p>
+<p>With this bundle activator, the host application can use command services provided by bundles installed inside its embedded Felix framework instance. The following code snippet illustrates one possible approach:</p>
 
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> host.core;
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-keyword">package</span> host.core;
 
 <span class="code-keyword">import</span> java.util.List;
 <span class="code-keyword">import</span> java.util.ArrayList;
+
 <span class="code-keyword">import</span> java.util.Map;
 <span class="code-keyword">import</span> host.service.command.Command;
 <span class="code-keyword">import</span> org.apache.felix.framework.Felix;
 <span class="code-keyword">import</span> org.apache.felix.framework.util.FelixConstants;
 <span class="code-keyword">import</span> org.apache.felix.framework.cache.BundleCache;
 <span class="code-keyword">import</span> org.osgi.framework.Constants;
+
 <span class="code-keyword">import</span> org.osgi.util.tracker.ServiceTracker;
 
 <span class="code-keyword">public</span> class HostApplication
@@ -878,6 +852,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 class="code-comment">// Export the host provided service <span class="code-keyword">interface</span> <span class="code-keyword">package</span>.
 </span>        configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
@@ -889,6 +864,7 @@
         configMap.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, list);
 
         <span class="code-keyword">try</span>
+
         {
             <span class="code-comment">// Now create an instance of the framework with
 </span>            <span class="code-comment">// our configuration properties.
@@ -910,11 +886,13 @@
     <span class="code-keyword">public</span> <span class="code-object">boolean</span> execute(<span class="code-object">String</span> name, <span class="code-object">String</span> commandline)
     {
         <span class="code-comment">// See <span class="code-keyword">if</span> any of the currently tracked command services
+
 </span>        <span class="code-comment">// match the specified command name, <span class="code-keyword">if</span> so then execute it.
 </span>        <span class="code-object">Object</span>[] services = m_tracker.getServices();
         <span class="code-keyword">for</span> (<span class="code-object">int</span> i = 0; (services != <span class="code-keyword">null</span>) &amp;&amp; (i &lt; services.length); i++)
         {
             <span class="code-keyword">try</span>
+
             {
                 <span class="code-keyword">if</span> (((Command) services[i]).getName().equals(name))
                 {
@@ -925,6 +903,7 @@
             {
                 <span class="code-comment">// Since the services returned by the tracker could become
 </span>                <span class="code-comment">// invalid at any moment, we will <span class="code-keyword">catch</span> all exceptions, log
+
 </span>                <span class="code-comment">// a message, and then ignore faulty services.
 </span>                <span class="code-object">System</span>.err.println(ex);
             }
@@ -940,45 +919,36 @@
 </span>        m_felix.stop();
         m_felix.waitForStop();
     }
-}</pre>
+}
+
+</pre>
 </div></div>
 
-<p>The above example is overly simplistic with respect to concurrency
-issues and error conditions, but it demonstrates the overall approach
-for using bundle-provided services from the host application.</p>
+<p>The above example is overly simplistic with respect to concurrency issues and error conditions, but it demonstrates the overall approach for using bundle-provided services from the host application.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-servicereflection"></a></p>
 
 <h3><a name="ApacheFelixFrameworkLaunchingandEmbedding-UsingBundleServicesviaReflection"></a>Using Bundle Services via Reflection</h3>
 
-<p>It possible for the host application to use services provided by
-bundles without having access to the service interface classes and thus
-not needing to put the service interface classes on the class path. To
-do this, the host application uses the same general approach to acquire
-the system bundle context object, which it can use to look up service
-objects. Using either an LDAP filter or the service interface class
-name, the host application can retrieve the service object and then use
-standard Java reflection to invoke methods on the service object.</p>
+<p>It possible for the host application to use services provided by bundles without having access to the service interface classes and thus not needing to put the service interface classes on the class path. To do this, the host application uses the same general approach to acquire the system bundle context object, which it can use to look up service objects. Using either an LDAP filter or the service interface class name, the host application can retrieve the service object and then use standard Java reflection to invoke methods on the service object.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-serviceother"></a></p>
 
 <h3><a name="ApacheFelixFrameworkLaunchingandEmbedding-OtherApproaches"></a>Other Approaches</h3>
 
-<p>The <span class="nobr"><a href="http://code.google.com/p/transloader/" title="Visit page outside Confluence" rel="nofollow">Transloader<sup><img class="rendericon" src="apache-felix-framework-launching-and-embedding_files/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span> 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/" 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>
 
 <h1><a name="ApacheFelixFrameworkLaunchingandEmbedding-Caveat"></a>Caveat</h1>
 
-<p>The code in this document has not been thoroughly tested nor even
-compiled and may be out of date with respect to the current Felix
-source code. If you find errors please report them so the that they can
-be corrected.</p>
+<p>The code in this document has not been thoroughly tested nor even compiled and may be out of date with respect to the current Felix source code. If you find errors please report them so the that they can be corrected.</p>
 
 <p><a name="ApacheFelixFrameworkLaunchingandEmbedding-feedback"></a></p>
 
 <h2><a name="ApacheFelixFrameworkLaunchingandEmbedding-Feedback"></a>Feedback</h2>
 
-<p>Subscribe to the Felix users mailing list by sending a message to <span class="nobr"><a href="mailto:users-subscribe@felix.apache.org" title="Send mail to users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org<sup><img class="rendericon" src="apache-felix-framework-launching-and-embedding_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>; after subscribing, email questions or feedback to <span class="nobr"><a href="mailto:users@felix.apache.org" title="Send mail to users@felix.apache.org" rel="nofollow">users@felix.apache.org<sup><img class="rendericon" src="apache-felix-framework-launching-and-embedding_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>.</p>
+<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>
\ No newline at end of file
+  </body></html>
diff --git a/main/doc/apache-felix-usage-documentation.html b/main/doc/apache-felix-usage-documentation.html
index 31eb600..1024ae8 100644
--- a/main/doc/apache-felix-usage-documentation.html
+++ b/main/doc/apache-felix-usage-documentation.html
@@ -25,404 +25,263 @@
 <!-- ApacheCon Ad -->
 </p></li></ul> </div>
     <div class="main">
-<h1><a name="ApacheFelixUsageDocumentation-ApacheFelixUsageDocumentation"></a>Apache Felix Usage Documentation</h1>
+<H1><A name="ApacheFelixFrameworkUsageDocumentation-ApacheFelixFrameworkUsageDocumentation"></A>Apache Felix Framework Usage Documentation</H1>
 
-<ul>
-	<li><a href="#ApacheFelixUsageDocumentation-startingfelix" title="starting-felix on Apache Felix Usage Documentation">Starting Felix</a></li>
-	<li><a href="#ApacheFelixUsageDocumentation-felixshell" title="felix-shell on Apache Felix Usage Documentation">Felix Shell</a>
-	<ul>
-		<li><a href="#ApacheFelixUsageDocumentation-installingbundles" title="installing-bundles on Apache Felix Usage Documentation">Installing Bundles</a></li>
-		<li><a href="#ApacheFelixUsageDocumentation-installingbundlesproxies" title="installing-bundles-proxies on Apache Felix Usage Documentation">Web Proxy Issues when Installing Bundles</a></li>
-	</ul>
-	</li>
-	<li><a href="#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">Configuring Felix</a>
-	<ul>
-		<li><a href="#ApacheFelixUsageDocumentation-migrating" title="migrating on Apache Felix Usage Documentation">Migrating from Earlier Versions</a></li>
-		<li><a href="#ApacheFelixUsageDocumentation-propertysubstitution" title="property-substitution on Apache Felix Usage Documentation">System Property Substitution</a></li>
-		<li><a href="#ApacheFelixUsageDocumentation-defaultshell" title="default-shell on Apache Felix Usage Documentation">Changing the Command Shell User Interface</a></li>
-	</ul>
-	</li>
-	<li><a href="#ApacheFelixUsageDocumentation-configuringbundles" title="configuring-bundles on Apache Felix Usage Documentation">Configuring Bundles</a></li>
-	<li><a href="#ApacheFelixUsageDocumentation-feedback" title="feedback on Apache Felix Usage Documentation">Feedback</a></li>
-</ul>
+<UL>
+	<LI><A href="#ApacheFelixFrameworkUsageDocumentation-downloadingframework">Downloading the Framework</A></LI>
+	<LI><A href="#ApacheFelixFrameworkUsageDocumentation-startingframework">Starting the Framework</A></LI>
+	<LI><A href="#ApacheFelixFrameworkUsageDocumentation-frameworkshell">Framework Shell</A>
+
+	<UL>
+		<LI><A href="#ApacheFelixFrameworkUsageDocumentation-installingbundles">Installing Bundles</A></LI>
+		<LI><A href="#ApacheFelixFrameworkUsageDocumentation-installingbundlesproxies">Web Proxy Issues when Installing Bundles</A></LI>
+	</UL>
+	</LI>
+	<LI><A href="#ApacheFelixFrameworkUsageDocumentation-configuringframework">Configuring the Framework</A>
+	<UL>
+
+		<LI><A href="#ApacheFelixFrameworkUsageDocumentation-migrating">Migrating from Earlier Versions</A></LI>
+		<LI><A href="#ApacheFelixFrameworkUsageDocumentation-propertysubstitution">System Property Substitution</A></LI>
+	</UL>
+	</LI>
+	<LI><A href="#ApacheFelixFrameworkUsageDocumentation-configuringbundles">Configuring Bundles</A></LI>
+	<LI><A href="#ApacheFelixFrameworkUsageDocumentation-feedback">Feedback</A></LI>
+</UL>
 
 
-<p><a name="ApacheFelixUsageDocumentation-startingfelix"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-downloadingframework"></A></P>
 
-<h2><a name="ApacheFelixUsageDocumentation-StartingFelix"></a>Starting Felix</h2>
+<H2><A name="ApacheFelixFrameworkUsageDocumentation-DownloadingtheFramework"></A>Downloading the Framework</H2>
 
-<p>Start Felix from the installation directory by typing:</p>
+<P>Go to the <A href="downloads.html" title="downloads">downloads</A> page and download the latest Felix framework distribution.</P>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>java -jar bin/felix.jar
-</pre>
-</div></div>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-startingframework"></A></P>
 
-<p>After Felix starts, the text-based shell interface is started. It is possible to <a href="#ApacheFelixUsageDocumentation-defaultshell" title="default-shell on Apache Felix Usage Documentation">change your default shell user interface</a>. Felix stores all installed bundles into a bundle cache directory. By default, Felix 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-bundle-cache.html" title="Apache Felix Bundle Cache">Apache Felix Bundle Cache</a> document for more details.</p>
+<H2><A name="ApacheFelixFrameworkUsageDocumentation-StartingtheFramework"></A>Starting the Framework</H2>
 
-<p>If you want to start Felix using a different bundle cache directory, you can start Felix like this:</p>
+<P>Start the framework from the installation directory by typing:</P>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>java -jar bin/felix.jar &lt;cache-path&gt;
-</pre>
-</div></div>
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>java -jar bin/felix.jar
+</PRE>
+</DIV></DIV>
 
-<p>Where <tt>&lt;cache-path&gt;</tt> is the path you want to use as the
-bundle cache. If you specify a relative cache path, then it will be
-treated as relative to the current working directory.</p>
+<P>The framework launcher starts the framework and installs a 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="apache-felix-framework-bundle-cache.html" title="Apache Felix Framework Bundle Cache">Apache Felix Framework Bundle Cache</A> document for more details.</P>
 
-<table class="infoMacro" align="center" border="0" cellpadding="5" cellspacing="8" width="85%"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="apache-felix-usage-documentation_files/information.gif" alt="" align="absmiddle" border="0" height="16" width="16"></td><td><b class="strong">Useful Information</b><br>
-<p>Previous versions of Felix prompted for a profile name when executed. The profile name was used to create a directory inside <tt>.felix/</tt>
-in the users home directory. This approach allowed user's 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 "${user.home}" is automatically
-substituted with the appropriate system property by the launcher.</p></td></tr></tbody></table>
+<P>If you want to start the framework using a different bundle cache directory, you can do so like this:</P>
 
-<p><a name="ApacheFelixUsageDocumentation-felixshell"></a></p>
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>java -jar bin/felix.jar &lt;cache-path&gt;
+</PRE>
+</DIV></DIV>
 
-<h2><a name="ApacheFelixUsageDocumentation-FelixShell"></a>Felix Shell</h2>
+<P>Where <TT>&lt;cache-path&gt;</TT> is the path you want to use as the bundle cache. If you specify a relative cache path, then it will be treated as relative to the current working directory.</P>
 
-<p>The main way to interact with Felix is via its shell service. Felix'
-shell service is implemented as an OSGi service that, be default, uses
-a simple text-based user interface. After starting Felix, type <tt>help</tt> into the shell to see the list of the available commands; these are the default commands:</p>
+<DIV class="panelMacro"><TABLE class="infoMacro"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="http://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B>Useful Information</B><BR><P>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 &quot;<TT>felix.cache.rootdir=${user.home}/.felix</TT>&quot;. Now, if you start Felix with something like &quot;<TT>java -jar bin/felix.jar foo</TT>&quot;, it will use &quot;<TT>${user.home}/.felix/foo/</TT>&quot; as the bundle cache directory, where &quot;<TT>${user.home</TT>}&quot; is automatically substituted with the appropriate system property by the launcher.</P></TD></TR></TABLE></DIV>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>bundlelevel &lt;level&gt; &lt;id&gt; ... | &lt;id&gt; - set or get bundle start level.
-cd [&lt;base-URL&gt;] - change or display base URL.
-headers [&lt;id&gt; ...] - display bundle header properties.
-help - display shell commands.
-install &lt;URL&gt; [&lt;URL&gt; ...] - install bundle(s).
-obr help - OSGi bundle repository.
-packages [&lt;id&gt; ...] - list exported packages.
-ps [-l | -u] - list installed bundles.
-refresh - refresh packages.
-services [-u] [-a] [&lt;id&gt; ...] - list registered or used services.
-shutdown - shutdown Felix.
-start &lt;id&gt; [&lt;id&gt; &lt;URL&gt; ...] - start bundle(s).
-startlevel [&lt;level&gt;] - get or set framework start level.
-stop &lt;id&gt; [&lt;id&gt; ...] - stop bundle(s).
-uninstall &lt;id&gt; [&lt;id&gt; ...] - uninstall bundle(s).
-update &lt;id&gt; [&lt;URL&gt;] - update bundle.
-version - display version of framework.
-</pre>
-</div></div>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-frameworkshell"></A></P>
 
-<p>For a detailed description of how to install bundles into Felix refer to the next <a href="#ApacheFelixUsageDocumentation-installingbundles" title="installing-bundles on Apache Felix Usage Documentation">sub-section</a>; the remainder of this section briefly describes shell behavior.</p>
+<H2><A name="ApacheFelixFrameworkUsageDocumentation-FrameworkShell"></A>Framework Shell</H2>
 
-<p>Despite the fact that the Felix shell tries to mimic a typical Unix-like shell, it is actually quite limited. The notion of <tt>cd</tt>,
-for example, is only used to specify a default base URL in order to
-save typing. To illustrate, assume that you want to install several
-bundles from a directory on your disk, you could type:</p>
+<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>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>cd file:/c:/projects/felix/bundle/
-</pre>
-</div></div>
+<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> 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>
 
-<p>After issuing this <tt>cd</tt> command, you no longer need to type
-the complete URL for bundles located in the above directory, only the
-name of the bundle JAR file is necessary. It is not possible to perform
-an equivalent <tt>ls</tt> command to list the contents of the current
-base URL, since this operation is not possible with URLs. To view all
-currently installed bundles, use the <tt>ps</tt> command.</p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-installingbundles"></A></P>
 
-<p>To exit the Felix shell, simply type <tt>stop 0</tt> to stop the
-System Bundle; any installed bundles will automatically be reloaded the
-next time you start the associated profile. Additionally, any active
-bundles will be reactivated the next time you restart the framework
-with the same bundle cache.</p>
+<H3><A name="ApacheFelixFrameworkUsageDocumentation-InstallingBundles"></A>Installing Bundles</H3>
 
-<p><a name="ApacheFelixUsageDocumentation-installingbundles"></a></p>
+<P>A bundle is the OSGi term for a component for the OSGi framework. A bundle is simply a JAR file containing a manifest and some combination of Java classes, embedded JAR files, native code, and resources. A bundle may provide some specific functionality for the user or it may implement a service that other bundles can use; bundles can only use functionality from other bundles through shared services and packages.</P>
 
-<h3><a name="ApacheFelixUsageDocumentation-InstallingBundles"></a>Installing Bundles</h3>
+<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="apache-felix-osgi-bundle-repository.html" title="Apache Felix OSGi Bundle Repository">Apache Felix OSGi Bundle Repository</A> for more information.</P>
 
-<p>A bundle is the OSGi term for a component for the OSGi framework. A
-bundle is simply a JAR file containing a manifest and some combination
-of Java classes, embedded JAR files, native code, and resources. A
-bundle may provide some specific functionality for the user or it may
-implement a service that other bundles can use; bundles can only use
-functionality from other bundles through shared services and packages.</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>
 
-<p>Felix is packaged with four bundles, which are located in the <tt>bundle/</tt>
-directory of the Felix installation directory. There are bundles for
-the Felix shell service, a text-based shell service user interface, a
-bundle repository service, and a simple example bundle. In addition to
-these bundles, the bundle repository services provides access to many
-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>
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>install file:/path/to/bundle/bundle.jar
+</PRE>
+</DIV></DIV>
 
-<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 the <tt>simple.jar</tt> bundle included with Felix you type (assuming you have started Felix from its installation directory):</p>
+<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>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>install file:bundle/simple.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>simple.jar</tt> bundle:</p>
-
-<div class="preformatted"><div class="preformattedContent">
-<pre>-&gt; install [file:bundle/simple]
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>-&gt; install [file:bundle/simple]
 -&gt; ps
 START LEVEL 1
    ID   State         Level  Name
-[   0] [Active     ] [    0] System Bundle (0.8.0)
-[   1] [Active     ] [    1] Shell Service (0.8.0)
-[   2] [Active     ] [    1] Shell TUI (0.8.0)
-[   3] [Active     ] [    1] Bundle Repository (0.8.0)
-[   4] [Installed  ] [    1] Simple (0.8.0)
+[   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
-Simple bundle 4 has started.
-From native: Hello!
-From embedded JAR: Hello!
-Entry: META-INF/
-Entry: org/
-Entry: libfoo.so
-The 'javax.servlet.http' package is not available.
-The 'javax.servlet' package is not available.
+Hello from Bundle 4.
 -&gt;
-</pre>
-</div></div>
+</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>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>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>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
-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>
+<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 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>
 
-<p>For an introduction to writing bundles and services, refer to the Felix bundle tutorial.</p>
+<P>For an introduction to writing bundles and services, refer to the Felix bundle tutorial.</P>
 
-<p><a name="ApacheFelixUsageDocumentation-installingbundlesproxies"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-installingbundlesproxies"></A></P>
 
-<h3><a name="ApacheFelixUsageDocumentation-WebProxyIssueswhenInstallingBundles"></a>Web Proxy Issues when Installing Bundles</h3>
+<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>
+<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>
 
-<ul>
-	<li><tt>http.proxyHost</tt> - the name of the proxy host.</li>
-	<li><tt>http.proxyPort</tt> - the port of the proxy host.</li>
-	<li><tt>http.proxyAuth</tt>
-- the user name and password to use when connecting to the proxy; this
-string should be the user name and password separated by a colon (e.g.,
-<tt>rickhall:mypassword</tt>).</li>
-</ul>
+<UL>
+	<LI><TT>http.proxyHost</TT> &#45; the name of the proxy host.</LI>
+
+	<LI><TT>http.proxyPort</TT> &#45; the port of the proxy host.</LI>
+	<LI><TT>http.proxyAuth</TT> &#45; the user name and password to use when connecting to the proxy; this string should be the user name and password separated by a colon (e.g., <TT>rickhall:mypassword</TT>).</LI>
+</UL>
 
 
-<p>These system properties can be set directly on the command line when starting the JVM using the standard "<tt>-D&lt;prop&gt;=&lt;value&gt;</tt>" syntax or you can put them in the <tt>lib/system.properties</tt> file of your Felix installation; see the next section on <a href="#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">configuring Felix</a> for more information.</p>
+<P>These system properties can be set directly on the command line when starting the JVM using the standard &quot;<TT>&#45;D&lt;prop&gt;=&lt;value&gt;</TT>&quot; syntax or you can put them in the <TT>lib/system.properties</TT> file of your Felix installation; see the next section on <A href="#ApacheFelixFrameworkUsageDocumentation-configuringframework">configuring Felix</A> for more information.</P>
 
-<p><a name="ApacheFelixUsageDocumentation-configuringfelix"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-configuringframework"></A></P>
 
-<h2><a name="ApacheFelixUsageDocumentation-ConfiguringFelix"></a>Configuring Felix</h2>
+<H2><A name="ApacheFelixFrameworkUsageDocumentation-ConfiguringtheFramework"></A>Configuring the Framework</H2>
 
-<p>Felix uses properties to configure certain aspects of its behavior. The Felix launcher (i.e., <tt>java -jar bin/felix.jar</tt>) reads configuration properties from two different locations in the installation directory: <tt>conf/system.properties</tt> and <tt>conf/config.properties</tt>. Both files use standard Java property file syntax.</p>
+<P>Both the Felix framework and the launcher use configuration 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>
 
-<p>The <tt>conf/system.properties</tt> file provides a convenient
-mechanism for defining Java system properties, but it is largely
-ignored by Felix, since Felix does not typically use system properties
-for configuration purposes. Any properties placed in the <tt>conf/system.properties</tt> file are available at run time via <tt>System.getProperty()</tt> and <tt>BundleContext.getProperty()</tt>. It is also possible to specify a different location for the system properties file by using the <tt>felix.system.properties</tt> system property when executing Felix. For example:</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 set system properties when running the framework. While the framework itself does not look at system properties, the launcher does copy any framework configuration properties found in the system properties into the framework configuration map, also for your convenience.</P>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>java -Dfelix.system.properties=file:/home/rickhall/system.properties -jar bin/felix.jar
-</pre>
-</div></div>
+<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>Nearly all Felix configuration occurs using properties in the <tt>conf/config.properties</tt> file. It is possible to change the location of the configuration properties file by specifying a new location value using the <tt>felix.config.properties</tt>
-system property. It is necessary to use a system property here since
-Felix needs this value to start execution. As an example, the following
-command could be used to specify a custom location for the
-configuration properties file:</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
+</PRE>
+</DIV></DIV>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>java -Dfelix.config.properties=file:/home/rickhall/config.properties -jar bin/felix.jar
-</pre>
-</div></div>
+<P>Configuration and system properties are accessible at run time via <TT>BundleContext.getProperty()</TT>, but configuration properties override system properties.</P>
 
-<p>In this example the configuration properties will be read from the
-specified URL. All remaining configuration properties should be defined
-in the <tt>config.properties</tt> file itself. All configuration properties are accessible at run time via <tt>BundleContext.getProperty()</tt>.</p>
+<P>The following configuration properties are specifically for the launcher:</P>
 
-<p>Some configuration properties are handled by Felix' launcher, while
-others are handled by the Felix framework itself. Regardless, both
-launcher and framework configuration properties are placed in the <tt>conf/config.properties</tt> files.</p>
+<UL>
+	<LI><TT>felix.auto.deploy.dir</TT> &#45; 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>
 
-<p>The following are launcher configuration properties:</p>
+	<LI><TT>felix.auto.deploy.action</TT> &#45; 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>. The default value is <TT>install</TT>, <TT>update</TT>, and <TT>start</TT>.</LI>
 
-<ul>
-	<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>
-</ul>
+	<LI><TT>felix.auto.install.&lt;n&gt;</TT> &#45; 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> &#45; 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> &#45; Specifies whether the launcher should install a shutdown hook to cleanly shutdown the framework on process exit. The default value is <TT>true</TT>.</LI>
+</UL>
 
 
-<p>The following are framework configuration properties (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 are framework configuration properties (properties starting with &quot;<TT>felix</TT>&quot; are specific to Felix, while those starting with &quot;<TT>org.osgi</TT>&quot; 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>
-in the current working directory. The value should be a valid directory
-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>org.osgi.framework.storage.clean</tt> - Determines whether the bundle cache is flushed. The value can either be "<tt>none</tt>" or "<tt>onFirstInit</tt>", where "<tt>none</tt>" does not flush the bundle cache and "<tt>onFirstInit</tt>" flushes the bundle cache when the framework instance is first initialized. The default value is "<tt>none</tt>".</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>
-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>
-	<li><tt>felix.cache.bufsize</tt>
-- Sets the buffer size to be used by the cache; the default value is
-4096. The integer value of this string provides control over the size
-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
-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>
-	<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>felix.systembundle.activators</tt> - A <tt>List</tt> of <tt>BundleActivator</tt>
-instances that are started/stopped when the System Bundle is
-started/stopped. The specified instances will receive the System
-Bundle's <tt>BundleContext</tt> when invoked. (This property cannot be
-set in the configuration file since it requires instances; it can only
-be passed into Felix' constructor directly.)</li>
-	<li><tt>felix.log.logger</tt> - An instance of <tt>Logger</tt>
-that the framework uses as its default logger. (This property cannot be
-set in the configuration file since it requires an instance; it can
-only be passed into Felix' constructor directly.)</li>
-	<li><tt>felix.log.level</tt>
-- An integer value indicating the degree of logging reported by the
-framework; the higher the value the more logging is reported. If zero
-('0') is specified, then logging is turned off completely. The log
-levels match those specified in the OSGi Log Service (i.e., 1 = error,
-2 = warning, 3 = information, and 4 = debug). The default value is 1.</li>
-	<li><tt>org.osgi.framework.startlevel</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>
+<UL>
+	<LI><TT>org.osgi.framework.storage</TT> &#45; Sets the directory to use as the bundle cache; by default bundle cache directory is <TT>felix-cache</TT> in the current working directory. The value should be a valid directory 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>org.osgi.framework.storage.clean</TT> &#45; Determines whether the bundle cache is flushed. The value can either be &quot;<TT>none</TT>&quot; or &quot;<TT>onFirstInit</TT>&quot;, where &quot;<TT>none</TT>&quot; does not flush the bundle cache and &quot;<TT>onFirstInit</TT>&quot; flushes the bundle cache when the framework instance is first initialized. The default value is &quot;<TT>none</TT>&quot;.</LI>
+
+	<LI><TT>felix.cache.rootdir</TT> &#45; Sets the root directory to use 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>
+	<LI><TT>felix.cache.bufsize</TT> &#45; Sets the buffer size to be used by the cache; the default value is 4096. The integer value of this string provides control over the size of the internal buffer of the disk cache for performance reasons.</LI>
+	<LI><TT>org.osgi.framework.system.packages</TT> &#45; 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 replaces any default value.</LI>
+
+	<LI><TT>org.osgi.framework.system.packages.extra</TT> &#45; 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>
+	<LI><TT>org.osgi.framework.bootdelegation</TT> &#45; 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>felix.systembundle.activators</TT> &#45; A <TT>List</TT> of <TT>BundleActivator</TT> instances that are started/stopped when the System Bundle is started/stopped. The specified instances will receive the System Bundle's <TT>BundleContext</TT> when invoked. (This property cannot be set in the configuration file since it requires instances; it can only be passed into Felix' constructor directly.)</LI>
+
+	<LI><TT>felix.log.logger</TT> &#45; An instance of <TT>Logger</TT> that the framework uses as its default logger. (This property cannot be set in the configuration file since it requires an instance; it can only be passed into Felix' constructor directly.)</LI>
+	<LI><TT>felix.log.level</TT> &#45; An integer value indicating the degree of logging reported by the framework; the higher the value the more logging is reported. If zero ('0') is specified, then logging is turned off completely. The log levels match those specified in the OSGi Log Service (i.e., 1 = error, 2 = warning, 3 = information, and 4 = debug). The default value is 1.</LI>
+	<LI><TT>org.osgi.framework.startlevel.beginning</TT> &#45; The initial start level of the framework once it starts execution; the default value is 1.</LI>
+
+	<LI><TT>felix.startlevel.bundle</TT> &#45; The default start level for newly installed bundles; the default value is 1.</LI>
+	<LI><TT>felix.service.urlhandlers</TT> &#45; Flag to indicate whether to activate the URL Handlers service for the framework instance; the default value is &quot;<TT>true</TT>&quot;. 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> &#45; Determines if installing unsupported fragment bundles throws an exception or logs a warning. Possible values are &quot;<TT>exception</TT>&quot; or &quot;<TT>warning</TT>&quot;. The default value is &quot;<TT>exception</TT>&quot;.</LI>
+</UL>
 
 
-<p>The Felix installation contains a default <tt>conf/config.properties</tt> file for automatically starting the shell-related bundles.</p>
+<P>The Felix installation contains a default <TT>conf/config.properties</TT> file for automatically starting the shell-related bundles.</P>
 
-<p><a name="ApacheFelixUsageDocumentation-migrating"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-migrating"></A></P>
 
-<h3><a name="ApacheFelixUsageDocumentation-MigratingfromEarlierVersions"></a>Migrating from Earlier Versions</h3>
+<H3><A name="ApacheFelixFrameworkUsageDocumentation-MigratingfromEarlierVersions"></A>Migrating from Earlier Versions</H3>
 
-<p>The release of Felix <tt>1.4.0</tt> introduced some configuration property changes. This section describes the differences from older versions of Felix.</p>
+<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>
 
-<ul>
-	<li><b>Removed</b>
-	<ul>
-		<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>
-	</ul>
-	</li>
-	<li><b>Renamed</b>
-	<ul>
-		<li><tt>felix.cache.profiledir</tt> - The equivalent of this property is now named <tt>org.osgi.framework.storage</tt>.</li>
-		<li><tt>felix.startlevel.framework</tt> - The equivalent of this property is now named <tt>org.osgi.framework.startlevel</tt>.</li>
-	</ul>
-	</li>
-	<li><b>Introduced</b>
-	<ul>
-		<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>
+<UL>
+	<LI><B>Removed</B>
+	<UL>
+
+		<LI><TT>felix.embedded.execution</TT> &#45; 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> &#45; No longer needed, since all non-specification features have been removed.</LI>
+		<LI><TT>felix.cache.dir</TT> &#45; No longer needed, since Felix no longer uses bundle cache profiles for saving sets of bundles.</LI>
+
+		<LI><TT>felix.cache.profile</TT> &#45; No longer needed, since Felix no longer uses bundle cache profiles for saving sets of bundles.</LI>
+	</UL>
+	</LI>
+	<LI><B>Renamed</B>
+	<UL>
+		<LI><TT>felix.cache.profiledir</TT> &#45; The equivalent of this property is now named <TT>org.osgi.framework.storage</TT>.</LI>
+
+		<LI><TT>felix.startlevel.framework</TT> &#45; The equivalent of this property is now named <TT>org.osgi.framework.startlevel.beginning</TT>.</LI>
+	</UL>
+	</LI>
+	<LI><B>Introduced</B>
+	<UL>
+
+		<LI><TT>org.osgi.framework.system.packages.extra</TT> &#45; New property, as described above, added to align with standard framework API.</LI>
+		<LI><TT>org.osgi.framework.storage.clean</TT> &#45; New property, as described above, added to align with standard framework API.</LI>
+		<LI><TT>felix.cache.rootdir</TT> &#45; Introduced as a result of removing bundle profiles to help resolve relative bundle cache directories.</LI>
+
+		<LI><TT>felix.fragment.validation</TT> &#45; 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>
 
 
-<p>For the most part, these changes are minor and previous behavior
-achieved from older configuration properties is either easily attained
-with the new properties or no longer necessary.</p>
+<P>For the most part, these changes are minor and previous behavior achieved from older configuration properties is either easily attained with the new properties or no longer necessary.</P>
 
-<p><a name="ApacheFelixUsageDocumentation-propertysubstitution"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-propertysubstitution"></A></P>
 
-<h3><a name="ApacheFelixUsageDocumentation-SystemPropertySubstituion"></a>System Property Substituion</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>
+<H3><A name="ApacheFelixFrameworkUsageDocumentation-SystemPropertySubstituion"></A>System Property Substituion</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>
 
-<p><a name="ApacheFelixUsageDocumentation-defaultshell"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-defaultshell"></A></P>
 
-<h3><a name="ApacheFelixUsageDocumentation-ChangingtheCommandShellUserInterface"></a>Changing the Command Shell User Interface</h3>
+<H3><A name="ApacheFelixFrameworkUsageDocumentation-ChangingtheCommandShellUserInterface"></A>Changing the Command Shell User Interface</H3>
 
-<p>Felix' shell service supports multiple user interface
-implementations; the default shell user interface is text-based, but a
-simple graphical shell is also available. To change the default shell
-user interface, you must download the Shell GUI and Shell GUI Plugin
-bundles. Then you must modify the <tt>felix.auto.start</tt> property in the <tt>conf/config.properties</tt> file of your Felix installation. For the text-based user interface, the property value should look like this:</p>
+<P>Felix' shell service supports multiple user interface implementations; the default shell user interface is text-based, but a simple graphical shell is also available. To change the default shell user interface, you must download the Shell GUI and Shell GUI Plugin bundles. Then you must modify the <TT>felix.auto.start</TT> property in the <TT>conf/config.properties</TT> file of your framework installation. For the text-based user interface, the property value should look like this:</P>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>felix.auto.start.1=file:bundle/shell.jar file:bundle/shelltui.jar \
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>felix.auto.start.1=file:bundle/shell.jar file:bundle/shelltui.jar \
  file:bundle/bundlerepository.jar
-</pre>
-</div></div>
+</PRE>
 
-<p>This property value instructs Felix to automatically start the shell
-service, the shell textual user interface, and the bundle repository. (<em>Note:
-The "\" character at the end of the above line indicates that the
-property value continues on the next line; it is also possible to
-specify the property value on one line.</em>) For the GUI-based shell user interface, the property value should look something like this:</p>
+</DIV></DIV>
 
-<div class="preformatted"><div class="preformattedContent">
-<pre>felix.auto.start.1=file:bundle/shell.jar file:bundle/bundlerepository.jar \
+<P>This property value instructs the framework launcher to automatically start the shell service, the shell textual user interface, and the bundle repository. (<EM>Note: The &quot;\&quot; character at the end of the above line indicates that the property value continues on the next line; it is also possible to specify the property value on one line.</EM>) For the GUI-based shell user interface, the property value should look something like this:</P>
+
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>felix.auto.start.1=file:bundle/shell.jar file:bundle/bundlerepository.jar \
  file:bundle/shellgui.jar file:bundle/shellplugin.jar
-</pre>
-</div></div>
+</PRE>
+</DIV></DIV>
 
-<p>This property value instructs Felix to automatically start the shell
-service, the bundle repository, the shell GUI, and the shell GUI
-plugins.</p>
+<P>This property value instructs the framework launcher to automatically start the shell service, the bundle repository, the shell GUI, and the shell GUI plugins.</P>
 
-<p><a name="ApacheFelixUsageDocumentation-configuringbundles"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-configuringbundles"></A></P>
 
-<h2><a name="ApacheFelixUsageDocumentation-ConfiguringBundles"></a>Configuring Bundles</h2>
+<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. 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>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>
-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="#ApacheFelixUsageDocumentation-configuringfelix" title="configuring-felix on Apache Felix Usage Documentation">configuring Felix</a>.</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> 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>
 
-<p><a name="ApacheFelixUsageDocumentation-feedback"></a></p>
+<P><A name="ApacheFelixFrameworkUsageDocumentation-feedback"></A></P>
 
-<h2><a name="ApacheFelixUsageDocumentation-Feedback"></a>Feedback</h2>
+<H2><A name="ApacheFelixFrameworkUsageDocumentation-Feedback"></A>Feedback</H2>
 
-<p>Subscribe to the Felix users mailing list by sending a message to <span class="nobr"><a href="mailto:users-subscribe@felix.apache.org" title="Send mail to users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org<sup><img class="rendericon" src="apache-felix-usage-documentation_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>; after subscribing, email questions or feedback to <span class="nobr"><a href="mailto:users@felix.apache.org" title="Send mail to users@felix.apache.org" rel="nofollow">users@felix.apache.org<sup><img class="rendericon" src="apache-felix-usage-documentation_files/mail_small.gif" alt="" align="absmiddle" border="0" height="12" width="13"></sup></a></span>.</p>
+<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>
\ No newline at end of file
+  </body></html>
diff --git a/main/doc/changelog.txt b/main/doc/changelog.txt
index b83235d..a7403a9 100644
--- a/main/doc/changelog.txt
+++ b/main/doc/changelog.txt
@@ -1,3 +1,9 @@
+Changes from 1.8.1 to 2.0.0
+---------------------------
+
+** Improvement
+    * Update to latest framework version 2.0.0
+
 Changes form 1.6.1 to 1.8.0
 ---------------------------
 
