diff --git a/main.distribution/doc/apache-felix-framework-configuration-properties.html b/main.distribution/doc/apache-felix-framework-configuration-properties.html
new file mode 100644
index 0000000..8c5bebb
--- /dev/null
+++ b/main.distribution/doc/apache-felix-framework-configuration-properties.html
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head>
+
+
+  
+    <title>Apache Felix - Apache Felix Framework Configuration Properties</title>
+    <link rel="stylesheet" href="apache-felix-framework-configuration-properties_files/site.css" type="text/css" media="all">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  </head><body>
+    <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="apache-felix-framework-configuration-properties_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="apache-felix-framework-configuration-properties_files/apache.png" border="0"></a></div></div>
+    <div class="menu">
+<ul>
+	<li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
+	<li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
+	<li><a href="http://felix.apache.org/site/downloads.cgi" class="external-link" rel="nofollow">downloads</a></li>
+	<li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
+	<li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
+	<li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
+	<li><a href="http://www.apache.org/" class="external-link" rel="nofollow">asf</a></li>
+	<li><a href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">sponsorship</a></li>
+	<li><a href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">sponsors</a>
+<!-- ApacheCon Ad -->
+<iframe src="apache-felix-framework-configuration-properties_files/button.html" style="border-width: 0pt; float: left;" frameborder="0" height="135" scrolling="no" width="135"></iframe>
+<p style="height: 100px;">
+<!-- ApacheCon Ad -->
+</p></li></ul>
+    </div>
+    <div class="main">
+<h1><a name="ApacheFelixFrameworkConfigurationProperties-ApacheFelixFrameworkConfigurationProperties"></a>Apache Felix Framework Configuration Properties</h1>
+
+<ul>
+	<li><a href="#ApacheFelixFrameworkConfigurationProperties-overview">Overview</a></li>
+	<li><a href="#ApacheFelixFrameworkConfigurationProperties-framework">Framework configuration properties</a></li>
+	<li><a href="#ApacheFelixFrameworkConfigurationProperties-launcher">Launcher configuration properties</a></li>
+	<li><a href="#ApacheFelixFrameworkConfigurationProperties-migrating">Mirgrating from earlier versions</a></li>
+	<li><a href="#ApacheFelixFrameworkConfigurationProperties-feedback">Feedback</a></li>
+</ul>
+
+
+<p><a name="ApacheFelixFrameworkConfigurationProperties-overview"></a></p>
+
+<h2><a name="ApacheFelixFrameworkConfigurationProperties-Overview"></a>Overview</h2>
+
+<p>This document describes the various configuration properties related
+to the Apache Felix Framework. Technically, there are framework
+properties and launcher properties. If you are using the Felix
+Framework JAR file (i.e., <tt>org.apache.felix.framework-x.y.x.jar</tt>), then you can only use framework properties. On the other hand, if you are using the Felix Main launcher JAR (i.e., <tt>felix.jar</tt> or <tt>org.apache.felix.main-x.y.z.jar</tt>), then you can use both framework and launcher properties. This document will describe both sets of properties.</p>
+
+<p>Note that the framework does not use system properties to find its
+configuration properties, it only consults the map passed into its
+constructor. In contrast to bundles, which use <tt>BundleContext.getProperty()</tt>,
+which exposes both configuration and system properties at execution
+time. In the case of overlap, the configuration properties override
+system properties. As a convenience, if you are using the Felix
+launcher, it will copy all configuration properties it finds in the
+system properties to the configuration map passed into the framework
+constructor, which allows you to set configuration properties on the
+command line. This feature is <b>not</b> available if you are just using the Felix framework JAR file.</p>
+
+<p><a name="ApacheFelixFrameworkConfigurationProperties-framework"></a></p>
+
+<h2><a name="ApacheFelixFrameworkConfigurationProperties-Frameworkconfigurationproperties"></a>Framework configuration properties</h2>
+
+<p>The following configuration properties are for the framework (properties starting with "<tt>felix</tt>" are specific to Felix, while those starting with "<tt>org.osgi</tt>" are standard OSGi properties):</p>
+
+<ul>
+	<li><tt>org.osgi.framework.executionenvironment</tt> - Sets the
+OSGi execution environment for the framework. The framework tries to
+set this to a reasonable default value. If you specify a value, it
+overrides the framework default. Refer to the OSGi specification for
+appropriate execution environment values.</li>
+	<li><tt>org.osgi.framework.storage</tt> - Sets the directory to use as the bundle cache; by default the 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>felix.cache.rootdir</tt> - Sets the root directory used to calculate the bundle cache directory for relative directory names. If <tt>org.osgi.framework.storage</tt>
+is set to a relative name, by default it is relative to the current
+working directory. If this property is set, then it will be calculated
+as being relative to the specified root directory.</li>
+	<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.locking</tt>
+- Enables or disables bundle cache locking, which is used to prevent
+concurrent access to the bundle cache. This is enabled by default, but
+on older/smaller JVMs file channel locking is not available; set this
+property to <tt>false</tt> to disable it.</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 framework class loader. The framework
+will set this to a reasonable default. If the value is specified, it
+replaces any default value.</li>
+	<li><tt>org.osgi.framework.system.packages.extra</tt>
+- Specifies a comma-delimited list of packages that should be exported
+via the System Bundle from the framework class loader in addition to
+the packages in <tt>org.osgi.framework.system.packages</tt>. The default value is empty. If a value is specified, it is appended to the list of default or specified packages in <tt>org.osgi.framework.system.packages</tt>.</li>
+	<li><tt>org.osgi.framework.bootdelegation</tt>
+- Specifies a comma-delimited list of packages that should be made
+implicitly available to all bundles from the parent class loader. It is
+recommended not to use this property since it breaks modularity. The
+default value is empty.</li>
+	<li><tt>org.osgi.framework.bundle.parent</tt> - Specifies which class loader is used for boot delegation. Possible values are: <tt>boot</tt> for the boot class loader, <tt>app</tt> for the application class loader, <tt>ext</tt> for the extension class loader, and <tt>framework</tt> for the framework's class loader. The default is <tt>boot</tt>.</li>
+	<li><tt>felix.bootdelegation.implicit</tt>
+- Specifies whether the framework should try to guess when to
+implicitly boot delegate to ease integration with external code. The
+default value is <tt>true</tt>.</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.beginning</tt> - The initial start level of the framework once it starts execution; the default value is 1.</li>
+	<li><tt>felix.startlevel.bundle</tt> - The default start level for newly installed bundles; the default value is 1.</li>
+	<li><tt>felix.service.urlhandlers</tt> - Flag to indicate whether to activate the URL Handlers service for the framework instance; the default value is <tt>true</tt>. Activating the URL Handlers service will result in the <tt>URL.setURLStreamHandlerFactory()</tt> and <tt>URLConnection.setContentHandlerFactory()</tt> being called.</li>
+</ul>
+
+
+<p><a name="ApacheFelixFrameworkConfigurationProperties-launcher"></a></p>
+
+<h2><a name="ApacheFelixFrameworkConfigurationProperties-Launcherconfigurationproperties"></a>Launcher configuration properties</h2>
+
+<p>The following configuration properties are for the launcher:</p>
+
+<ul>
+	<li><tt>felix.auto.deploy.dir</tt> - Specifies the auto-deploy directory from which bundles are automatically deployed at framework startup. The default is the <tt>bundle/</tt> directory of the current directory.</li>
+	<li><tt>felix.auto.deploy.action</tt>
+- Specifies a comma-delimited list of actions to be performed on bundle
+JAR files found in the auto-deploy directory. The possible actions are <tt>install</tt>, <tt>update</tt>, <tt>start</tt>, and <tt>uninstall</tt>.
+An undefined or blank value is equivalent to disabling auto-deploy
+processing; there is no default value, so this value must be defined to
+enable it.</li>
+	<li><tt>felix.auto.install.&lt;n&gt;</tt> - Space-delimited list of bundle URLs to automatically install when Felix is started, where <tt>&lt;n&gt;</tt> is the start level into which the bundle will be installed (e.g., <tt>felix.auto.install.2</tt>).</li>
+	<li><tt>felix.auto.start.&lt;n&gt;</tt> - Space-delimited list of bundle URLs to automatically install and start when Felix is started, where <tt>&lt;n&gt;</tt> is the start level into which the bundle will be installed (e.g., <tt>felix.auto.start.2</tt>).</li>
+	<li><tt>felix.shutdown.hook</tt>
+- 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><a name="ApacheFelixFrameworkConfigurationProperties-migrating"></a></p>
+
+<h2><a name="ApacheFelixFrameworkConfigurationProperties-MigratingfromEarlierVersions"></a>Migrating from Earlier Versions</h2>
+
+<p>Apache Felix Framework <tt>2.0.0</tt> introduced significant
+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 the framework no longer uses bundle cache profiles for saving sets of bundles.</li>
+		<li><tt>felix.fragment.validation</tt> - No longer needed, since the framework supports fragments.</li>
+	</ul>
+	</li>
+	<li><b>Renamed</b>
+	<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.beginning</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>
+	</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><a name="ApacheFelixFrameworkConfigurationProperties-feedback"></a></p>
+
+<h2><a name="ApacheFelixFrameworkConfigurationProperties-Feedback"></a>Feedback</h2>
+
+<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" class="external-link" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" class="external-link" rel="nofollow">users@felix.apache.org</a>.</p>
+    </div>
+  </body></html>
