diff --git a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF
index 670697e..228afba 100644
--- a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF
+++ b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.presence.bot.kosmos;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Vendor: %pluginProvider
 Bundle-Provider: %providerName
 Bundle-Localization: plugin
diff --git a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java
index d4b0f5e..3a8ce9a 100644
--- a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java
+++ b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java
@@ -85,6 +85,12 @@
 			+ NEWLINE
 			+ "#    Markus Kuppe <mkuppe@versant.com> - bug 184036" //$NON-NLS-1$
 			+ NEWLINE
+			+" *    Nick Boldt <codeslave@ca.ibm.com> - bug 206528, 209410" //$NON-NLS-1$
+			+ NEWLINE
+			+" *    Dominik Goepel <dominik.goepel@gmx.de> - bug 216644" //$NON-NLS-1$
+			+ NEWLINE
+			+" *    Nitin Dahyabhai <nitind@us.ibm.com> - bug 308908"
+			+ NEWLINE
 			+ "################################################################################"; //$NON-NLS-1$
 
 	private static final String BUG_DATABASE_PREFIX = "https://bugs.eclipse.org/bugs/show_bug.cgi?id="; //$NON-NLS-1$
@@ -213,12 +219,17 @@
 
 		try {
 			parseCommands();
-			writeCommandsToHTML();
 		} catch (Exception e) {
 			commands = new Properties();
 		}
 
 		try {
+			writeCommandsToHTML();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}			 
+
+		try {
 			parseNewsgroup();
 		} catch (Exception e) {
 			newsgroups = Collections.EMPTY_MAP;
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties
index e8fb76b..6c3f3a9 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties
@@ -4,7 +4,7 @@
 # the Eclipse Public License v1.0 which accompanies this distribution, and is
 #
 # Contributors:
-#   EclipseSource - initial API and implementation
+#   Composent, Inc. - initial API and implementation
 #################################################################################
-pluginName=ECF OSGi R4.2 Compendium Distribution
+pluginName=ECF RemoteServiceAdmin Topology Manager
 pluginProvider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/doc/bundles/org.eclipse.ecf.doc/build.properties b/doc/bundles/org.eclipse.ecf.doc/build.properties
index c211d8a..ca5a1e5 100644
--- a/doc/bundles/org.eclipse.ecf.doc/build.properties
+++ b/doc/bundles/org.eclipse.ecf.doc/build.properties
@@ -9,7 +9,6 @@
                topics_Tutorials.xml,\
                topics_Samples.xml,\
                topics_Reference.xml,\
-               tocpics_Concepts.xml,\
                topics_Extpoint.xml,\
                topics_GettingStarted.xml,\
                tocapi.xml,\
@@ -24,7 +23,6 @@
                topics_Reference.xml,\
                topics_GettingStarted.xml,\
                topics_Extpoint.xml,\
-               tocpics_Concepts.xml,\
                tocapi.xml,\
                toc.xml,\
                schema.xml,\
diff --git a/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml b/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
index e57d725..6ca6454 100644
--- a/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
@@ -27,7 +27,7 @@
 		String line;
 		try {
 			while ((line = r.readLine()) != null)
-				System.out.println("<topic label=\"" + line + "\" href=\"http://download.eclipse.org/rt/ecf/3.5Test/javadoc/" + line.replace('.', '/') + "/package-summary.html\"/>");
+				System.out.println("<topic label=\"" + line + "\" href=\"http://download.eclipse.org/rt/ecf/latest/javadoc/" + line.replace('.', '/') + "/package-summary.html\"/>");
 		} finally {
 			r.close();
 		}
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/concepts/container.html b/doc/bundles/org.eclipse.ecf.doc/html/concepts/container.html
deleted file mode 100644
index 881d16a..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/concepts/container.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>SharedObjectContainer Lifecycle - DRAFT</h2>
-<p> SharedObjectContainers can provide access to arbitrary
-communications protocols. So, for example, communication with a remote
-instant messaging client, a server-based web service, or a distributed
-multi-point application can all be represented through an
-implementation of a SharedObjectContainer that understands the specific
-application-level protocol or protocols necessary to communicate with a
-given service or set of services. The primary role of the
-SharedObjectContainer is to provide SharedObjects with </p>
-<ol>
-  <li>a consistent API for achieving secure access to a remote service</li>
-  <li>a consistent API for sending and receiving asynchronous messages
-to/from an arbitrary communications service</li>
-  <li>consistent information about message reliability and group
-membership </li>
-</ol>
-ECF also defines an extensible factory for
-creating ISharedObjectContainer instances called <a
- href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/SharedObjectContainerFactory.html">SharedObjectContainerFactory</a>.
-<br>
-<br>
-The lifecycle of a ISharedObjectContainer is typically as follows:
-<ol>
-  <li>An ISharedObjectContainer instance is created via
-SharedObjectContainerFactory.getDefault().createSharedObjectContainer() </li>
-  <li>ISharedObjects are created and added to the
-ISharedObjectContainer </li>
-  <li>The ISharedObjectContainer 'joins/connects' with a remote
-communications group via
-ISharedObjectContainer.joinGroup() </li>
-  <li>The ISharedObject instances created/added in step #2 above send
-asynchronous messages and receive asynchronous
-events from the remote services </li>
-  <li>ISharedObject implementation code presents/manages user
-interfaces, handles user input, keeps local state,
-communicates with replicas or external services, exposes/introduces
-local Eclipse-provided services to
-remotes, etc. </li>
-  <li>When the ISharedObjectContainer is no longer needed for
-communication, the ISharedObjectContainer can be
-directed to leave the group, or leave the group on its own. </li>
-  <li>When the ISharedObjectContainer is no longer needed at all the
-ISharedObjectContainer.dispose() method
-can be called to free any resources managed by the container or it's
-associated ISharedObjects. </li>
-</ol>
-<br>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/concepts/intro.html b/doc/bundles/org.eclipse.ecf.doc/html/concepts/intro.html
deleted file mode 100644
index 912f09d..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/concepts/intro.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-	<h2>ECF Containers</h2>
-       ECF introduces the concept of a communications <b>container</b>.  ECF containers represent access to 
-       a protocol-specific communications context. For connection-oriented communications, an ECF container loosely 
-       corresponds to the traditional notion of a communications <b>session</b>, but the more general container concept is also
-       useful for capturing context even if the communications are non connection-oriented.
-       <p></p>
-       ECF containers can represent both point-to-point communications (e.g. client/server) or 
-       publish-and-subscribe (group) communications.  Container instances can provide access to synchronous
-       communications only, asynchronous communications only, or both together.  This flexibility allows
-       many communications applications to be constructed out of one or more containers...each of which
-       provides access to some specific communications context and some protocol for communicating within
-       that context.
-       <h2><a name="Instance Creation"></a>Instance Creation</h2>       
-       Container instance creation is done via ECF-provided factory APIs.  For example, here's code to create 
-       and IContainer instance:
-       <pre>
-       IContainer container = ContainerFactory.getDefault().createContainer("containertype");
-       </pre>
-       Once constructed, <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/IContainer.html">IContainer</a> instances may be used in the manner appropriate for the given application.  When
-       no longer required the <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/IContainer.html#dispose()">IContainer.dispose()</a> method should be called to release any resources associated with
-       the container instance upon construction.
-       <h2><a name="Container Connection"></a>Container Connection/Disconnection</h2>
-       The IContainer interface exposes two key methods:  <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/IContainer.html#connect(org.eclipse.ecf.core.identity.ID,%20org.eclipse.ecf.core.security.IConnectContext)">connect(ID targetID, IConnectContect connectContext)</a> and disconnect().  
-       As is obvious, these two methods allow
-       container implementations to initiate communication with remote services, 
-       either server-based or group-based communications.
-       <p></p>
-       Notice the first parameter to the connect method...<b>targetID</b>.  TargetID is of 
-       type <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/identity/ID.html">ID</a>.  The <b>targetID</b> parameter 
-       <b>identifies the target server or group</b> for the connect operation.  It is of type <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/identity/ID.html">ID</a> so that the
-       to allow the target communications service to be of many kinds...e.g. client-server or peer-to-peer.  For example, for http communication the targetID would consist of
-       the URL specifying a particular file at a particular path on a particular server...e.g: <b>http://www.eclipse.org/ecf</b>.  For some
-       other communications protocol the ID provided would be different...e.g:  <b>sip:someone@example.com;transport=tcp</b>.  All such targets for
-       connect may be represented via an instance of the ID interface.
-       <h2><a name="Example Connection Code"></a>Example Container Creation and Connection Code</h2>
-       Here's an example code snippet that shows the creation and connection of an ECF container:
-       <pre>
-       // make container instance
-       IContainer cont = ContainerFactory.getDefault().createContainer("ecf.generic.client");
-       // make targetID
-       ID targetID = IDFactory.getDefault().createID(cont.getConnectNamespace(),"ecftcp://ecf1.osuosl.org:3282/server");
-       // then connect to targetID
-       cont.connect(targetID,null);
-       </pre>       
-       <h2><a name="Extensibility"></a>Container Extensibility through Adapters</h2>
-       In order to support run-time extensibility, the IContainer interface inherits from org.eclipse.core.runtime.IAdaptable.  This 
-       interface exposes the 'getAdapter(Class intf)' method.  In the case of IContainer instances,
-       this allows clients to query the container at runtime about it's exposed interfaces, and get
-       access to those interfaces if available.  So, for example, perhaps we're interested in creating an 
-       instant messaging application and wish to use the capabilities exposed by the 
-       <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/IPresenceContainer.html">IPresenceContainer</a> interface.
-       To do this, we simply query the IContainer instance at runtime to see if it provides access
-       to IPresenceContainer capabilities:
-       <pre>
-       IPresenceContainer pc = (IPresenceContainer) cont.getAdapter(IPresenceContainer.class);
-       if (pc != null) {
-           // The container DOES expose IPresenceContainer capabilities, so we can use them!
-       } else {
-           // The container does NOT expose IPresenceContainer capabilities...we're out of luck
-       }
-       </pre>
-       Among other positive characteristics, this adapter mechanism provides a consistent-yet-simple way for
-       a wide variety of container types to be defined and used without the need to update the ECF
-       IContainer abstractions.
-       <p></p>
-       UNDER CONSTRUCTION - 9/9/05
-       <p></p>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/concepts/sharedobject.html b/doc/bundles/org.eclipse.ecf.doc/html/concepts/sharedobject.html
deleted file mode 100644
index aa776af..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/concepts/sharedobject.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>ISharedObject Lifecycle - DRAFT</h2>
-<h4>ISharedObject Construction</h4>
-A SharedObject can be instantiated two ways:
-<ol>
-  <li>By invoking one of the 'createSharedObject' methods of an
-ISharedObjectContainer. These methods require a SharedObjectDescription
-parameter (which among other things defines the class of object to
-instantiate).
-  </li>
-  <li>By calling the constructor of an object class which implements
-the ISharedObject interface outside of any container.
-  </li>
-</ol>
-<h4>Initialization</h4>
-After it has been constructed the container to
-which it was added will invoke the ISharedObject.init method passing a
-non-null ISharedObjectConfig. ISharedObjects created outside of a
-container, will have their ISharedObject.init method invoked
-immediately as part of being added to the container.
-<br>
-Although not required, a typical implementation of 'init' will
-cache the ISharedObjectConfig for later usage by the ISharedObject:
-<br>
-<pre> public void init(ISharedObjectConfig config) throws<br>	SharedObjectInitException {<br>	this.config = config;<br>  	...<br> }<br></pre>
-<b>Note</b>: The ISharedObjectConfig parameter provides the
-ISharedObject with access to it's
-container-provided context (<a
- href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContext.html">ISharedObjectContext</a>)
-via a call to ISharedObjectConfig.getContext().
-The ISharedObject is not considered initialized until after the init
-method is completed, and
-therefore the ISharedObjectContext is not available until after the
-init method returns.
-<br>
-<br>
-After init completes successfully, containers are required to
-immediately deliver an 'activated' event to the newly added
-ISharedObject via
-ISharedObject.handleEvent(SharedObjectActivatedEvent).
-<h4>Relationship to its container</h4>
-ISharedObjects can be created outside of a ISharedObjectContainer and
-then later added to it using the
-ISharedObjectContainer.getSharedObjectManager().addSharedObject()
-method.
-<br>
-<br>
-The only semantics that an ISharedObjectContainer requires of
-ISharedObjects is that they implement the ISharedObject interface.
-<h4>Communications</h4>
-<h5>Sending Messages</h5>
-Eclipse ECF provides the ISharedObject with a simple asynchronous
-messaging API to send/receive
-arbitrary messages via the container-provided <a
- href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContext.html">ISharedObjectContext</a>.
-On the
-ISharedObjectContext, are methods to send arbitrary messages to remotes
-(sendMessage). For details see
-the methods on <a
- href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/ISharedObjectContext.html">ISharedObjectContext</a>.
-<br>
-<h5>Receiving Events</h5>
-Containers can asynchronously deliver messages to SharedObjects in the
-form of Events. When a message is received
-for a given ISharedObject, the enclosing container wraps that message
-in the form of an event of a certain type,
-and calls that ISharedObject's handleEvent method with the Event
-instance.
-<h4>ISharedObject removal from a container</h4>
-When an ISharedObject is removed from a container (or removes itself),
-it's enclosing container calls the
-ISharedObject.dispose() method.
-<h4>Example Creation Code</h4>
-Here is a code snippet that creates a container and adds a single
-shared object to that container:
-<pre>ISharedObjectContainer container = SharedObjectContainerFactory.getDefault().createSharedObjectContainer('standalone');<br>ID newID = IDFactory.createStringID('foo');<br>SharedObjectDescription sd = new SharedObjectDescription(newID,TestSharedObject.class);<br>container.getSharedObjectManager().createSharedObject(sd,null);<br></pre>
-Note this creates and adds to the container a ISharedObject instance of
-class "TestSharedObject". The TestSharedObject
-null constructor is called, followed by a call to
-ISharedObject.init(ISharedObjectConfig) by the enclosing container.
-The container also sends an 'activated' event to the ISharedObject by
-calling its handleEvent method with
-an event of type
-org.eclipse.ecf.core.events.SharedObjectActivatedEvent.
-<br>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/connect.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/connect.html
deleted file mode 100644
index e461d82..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/connect.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>Connecting an ECF Collaboration Client to a Test Server</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>Connecting an ECF Collaboration Client to a Test Server</h2>
-<ol>
-  <li> Make sure ECF plugins are installed in one of three ways
-described <a href="http://www.eclipse.org/ecf/downloads.html">here</a>.
-  </li>
-  <li> Open the Navigator View or the Package Explorer View. </li>
-  <li> Select any Project (first create some new project if none
-previously exists). </li>
-  <li> Right-click on the project to bring up the context menu for the
-selected project. </li>
-  <li> Select the ECF menu toward the bottom of the menu and select one
-of: </li>
-  <ul>
-    <li> 'Join Collaboration...' This will allow you to specify an URL
-of the group to join. You must know of a currently running server (and
-know it's URL) to use this option. </li>
-    <li> 'Join Test Collaboration (Localhost)' This will connect you
-directly to a test server running on localhost. See <a
- href="runserver.html">Running a Collaboration Server on Localhost</a>
-if you wish to run this way. </li>
-    <li> 'Join Test Collaboration (Composent)' This will connect you
-directly to a test server running on composent.com. This is a test
-server setup for the ECF team usage. You are welcome to try out
-connecting to this server to test out/use the ECF example client. The
-server's availability may not be consistent, however. </li>
-  </ul>
-</ol>
-<br>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/default_style.css b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/default_style.css
deleted file mode 100644
index e26fec7..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/default_style.css
+++ /dev/null
@@ -1,18 +0,0 @@
-p, table, td, th {  font-family: arial, helvetica, geneva; font-size: 10pt}
-pre {  font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code {  font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup {  font-family: arial,helvetica,geneva; font-size: 10px}
-h3 {  font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li {  font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 {  font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body {  font-family: arial, helvetica, geneva; font-size: 10pt; clip:   rect(   ); margin-top: 5mm; margin-left: 3mm}
-.indextop { font-size: x-large;; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold}
-.indexsub { font-size: xx-small;; font-family: Arial, Helvetica, sans-serif; color: #8080FF}
-a.bar:link {  text-decoration: none; color: #FFFFFF}
-a.bar:visited {  color: #FFFFFF; text-decoration: none}
-a.bar:hover {  color: #FFFFFF; text-decoration: underline}
-a.bar {  color: #FFFFFF}
-.jump { font-size: smaller;; font-family: Arial, Helvetica, sans-serif; color: #8080FF ; font-style: normal; text-decoration: none}
-.jump:link { font-size: smaller;; font-family: Arial, Helvetica, sans-serif; color: #8080FF; text-decoration: none}
-.jump:hover { font-size: smaller;; font-family: Arial, Helvetica, sans-serif; color: #0000FF; text-decoration: underline; font-style: normal}
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/ecf_overview.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/ecf_overview.html
deleted file mode 100644
index 4f8018a..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/ecf_overview.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) Composent, Inc., IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>Eclipse Communication Framework Overview</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-
-<body>
-
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-
-<h2>Introduction</h2>
-ECF has two major uses:
-<ol>
-<li>For <a href="#users">Users</a>:  ECF provides Instant Messaging (IM), Chat, File Sharing, Voice-Over-IP (VOIP), 
-Real-Time Group Collaboration
-</li>
-<li>For <a href="#developers">Developers</a>:  A framework (set of APIs) for developers to add communications functions to their tools and applications</li>
-</ol>
-<h2><a name="users"/>Using ECF Applications</h2>
-<p>
-Upon installation of both the ECF 'Core' feature and the ECF 'Application' feature, ECF creates a new perspective for the workspace called 'Communications'.  To access this perspective, click on the 'Communications'
-button in the upper right of the workspace:</p>
-
-<img src="images/commperspectiveselect.png">
-
-<p></p>
-
-<p>Then you will be presented with the <b>Communications Perspective</b>:</p>
-<img src="images/commperspective.png">
-
-<p>Your initial exposure to the Communications Perspective will not have active connections, and it will be necessary to create connections to the desire communications services via
-the toolbar widgets</p>
-<img src="images/commperspectivewidgets.png">
-<p></p>
-<p>If you like, you can add these widgets to other perspectives (i.e. the Java, Debug, Plug-in Development, Resource, Team Synchronizing, and/or other perspectives).  This is done
-by showing the desired perspective, and selecting from the menu:</p>
-<ul>
-<li>Window->Customize Perspective...</li>
-<li>Commands (tab)</li>
-<li>Select Communications check box</li>
-<li>Choose OK button</li>
-</ul>
-<p>Then the ECF Connection widgets will appear in the toolbar of the given perspective.</p>
-
-<h3>Useful Links</h3>
-    <p>ECF Project Home Page: <a href="http://www.eclipse.org/ecf">http://www.eclipse.org/ecf</a></p>
-    <p>ECF Extras Home Page (Skype, JMS, and Yahoo providers): <a href="http://ecf1.osuosl.org">http://ecf1.osuosl.org/ecf</a></p>
-    <p>ECF Wiki: <a href="http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project">http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project</a></p>
-	<p>New and Noteworthy: <a href="http://www.eclipse.org/ecf/NewAndNoteworthy.html">http://www.eclipse.org/ecf/NewAndNoteworthy.html</a></p>
-<hr>
-<h2><a name="developers"/>Developers</h2>
-
-    The Eclipse Communication Framework (ECF) 
-    provides APIs that simplify the creation of interoperable, extensible, reliable distributed applications.
-    <br> <br>
-    
-    <h3>Useful Links</h3>
-    <p>ECF Project Home Page: <a href="http://www.eclipse.org/ecf">http://www.eclipse.org/ecf</a></p>
-    <p>ECF Extras Home Page (Skype, JMS, and Yahoo providers): <a href="http://ecf1.osuosl.org">http://ecf1.osuosl.org/ecf</a></p>
-    <p>ECF Wiki: <a href="http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project">http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project</a></p>
-	<p>New and Noteworthy: <a href="http://www.eclipse.org/ecf/NewAndNoteworthy.html">http://www.eclipse.org/ecf/NewAndNoteworthy.html</a></p>
-	<p>API Documentation: <a href="http://wiki.eclipse.org/index.php/ECF_API_Docs">http://wiki.eclipse.org/index.php/ECF_API_Docs</a></p>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/graphshare.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/graphshare.html
deleted file mode 100644
index ffdabe1..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/graphshare.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>Shared Model Editing</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>Shared Model Editing Using GraphShare</h2>
-<p>The Shared Data Graph Editor allows a group of Eclipse users
-connected to the same container group to collaboratively edit arbitrary
-EMF-generated models. It is an example application that shows how to
-use the GraphShare service.</p>
-<h3>Prerequisites</h3>
-<p>In addition to ECF, you will need:<br>
-</p>
-<ol>
-  <li>Eclipse 3.1M4+</li>
-  <li>EMF+SDO 2.1.0.I2005+<br>
-  </li>
-</ol>
-<h3>Steps</h3>
-<ol>
-  <li>In your workspace, create a simple project, e.g. <span
- style="font-style: italic;">test</span>.</li>
-  <li>Use the ECF Collaboration Client to connect to a collaboration
-server (local or remote).</li>
-  <li>Create a sample file to collaboratively edit:</li>
-  <ol>
-    <li>In the Navigator view, right-click your newly-created project
-and select <span style="font-style: italic;">New -&gt; Other...</span></li>
-    <li>Select <span style="font-style: italic;">Example EMF Model
-Creation Wizards -&gt; Data Graph Model</span> and click <span
- style="font-style: italic;">Next</span>.</li>
-    <li>Choose a unique filename for your new model. Note that the full
-workspace path of this file (including the project and all folders) is
-very important -- it is what identifies the model among the peers.
-Click <span style="font-style: italic;">Next</span>.</li>
-    <li>Select <span style="font-style: italic;">http:///org/eclipse/ecf/example/library.ecore</span>
-as the model URI and <span style="font-style: italic;">Library</span>
-as the Model Object. Click <span style="font-style: italic;">Finish</span>.<br>
-    </li>
-  </ol>
-  <li>If you are the first one to share this file, you will see an
-empty Library. If someone else already published this model, you will
-get the initial copy from them.</li>
-  <li>Make changes to the model. When you save, your changes will be
-broadcast to others. When someone else saves, your unsaved changes, if
-any, will be thrown away and replaced by theirs.<br>
-  </li>
-</ol>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/helloworld.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/helloworld.html
deleted file mode 100644
index d258daf..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/helloworld.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>The Classic Hello World Example for ECF</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>The Classic Hello World Example for ECF</h2>
-<h3>Overview</h3>
-<p>As a simple first look at ECF, take a look at implementing a simple "Hello World" plugin that can send messages to other instances of the example app.  
-	As a messaging application, or example is only really useful when multiple instances are running.</p>
-<h3>The Plugin Perspective</h3>
-<p>So what we are going to do is create an Eclipse plugin that contributes to the workbench via the actionSets extension point.  We will create a simple action
-	that will trigger the instantiation of our Hello World client class:<br><pre>public void run(IAction action) {
-        HelloClient client = new HelloClient();
-        try {
-            client.createAndConnect(IDFactory.createStringID("ecftcp://localhost:3282/server"));
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-}</pre>  From the example source code provided, you can see the Eclipse plugin infrastructure 
-		code in the HelloPlugin and HelloAction classes.  These classes will not be discussed in this tutorial as they are not relevent to ECF.</br></p>
-<h3>The ECF Perspective</h3>
-<p>When we create our client class, HelloClient, from our action, we will provide the class with some setup information it needs to connect to an ECF server:<br><pre>public class HelloClient {
-    
-    public static final String DEFAULT_CONTAINER_TYPE = "ecf.generic.client";
-    public static final String SHARED_OBJECT_ID = "myobject";
-    
-    public HelloClient() {
-        super();
-    }
-
-    public ISharedObjectContainer createAndConnect(ID groupID) {
-        ISharedObjectContainer container = null;
-        try {
-            // Create container instance via ECF container factory
-            container = SharedObjectContainerFactory.getDefault().createSharedObjectContainer(DEFAULT_CONTAINER_TYPE);
-            // Create ID for shared object
-            ID sharedObjectID = IDFactory.createStringID(SHARED_OBJECT_ID);
-            // Create actual shared object
-            ISharedObject sharedObject = new HelloSharedObject();
-            // Add shared object to container
-            container.getSharedObjectManager().addSharedObject(sharedObjectID,sharedObject,new HashMap());
-            // Join group identified by groupID
-            container.joinGroup(groupID,null);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return container;
-    }
-}</pre></br>  Note for this Hello
-	World example to be able to join a shared container, an instance of <code>org.eclipse.ecf.provider.app.ServerApplication</code> in the 
-		<code>org.eclipse.ecf.example.collab</code> needs to be running on the same machine.  The configuration information we are passing to the HelloClient is the following:
-		<ol>
-			<li>An ID to represent the group of contained object.<pre>client.createAndConnect(IDFactory.createStringID("ecftcp://localhost:3282/server"));</pre>
-				<ul><li>This ID is passed into HelloClient.createAndConnect().  
-				This ID is shared among all instances of our application that communicate with each other.</li><li>You may notice a URI-style protocol descriptor in our example.  
-				This tells the shared container what protocol to use when adding instances of SharedObjects to the container.</li></ul>
-			</li>
-			<li>An ID to represent the particular type of shared object that is being shared.<pre>public static final String SHARED_OBJECT_ID = "myobject";</pre>
-				<ul><li>We define one of these Shared Object IDs for our application.  
-				If we wanted to create another application that used the same container, but required a seperate event queue, we would define a new Shared Object ID.</li><li>For example,
-				If we wanted to create a Japanese version of Hello World, using an ID seperate from the English version would ensure that no English-only reading clients would be
-				 burdened with figuring out what "Konichiwa Minasan" means.</li></ul></li>
-			<li>A classname that defines in what ways the instances of our shared objects will be able to communicate.<pre>public static final String DEFAULT_CONTAINER_TYPE = "ecf.generic.client";</pre>
-				<li>For our example, we will use the ecf.generic.client class.  You can see an example of this class in the <code>org.eclipse.ecf.provider.comm.tcp.Client</code> class in the <code>org.eclipse.ecf.provider</code> plugin.</li></li>
-				 </ol>
-			With this information, a SharedContainer is created.  From there, we simply create an instance of a SharedObject, in this case the HelloSharedObject class, and join it to the group.  
-			From there, all instances in the container will be able to communicate in this code block:<br><pre>    public void handleEvent(Event event) {
-        if (event instanceof ISharedObjectActivatedEvent) {
-            System.out.println("HELLO WORLD "+getID()+".  I'm activated!");
-        } else if (event instanceof ISharedObjectDeactivatedEvent) {
-            System.out.println("GOODBYE from "+getID()+".  I'm deactivated!");
-        } else if (event instanceof ISharedObjectContainerJoinedEvent) {
-            System.out.println("Remote "+((ISharedObjectContainerJoinedEvent)event).getJoinedContainerID()+" joined!");
-        } else if (event instanceof ISharedObjectContainerDepartedEvent) {
-            System.out.println("Remote "+((ISharedObjectContainerDepartedEvent)event).getDepartedContainerID()+" departed!");
-        } else if (event instanceof ISharedObjectMessageEvent) {
-            ISharedObjectMessageEvent evt = (ISharedObjectMessageEvent) event;
-            System.out.println("Got message "+evt.getData()+" from "+evt.getSenderSharedObjectID());
-        }
-    }</pre></br>
-		</p>
-		<h3>Conclusion</h3>
-		<p>All the "application logic" of our Hello World example is defined in the HelloSharedObject class and this really is the core value that ECF provides.  
-			To grow our application, there are specific parts in the framework for various logical aspects of communication.  For example, to add another protocol, 
-			we would only need to create a new protocol provider, and our core messaging logic would remain untouched.
-		<p>The source code used in this example may be found at [].</p>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspective.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspective.png
deleted file mode 100644
index 0a6bf09..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspective.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspectiveselect.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspectiveselect.png
deleted file mode 100644
index ef01194..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspectiveselect.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspectivewidgets.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspectivewidgets.png
deleted file mode 100644
index 0a6af6a..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/commperspectivewidgets.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img1.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img1.png
deleted file mode 100644
index 53067f2..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img1.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img10.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img10.png
deleted file mode 100644
index d633b91..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img10.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img11.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img11.png
deleted file mode 100644
index b48773a..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img11.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img12.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img12.png
deleted file mode 100644
index db88a6b..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img12.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img13.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img13.png
deleted file mode 100644
index ebca7b1..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img13.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img14.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img14.png
deleted file mode 100644
index 221dfb2..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img14.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img15.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img15.png
deleted file mode 100644
index 7363c55..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img15.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img2.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img2.png
deleted file mode 100644
index 0815ebc..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img2.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img3.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img3.png
deleted file mode 100644
index 111b835..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img3.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img4.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img4.png
deleted file mode 100644
index d752a68..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img4.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img5.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img5.png
deleted file mode 100644
index 5e30314..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img5.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img6.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img6.png
deleted file mode 100644
index 60c02f6..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img6.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img7.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img7.png
deleted file mode 100644
index 8838ebd..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img7.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img9.png b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img9.png
deleted file mode 100644
index 2969478..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/images/img9.png
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/prerequisites.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/prerequisites.html
deleted file mode 100644
index 26eff2c..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/prerequisites.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>System Requirements</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>System Requirements</h2>
-<p>ECF plugins will be built in Java and will be portable to any
-platform supported by Eclipse. For components that might not run on
-Eclipse (e.g. servers), all ECF-created code will be built to depend
-only upon pure Java Standard Edition (1.4+). We also will look to
-support OSGI Foundation as a minimum runtime platform.</p>
-<p>You will need the following already installed on your machine:</p>
-<ul>
-  <li>Java version 1.4.2 or newer...1.5 or 1.6 OK also
-    <pre>java version "1.4.2_04"<br>Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)<br>Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed model</pre>
-  </li>
-  <li> <a
- href="http://download.eclipse.org/eclipse/downloads/">Eclipse version 3.3 or newer</a><br>
-    <br>
-Earlier Eclipse Platform versions will work with some of the ECF APIs, but we have not tested them.  Also, 
-we recently have taken advantage of the new UI features in 3.3 (tooltips improvements, menuContribution extension
-point, etc), and that's why we now depend upon version 3.3.  For ECF APIs (plugins/bundles that do <b>not</b>
-have *.ui in their bundle id), they generally support older runtime versions.  See the manifest.mf for each 
-plugin if you want to know the execution environment requirements for each bundle.<br>
-  </li>
-</ul>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/quickStart.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/quickStart.html
deleted file mode 100644
index d06a6c5..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/quickStart.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>Quick Start</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>Quick Start</h2>
-<p>
-<h3><a href="http://wiki.eclipse.org/ECF#OSGi_4.2_Remote_Services">OSGi 4.2 Remote Services</a></h3>
-
-ECF now includes a standard implementation of the OSGi 4.2 Remote Services specification.  See a number of
-examples and documentation at the <a href="http://wiki.eclipse.org/ECF#OSGi_4.2_Remote_Services">ECF wiki remote services section</a>.
-<p>
-<h3>Using ECF to talk to others developers remotely</h3>
-<p align="justify">
-ECF allows you connect to others developers using the protocols XMPP, MSN, Yahoo, ECF, IRC, JMS, Zeroconf/Bonjour, and others. Upon installation, ECF creates a new perspective for the workspace called 'Communications'.
-To access this perspective, click on the 'Communications' button in the upper right of the workspace:<P>
-<img src="images/img1.png">
-<p>
-<ol>
-	<li><a href="#xmpp">XMPP(GoogleTalk) Connection Example</a></li>
-	<li><a href="#irc">IRC Connection Example</a></li>
-	<li><a href="#ecf">ECF Collaboration Group</a></li>
-	<li><a href="#useful">Useful Links</a></li>
-</ol>
-<p>&nbsp;</p>
-<h3><a name="xmpp"/>XMPP(GoogleTalk) Connection Example</h3>
-<p>
-To connect to Instant Messaging (IM), click on <b>ECF Connection</b> icon <img src="images/img2.png"> and select XMPPS protocol:<p>
-<img src="images/img3.png">
-<p>&nbsp;</p>
-Fill out the <b>Connection Wizard</b> with your account:<p>
-<img src="images/img4.png"><p>
-<p>&nbsp;</p>
-A <b>Contacts View</b> will appear with your contacts:<p>
-<img src="images/img5.png"><p>
-<p>&nbsp;</p>
-To send a message click over the contact with right button:<p>
-<img src="images/img6.png"><p>
-<p>&nbsp;</p>
-After that, type your message on a <b>Messages View</b>:<p>
-<img src="images/img7.png"><p>
-<p>&nbsp;</p>
-<h3><a name="irc"/>IRC Connection Example</h3>
-<p>
-To connect to IRC channel, click on <b>ECF Connection</b> icon <img src="images/img2.png"> and select IRC protocol:<p>
-<img src="images/img9.png">
-<p>&nbsp;</p>
-Fill out the <b>Connection Wizard</b> with IRC channel information:<p>
-<img src="images/img10.png"><p>
-<p>&nbsp;</p>
-A <b>Chat IRC View</b> will appear:<p>
-<img src="images/img11.png"><p>
-<p>&nbsp;</p>
-<h3><a name="ecf"/>ECF Collaboration Group (Real-Time Group Collaboration)</h3>
-<p align="justify">
-Using ECF Collaboration Group, you can provide Shared Workspaces:
-<ul>
-<li>URL Sharing</li>
-<li>Shared Editing</li>
-<li>Screen Capture</li>
-<li>Co-Browse Web</li>
-<li>Private and Public messages</li>
-<li>And others</li>
-</ul>
-</p>
-<p>
-To connect to ECF Collaboration Group, click on <b>ECF Connection</b> icon <img src="images/img12.png"> and fill out the connection wizard:<p>
-<img src="images/img13.png">
-<p>&nbsp;</p>
-A <b>Collaboration View (ECF Generic)</b> will appear:<p>
-<img src="images/img14.png"><p>
-<p>&nbsp;</p>
-Click with right button over a contact into ECF buddy list, and you will can share url, send file, send messages and others:<p>
-<img src="images/img15.png"><p>
-<p>&nbsp;</p>
-<h3><a name="useful"/>Useful Links</h3>
-<ul>
-    <li>ECF Project Home Page: <a href="http://www.eclipse.org/ecf">http://www.eclipse.org/ecf</a></li>
-    <li>ECF Extras Home Page (Skype, JMS, and Yahoo providers): <a href="http://ecf1.osuosl.org">http://ecf1.osuosl.org/ecf</a></li>
-    <li>ECF Wiki: <a href="http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project">http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project</a></li>
-	<li>New and Noteworthy: <a href="http://www.eclipse.org/ecf/NewAndNoteworthy.html">http://www.eclipse.org/ecf/NewAndNoteworthy.html</a></li>
-	<li>Newsgroup: <a href="news://news.eclipse.org/eclipse.technology.ecf">news://news.eclipse.org/eclipse.technology.ecf</a></li>
-	<li>Mailing List: <a href="mailto:ecf-dev@eclipse.org">ecf-dev@eclipse.org</a></li>
-</ul>	
-
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/runserver.html b/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/runserver.html
deleted file mode 100644
index a3c963a..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/gettingstarted/runserver.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>Running a Collaboration Server on Localhost</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>Running a Collaboration Server on Localhost</h2>
-<ol>
-  <li> Download ECF projects from CVS into your workspace as described <a
- href="http://www.eclipse.org/ecf/downloads.html">here</a>. </li>
-  <li> Choose Run... or Debug... from the Eclipse Run Menu. </li>
-  <li> Under 'Java Application' choose 'ECF Collab Server'. </li>
-  <li> Choose 'Run' (or Debug). </li>
-  <li> This will run a simple server on your localhost machine with the
-ECF URL: ecftcp://localhost:3282/server. You can then connect to this
-server with an Eclipse client as described in Connecting an ECF
-Collaboration Client to an Existing Server above.</li>
-</ol>
-<ol>
-  <li> Install the ECF 'Server Feature' as described <a href="http://www.eclipse.org/ecf/downloads.html#updates">here</a></li>
-  <li> From operating system shell, go to <eclipseinstalllocation>/features/org.eclipse.ecf.serverfeature_<version>/bin</li>
-  <li> Depending upon operating system, use 'startserver.cmd' (windows) or 'startserver.sh' (Unix) to 
-  start a localhost server.  See the file ../conf/server.xml to setup configuration
-  information for the localhost server</li>
-</ol>
-<br>
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/bot.html b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/bot.html
deleted file mode 100644
index 6cf55d5..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/bot.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>Create an IRC bot</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body bgcolor="#ffffff">
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h2>Create an IRC bot</h2>
-<p>
-A bot is a useful daemon application for a user to automate tasks similar to a
-script or a macro. An IRC bot is generally a bot that sits in an IRC channel
-and performs tasks such as answering to commands and logging. This tutorial
-will explain how to create an IRC bot using the bot framework.
-</p>
-
-<p>
-<h3>Requirements</h3>
-As regular expression pattern matching is used, a Java runtime environment of
-1.4.2 or higher is required.
-</p>
-
-<p>
-<h3>Project Setup</h3>
-<b>Dependencies</b>
-<ol>
-<li>Create a 'Plug-in Project' like how you normally would. Since this is a
-bot that will be run in headless mode, we do not need any UI components. You do
-not even need an activator class.</li>
-<li>Open the 'MANIFEST.MF' file and go to the 'Dependencies' tab.</li>
-<li>Add 'org.eclipse.ecf', 'org.eclipse.ecf.presence', and
-'org.eclipse.ecf.presence.bot' as a 'Required Plug-in'.</li>
-<li>Now add 'org.eclipse.core.runtime' as an 'Imported Package'.</li>
-</ol>
-</p>
-
-<p>
-<b>MANIFEST.MF</b>
-<pre> Manifest-Version: 1.0
- Bundle-ManifestVersion: 2
- Bundle-Name: Geir Plug-in
- Bundle-SymbolicName: org.eclipse.ecf.example.geir;singleton:=true
- Bundle-Version: 1.0.0
- Require-Bundle: org.eclipse.ecf,
-  org.eclipse.ecf.presence,
-  org.eclipse.ecf.presence.bot
- Import-Package: org.eclipse.core.runtime</pre>
-</p>
-
-<p>
-<b>Extensions</b>
-<ol>
-<li>Open the 'Extensions' tab.</li>
-<li>Add the 'org.eclipse.ecf.presence.bot.chatRoomRobot' and the
-'org.eclipse.ecf.presence.bot.chatRoomMessageHandler' extension point.</li>
-<li>Select the 'org.eclipse.ecf.presence.bot.chatRoomRobot' extension.</li>
-<li>Fill in something unique for your 'id'. 'org.eclipse.ecf.example.bot.geir2'</li>
-<li>Fill in 'ecf.irc.irclib' for your 'containerFactoryName'.</li>
-<li>For the 'connectId', select an IRC server of your choice and a name for the
-bot. 'irc://geir2@irc.freenode.net'</li>
-<li>For the 'chatRoom' field, pick the channel that you want your bot to join
-upon successful connection to the server above. '#eclipse'</li>
-<li>Now select the 'org.eclipse.ecf.presence.bot.chatRoomMessageHandler' extension point.</li>
-<li>For your 'id', copy the same 'id' that you filled in above.
-'org.eclipse.ecf.example.bot.geir2'</li>
-<li>In 'filterExpression', enter a regular expression that should be matched
-for parsing purposes for your bot. '(~bug[0-9]*)</li>
-<li>Click on the 'class*' hyperlink and then create a new class that implements
-the 'org.eclipse.ecf.presence.bot.IChatRoomMessageHandler' interface. For this
-example, I will assume that your class's name is 'Geir2Bot' under the
-'org.eclipse.ecf.example.bot' package..</li>
-</ol>
-</p>
-
-<p>
-<b>plugin.xml</b>
-<pre> &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
- &lt;?eclipse version=&quot;3.2&quot;?&gt;
- &lt;plugin&gt;
-    &lt;extension
-          point=&quot;org.eclipse.ecf.presence.bot.chatRoomMessageHandler&quot;&gt;
-       &lt;handler
-             chatRoomRobotId=&quot;org.eclipse.ecf.example.bot.geir2&quot;
-             class=&quot;org.eclipse.ecf.example.bot.Geir2Bot&quot;
-             filterExpression=&quot;(~bug[0-9]*)&quot;&gt;
-       &lt;/handler&gt;
-    &lt;/extension&gt;
-    &lt;extension
-          point=&quot;org.eclipse.ecf.presence.bot.chatRoomRobot&quot;&gt;
-       &lt;chatRoomRobot
-             connectId=&quot;irc://geir2@irc.freenode.net&quot;
-             containerFactoryName=&quot;ecf.irc.irclib&quot;
-             id=&quot;org.eclipse.ecf.example.bot.geir2&quot;&gt;
-          &lt;chatRooms
-		        name=&quot;#eclipse&quot;&lt;
-          &gt;/chatRooms&lt;
-       &lt;/chatRoomRobot&gt;
-    &lt;/extension&gt;
- &lt;/plugin&gt;</pre>
-</p>
-
-<p>
-<h3>Writing the Code</h3>
-<ol>
-<li>Open the 'Geir2Bot' class that you have created.</ul>
-<li>Since we want our bot to be able to say something, we need to retrieve an
-interface that will provide us with such a functionality.</ul>
-<li>Add a field to the class of type 'IChatMessageSender'.</ul>
-<li>We will retrieve our instance in the
-'preChatRoomConnect(IChatRoomContainer, ID)' method. This method will be called
-right before our bot joins the channel (#eclipse in our case). You can retrieve
-an instance of an IChatMessageSender by calling 'getChatRoomMessageSender()' on
-the provided 'IChatRoomContainer' instance.</ul>
-<li>Now that our bot has a mechanism for replying, we should write some code to
-parse the messages that the bot receives so that it can give a correct response.
-To get the string that's been said, use the 'getMessage()' method from the
-'IChatRoomMessage' interface that's passed into the
-'handleRoomMessage(IChatRoomMessage)' method.</ul>
-<li>Our regular expression of '(~bug[0-9]*)' implies that any string beginning
-with ~bug followed by any number of digits will be a valid input for our bot to
-read. So let's add some string handling code to route people to Eclipse's
-bugzilla when they type something like ~bug150000 or ~bug180078.</ul>
-<li>To send a reply to the IRC channel, simply use IChatRoomMessageSender's
-'sendMessage(String)' method. This method will throw an 'ECFException', but
-given this simple scenario, we won't bother to handle it.</li>
-</ol>
-</p>
-
-<p>
-<b>org.eclipse.ecf.example.bot.Geir2Bot</b>
-<pre> package org.eclipse.ecf.example.bot;
- 
- import org.eclipse.ecf.core.IContainer;
- import org.eclipse.ecf.core.identity.ID;
- import org.eclipse.ecf.core.util.ECFException;
- import org.eclipse.ecf.presence.bot.IChatRoomBotEntry;
- import org.eclipse.ecf.presence.bot.IChatRoomMessageHandler;
- import org.eclipse.ecf.presence.chatroom.IChatRoomContainer;
- import org.eclipse.ecf.presence.chatroom.IChatRoomMessage;
- import org.eclipse.ecf.presence.chatroom.IChatRoomMessageSender;
- 
- public class Geir2Bot implements IChatRoomMessageHandler {
- 
- 	private IChatRoomMessageSender sender;
- 
- 	public void handleRoomMessage(IChatRoomMessage message) {
- 		// use substring 1 to just truncate the opening tilda (~)
- 		String msg = message.getMessage().substring(1);
- 		try {
- 			if (msg.equals("bug")) { //$NON-NLS-1$
- 				// if no number was provided, just send them to bugzilla
- 				sender.sendMessage("https://bugs.eclipse.org/bugs/"); //$NON-NLS-1$
- 			} else {
- 				// otherwise, give the person a direct link to the bug
-  				sender.sendMessage("https://bugs.eclipse.org/bugs/" //$NON-NLS-1$
- 						+ "show_bug.cgi?id=" + msg.substring(3)); //$NON-NLS-1$
- 			}
- 		} catch (ECFException e) {
- 			e.printStackTrace();
- 		}
- 	}
- 
- 	public void init(IChatRoomBotEntry robot) {
- 		// nothing to do
- 	}
- 
- 	public void preChatRoomConnect(IChatRoomContainer roomContainer, ID roomID) {
- 		sender = roomContainer.getChatRoomMessageSender();
- 	}
- 
- 	public void preContainerConnect(IContainer container, ID targetID) {
- 		// nothing to do
- 	}
- 
- }</pre>
-</p>
-
-<p>
-<b>Running the Example</b>
-<ol>
-<li>Open the 'Run' dialog and then right-click on 'Eclipse Application' and
-select 'New'.</li>
-<li>From the combo drop down in the 'Program to Run' section, select 'Run an 
-pplication:' and choose 'org.eclipse.ecf.presence.bot.chatRoomRobot'.</li>
-<li>Click on the 'Plug-ins' tab.</li>
-<li>From the top, select 'plug-ins selected below only' from the drop down box.</li>
-<li>Pick the plug-in you created (in the example, this was
-'org.eclipse.ecf.example.geir') and 'org.eclipse.ecf.provider.irc'.</li>
-<li>Click on the '''Add Required Plug-ins''' button on the right and then hit
-'Run'.</li>
-<li>Moments later, your bot should appear in the server and channel that you
-specified in the 'plugin.xml' file.</li>
-</ol>
-</p>
-
-<p>
-<pre> * geir2 (n=geir2@bas3-kitchener06-1096650252.dsl.bell.ca) has joined #eclipse
- &lt;user&gt; ~bug
- &lt;geir2&gt; https://bugs.eclipse.org/bugs/
- &lt;user&gt; ~bug76759
- &lt;geir2&gt; https://bugs.eclipse.org/bugs/show_bug.cgi?id=76759</pre>
-</p>
-
-</body>
-</html>
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img001.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img001.gif
deleted file mode 100644
index 1714e84..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img001.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img002.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img002.gif
deleted file mode 100644
index 3896fb4..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img002.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img003.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img003.gif
deleted file mode 100644
index 732c52f..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img003.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img004.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img004.gif
deleted file mode 100644
index ecc82a3..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img004.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img005.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img005.gif
deleted file mode 100644
index e833bf7..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img005.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img006.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img006.gif
deleted file mode 100644
index 178617c..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img006.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img007.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img007.gif
deleted file mode 100644
index ac38ec8..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img007.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img008.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img008.gif
deleted file mode 100644
index f34cd28..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img008.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img009.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img009.gif
deleted file mode 100644
index a72aab2..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img009.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img010.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img010.gif
deleted file mode 100644
index 7511b7e..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img010.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img011.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img011.gif
deleted file mode 100644
index e3a0ef4..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img011.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img012.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img012.gif
deleted file mode 100644
index 2a9244d..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img012.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img013.gif b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img013.gif
deleted file mode 100644
index 6559e76..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/images/img013.gif
+++ /dev/null
Binary files differ
diff --git a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/installation.html b/doc/bundles/org.eclipse.ecf.doc/html/tutorials/installation.html
deleted file mode 100644
index dba364f..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/html/tutorials/installation.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2007. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1"
-	type="text/css">
-<style type="text/css">
-td {border-top: solid thin black;}
-img[alt] {background-color:#ffdddd;}
-tr {vertical-align: top;}
-</style>
-<title>Installation and Running of the ScribbleShare Tutorial</title>
-<script language="JavaScript" type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"> </script>
-</head>
-<body>
-<h1><img src="../../intro/css/images/ecf_intro.gif">Eclipse Communication Framework (ECF)</h1>
-<p>
-<h1>How-To: Installation and Running of the ScribbleShare Tutorial</h1>
-
-<p>Last updated: April 10, 2006</p>
-
-<p>This simple how-to is a step-by-step description of how to install and run
-the ScribbleShare ECF tutorial plug-in.  It should guide you to having a 
-working ECF demo in minutes.</p>
-
-<p>The screenshots are based upon  version 3.2 M5a of the Eclipse SDK and
-version 0.7.5 of ECF.</p>
-
-<hr/>
-
-<h2>Step 0: Prerequisites</h2>
-<p>Download and upack into the same directory the latest milestone or stable 
-release of Eclipse 3.2 and compatible versions of EMF, GEF, and ECF.  Currently, 
-these consist of the following files for windows (similar files exist for Linux):</p>
-<ul>
-<li>eclipse-SDK-4.2Mfa-win32.zip</li>
-<li>emf-sdo-xsd-SDK-2.2.0M5.zip</li>
-<li>GEF-ALL-3.2M5.zip</li>
-<li>org.eclipse.ecf.skd-0.7.5.s20060314.zip</li>
-</ul>
-
-<p>After installing Eclipse, EMF, GEF, and ECF, verify that they are all 
-available in your Eclipse environment:</p>
-<ul>
-<li>Bring up the "Help/About Eclipse Platform" dialog.<br/>
-<img src="images/img001.gif" alt="Help/About Eclipse Platform"/><br/>
-&nbsp;</li>
-
-<li>Click on "Plug-in Details".<br/>
-<img src="images/img002.gif" alt="Plug-in Details"/><br/>
-&nbsp;</li>
-
-<li>Click the "Plug-in Id" column heading to order the plug-ins by that field.
-Then, check that ECF set of plug-ins are present.<br/>
-<img src="images/img003.gif" alt="Check ECF plug-ins"/><br/>
-&nbsp;</li>
-</ul>
-<hr/>
-
-<h2>Step 1: Start Your ECF Test Server</h2>
-<p/>
-<ul>
-<li>Start a command shell.</li>
-<li>CD to the Eclipse features directory.</li>
-<li>CD to org.eclipse.ecf.serverfeature_X.X.X\bin directory (X.X.X is the ecf version number).</li>
-<li>Run startserver.cmd for windows, startserver.sh for *.nix.</li>
-<li>The default settings, output to the command shell, are fine for now.<br/>
-<img src="images/img004.gif" alt="ECF Test Server Command Shell"/><br/>
-&nbsp;</li>
-</ul>
-<p/>
-<hr/>
-<h2>Step 2: Run Eclipse and import the ECF tutorial</h2>
-<p/>
-<ul>
-<li>Execute the eclipse.exe of the Eclipse you intalled in Step 0</li>
-<li>Go the the main menu and click File->Import->CVS->Projects From CVS->Next:<br/>
-<img src="images/img005.gif" alt="Import ECF Projects From CVS->Next"/><br/>
-&nbsp;</li>
-<li>Enter the CVS repository info, Host = dev.eclipse.org, Path = /home/technology, User = Anonymous, Password= (leave blank)->Next:<br/>
-<img src="images/img006.gif" alt="Enter CVS Info->Next"/><br/>
-&nbsp;</li>
-<li>Select the radiobutton "Use Specified Module Name" and enter "org.eclipse.ecf/plugins/org.eclipse.ecf.tutorial"->Finish:<br/>
-<img src="images/img007.gif" alt="Select org.eclipse.ecf/plugins/org.eclipse.ecf.tutorial module"/><br/>
-&nbsp;</li>
-</ul>
-<hr/>
-<h2>Step 3: Launch the tutorial plugin in another workbench</h2>
-<p/>
-<ul>
-<li>Right click on the project org.eclipse.ecf.tutorial->Run->Run As->Run...->(Double-Click)Eclipse Application</li>
-<li>Change the launcher name to something meaningful like "ScribbleShare1"<br/>
-<img src="images/img008.gif" alt="Configure Launcher PartI"/><br/>
-&nbsp;</li>
-<li>Click the "Plug-ins" tab, make sure the radiobutton with "launch with all workspace & enabled plug-ins" is selected<br/>
-<img src="images/img009.gif" alt="Configure Launcher PartII"/><br/>
-&nbsp;</li>
-<li>Click Apply->Run</li>
-</ul>
-<hr/>
-
-<h2>Step 4: Connect workspace to ECF server</h2>
-<p/>
-<ul>
-<li>In the newly launched workbench, click the "ECF" menu item->Connect Workspace</li>
-<li>Choose "ECF Generic" Connection Protocol</li>
-<li>Type "ecftcp://localhost:3282/server" for Group ID, "user1" for nickname:<br/>
-<img src="images/img010.gif" alt="Connect Workspace to ECF"/><br/>
-&nbsp;</li>
-</ul>
-<hr/>
-
-<h2>Step 5a: Open ScribbleShare View</h2>
-<p/>
-<ul>
-<li>In the newly launched workbench, click the "ECF Tutorial" menu item->ECF Client:<br/>
-<img src="images/img011.gif" alt="ECF Tutorial Client"/><br/>
-&nbsp;</li>
-<li>Resize and move the workbench window so that it takes up less than half your screen</li>
-</ul><p/>
-
-<h2>Step 5b: Open Another ScribbleShare View</h2>
-<p/>
-<ul>
-<li>Go back to the original Eclipse workbench and repeat Steps 3 and 4.  Be to enter a different "workspace data location" in the new launcher menu</li>
-<li>Resize and move the second workbench window so that it is beside the first one</li>
-<li>Go to the first workbench, draw some stuff in the ECF Client view</li>
-<li>You should observe drawing objects created in one workbench view appearing in the other:<br/>
-<img src="images/img012.gif" alt="Synchronous Collaborating ECF Client Views"/><br/>
-&nbsp;</li>
-</ul><p/>
-<hr/>
-
-<h2>Step 6: Bonus Demo If Another Networked Computer Available</h2>
-<p/>
-<ul>
-<li>Repeat Steps 0-2 if necessary for second computer.</li>
-<li>Edit ScribbleClient.java in ECF project imported from CVS.</li>
-<li>Change String TARGET_SERVER to point to the hostname of the first computer used in part 5 above, for example, "ecftcp://host1:3282/server":<br/>
-<img src="images/img013.gif" alt="Synchronous Collaborating ECF Client Views"/><br/>
-&nbsp;</li>
-<li>Repeat Steps 3-5a on second computer.  There's no need to start the ECF server on the second computer, you'll use the one already running on the first computer.</li>
-<li>You should now observe all workbench views synchronously displaying drawing objects.</li>
-</ul><p/>
-<hr/>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/bundles/org.eclipse.ecf.doc/intro/css/samples.css b/doc/bundles/org.eclipse.ecf.doc/intro/css/samples.css
new file mode 100644
index 0000000..267f944
--- /dev/null
+++ b/doc/bundles/org.eclipse.ecf.doc/intro/css/samples.css
@@ -0,0 +1,2 @@
+a#orgeclipseecfdoc-introLink img { background-image : url(images/ecf_intro.gif); }
+a#orgeclipseecfdoc-introLink:hover img { background-image : url(images/ecf_intro_hov.gif); }
\ No newline at end of file
diff --git a/doc/bundles/org.eclipse.ecf.doc/intro/css/tutorials.css b/doc/bundles/org.eclipse.ecf.doc/intro/css/tutorials.css
index 58ab782..ca47e34 100644
--- a/doc/bundles/org.eclipse.ecf.doc/intro/css/tutorials.css
+++ b/doc/bundles/org.eclipse.ecf.doc/intro/css/tutorials.css
@@ -1,4 +1,8 @@
-a#orgeclipseecfdoc-scribbleshare img { background-image : url(images/ecf_intro.gif); }
-a#orgeclipseecfdoc-scribbleshare:hover img { background-image : url(images/ecf_intro_hov.gif);}
-a#orgeclipseecfdoc-ircbot img { background-image : url(images/ecf_intro.gif); }
-a#orgeclipseecfdoc-ircbot:hover img {background-image : url(images/ecf_intro_hov.gif);}
+a#orgeclipseecfdoc-tut-buildingyourfirstosgiremoteservice img { background-image : url(images/ecf_intro.gif); }
+a#orgeclipseecfdoc-tut-buildingyourfirstosgiremoteservice:hover img { background-image : url(images/ecf_intro_hov.gif);}
+a#orgeclipseecfdoc-tut-buildingyourfirstasyncosgiremoteservice img { background-image : url(images/ecf_intro.gif); }
+a#orgeclipseecfdoc-tut-buildingyourfirstasyncosgiremoteservice:hover img {background-image : url(images/ecf_intro_hov.gif);}
+a#orgeclipseecfdoc-tut-osgiremoteservicesfortheraspberrypi img { background-image : url(images/ecf_intro.gif); }
+a#orgeclipseecfdoc-tut-osgiremoteservicesfortheraspberrypi:hover img {background-image : url(images/ecf_intro_hov.gif);}
+a#orgeclipseecfdoc-tut-creatingrestfulremoteserviceprovider img { background-image : url(images/ecf_intro.gif); }
+a#orgeclipseecfdoc-tut-creatingrestfulremoteserviceprovider:hover img {background-image : url(images/ecf_intro_hov.gif);}
diff --git a/doc/bundles/org.eclipse.ecf.doc/intro/overviewExtensionContent.xml b/doc/bundles/org.eclipse.ecf.doc/intro/overviewExtensionContent.xml
index ab69e01..99d32fc 100644
--- a/doc/bundles/org.eclipse.ecf.doc/intro/overviewExtensionContent.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/intro/overviewExtensionContent.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <introContent>
-  	<extensionContent id="orgeclipseecfdoc-introExtension" style="css/overview.css" name="Communications" path="overview/@">
+  	<extensionContent id="orgeclipseecfdoc-introExtension" style="css/overview.css" name="ECF OSGi Remote Services" path="overview/@">
 		<group style-id="content-group" id="orgeclipseecfdoc-introLink-group">
-       		<link label="Communications" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.ecf.doc/html/gettingstarted/ecf_overview.html" id="orgeclipseecfdoc-introLink" style-id="content-link">
-          		<text>Learn how to use ECF to communicate with other developers.</text>
+       		<link label="ECF OSGi Remote Services" url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/ECF" id="orgeclipseecfdoc-introLink" style-id="content-link">
+          		<text>Learn how to use OSGi Remote Services for Standardized Inter-Process Communications</text>
        		</link>
        	</group>
   	</extensionContent>
diff --git a/doc/bundles/org.eclipse.ecf.doc/intro/samplesExtensionContent.xml b/doc/bundles/org.eclipse.ecf.doc/intro/samplesExtensionContent.xml
new file mode 100644
index 0000000..302d584
--- /dev/null
+++ b/doc/bundles/org.eclipse.ecf.doc/intro/samplesExtensionContent.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<introContent>
+	<extensionContent id="orgeclipseecfdoc-introExtension" name="ECF OSGi Remote Services"
+		style="css/samples.css" path="samples/@">
+		<group label="ECF OSGi Remote Services" id="orgeclipseecfdoc-introLink-group" style-id="content-group">
+			<link 
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service" 
+				label="Building Your First OSGi Remote Service" id="orgeclipseecfdoc-tut-buildingyourfirstosgiremoteservice"	style-id="content-link">
+				<text>An introductory tutorial showing how to create and run a simple OSGi Remote Service</text>
+			</link>
+			<link
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_Building_your_first_Asynchronous_OSGi_Remote_Service"
+				label="Building Your First Asynchronous Remote Service" id="orgeclipseecfdoc-tut-buildingyourfirstasyncosgiremoteservice" style-id="content-link">
+				<text>An introductory tutorial showing how to create an run a non-blocking asynchronous OSGi Remote Service</text>
+			</link>
+			<link
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_OSGi_Remote_Services_for_the_Raspberry_Pi"
+				label="OSGi Remote Services for the Raspberry Pi" id="orgeclipseecfdoc-tut-osgiremoteservicesfortheraspberrypi" style-id="content-link">
+				<text>An introductory Internet of Things (IoT) tutorial showing how to create and use OSGi Remote Services on a Raspberry Pi</text>
+			</link>
+			<link
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_Creating_a_RESTful_Remote_Service_Provider"
+				label="Creating a RESTful Remote Service Provider" id="orgeclipseecfdoc-tut-creatingrestfulremoteserviceprovider" style-id="content-link">
+				<text>A more advanced tutorial showing how to create a custom OSGi Remote Services distribution provider</text>
+			</link>
+		</group>
+	</extensionContent>
+</introContent>
diff --git a/doc/bundles/org.eclipse.ecf.doc/intro/tutorialsExtensionContent.xml b/doc/bundles/org.eclipse.ecf.doc/intro/tutorialsExtensionContent.xml
index dff2cb4..8578117 100644
--- a/doc/bundles/org.eclipse.ecf.doc/intro/tutorialsExtensionContent.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/intro/tutorialsExtensionContent.xml
@@ -1,17 +1,27 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <introContent>
-	<extensionContent id="orgeclipseecfdoc-introExtension" name="Communications"
+	<extensionContent id="orgeclipseecfdoc-introExtension" name="ECF OSGi Remote Services"
 		style="css/tutorials.css" path="tutorials/@">
-		<group label="Communications" id="orgeclipseecfdoc-introLink-group" style-id="content-group">
+		<group label="ECF OSGi Remote Services" id="orgeclipseecfdoc-introLink-group" style-id="content-group">
 			<link 
-				url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.ecf.doc/html/tutorials/installation.html" 
-				label="Installation and Running" id="orgeclipseecfdoc-scribbleshare"	style-id="content-link">
-				<text>Installation and Running of the ScribbleShare Tutorial.</text>
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service" 
+				label="Building Your First OSGi Remote Service" id="orgeclipseecfdoc-tut-buildingyourfirstosgiremoteservice"	style-id="content-link">
+				<text>An introductory tutorial showing how to create and run a simple OSGi Remote Service</text>
 			</link>
 			<link
-				url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.ecf.doc/html/tutorials/bot.html"
-				label="Create an IRC bot" id="orgeclipseecfdoc-ircbot" style-id="content-link">
-				<text>Create an IRC bot.</text>
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_Building_your_first_Asynchronous_OSGi_Remote_Service"
+				label="Building Your First Asynchronous Remote Service" id="orgeclipseecfdoc-tut-buildingyourfirstasyncosgiremoteservice" style-id="content-link">
+				<text>An introductory tutorial showing how to create an run a non-blocking asynchronous OSGi Remote Service</text>
+			</link>
+			<link
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_OSGi_Remote_Services_for_the_Raspberry_Pi"
+				label="OSGi Remote Services for the Raspberry Pi" id="orgeclipseecfdoc-tut-osgiremoteservicesfortheraspberrypi" style-id="content-link">
+				<text>An introductory Internet of Things (IoT) tutorial showing how to create and use OSGi Remote Services on a Raspberry Pi</text>
+			</link>
+			<link
+				url="http://org.eclipse.ui.intro/showHelpTopic?id=https://wiki.eclipse.org/Tutorial:_Creating_a_RESTful_Remote_Service_Provider"
+				label="Creating a RESTful Remote Service Provider" id="orgeclipseecfdoc-tut-creatingrestfulremoteserviceprovider" style-id="content-link">
+				<text>A more advanced tutorial showing how to create a custom OSGi Remote Services distribution provider</text>
 			</link>
 		</group>
 	</extensionContent>
diff --git a/doc/bundles/org.eclipse.ecf.doc/intro/whatsnewExtensionContent.xml b/doc/bundles/org.eclipse.ecf.doc/intro/whatsnewExtensionContent.xml
index c459482..db789da 100644
--- a/doc/bundles/org.eclipse.ecf.doc/intro/whatsnewExtensionContent.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/intro/whatsnewExtensionContent.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <introContent>
-	<extensionContent id="org.eclipse.ecf" name="Communications"
+	<extensionContent id="org.eclipse.ecf" name="ECF OSGi Remote Services"
 		style="css/whatsnew.css" path="whatsnew/@">
 		<group id="content-group" style-id="content-group">
-			<link label="Communications"
+			<link label="ECF OSGi Remote Services"
 				url="http://org.eclipse.ui.intro/showHelpTopic?id=http://www.eclipse.org/ecf/NewAndNoteworthy.html"
 				id="orgeclipseecfdoc-introLink" style-id="content-link">
 				<text>
-					Find out the significant changes made to ECF
+					Find out the significant changes made to ECF in recent versions
 				</text>
 			</link>
 		</group>
diff --git a/doc/bundles/org.eclipse.ecf.doc/plugin.xml b/doc/bundles/org.eclipse.ecf.doc/plugin.xml
index f3c9a92..016d61e 100644
--- a/doc/bundles/org.eclipse.ecf.doc/plugin.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/plugin.xml
@@ -10,10 +10,9 @@
 <!-- ============================================================================= -->
    <extension point="org.eclipse.help.toc">
       <toc file="toc.xml" primary="true"/>
-      <toc file="tocpics_Concepts.xml"/>
+      <toc file="topics_Tutorials.xml"/>
       <toc file="topics_Reference.xml"/>
       <toc file="topics_Extpoint.xml"/>
-      <toc file="topics_Tutorials.xml"/>
       <toc
             file="tocapi.xml"
             primary="false">
@@ -41,5 +40,9 @@
          configId="org.eclipse.ui.intro.universalConfig"
          content="$nl$/intro/tutorialsExtensionContent.xml">
       </configExtension>
+      <configExtension
+         configId="org.eclipse.ui.intro.universalConfig"
+         content="$nl$/intro/samplesExtensionContent.xml">
+      </configExtension>
    </extension>
 </plugin>
diff --git a/doc/bundles/org.eclipse.ecf.doc/toc.xml b/doc/bundles/org.eclipse.ecf.doc/toc.xml
index 20e55c5..09e1c98 100644
--- a/doc/bundles/org.eclipse.ecf.doc/toc.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/toc.xml
@@ -1,18 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.toc"?>
 
-<toc label="ECF Developer Guide" link_to="toc.xml">
-   <topic label="What's New and Noteworthy" href="http://www.eclipse.org/ecf/NewAndNoteworthy.html"/>
-    <topic label="Project Blog" href="http://eclipseecf.blogspot.com/"/>
-    <topic label="OSGi Remote Services" href="http://wiki.eclipse.org/ECF#OSGi_Remote_Services">
+<toc label="ECF OSGi Remote Services Developer Guide" link_to="toc.xml">
+    <topic label="New and Noteworthy" href="http://www.eclipse.org/ecf/NewAndNoteworthy.html"/>
+    <topic label="Download and Install" href="http://www.eclipse.org/ecf/downloads.php"/>
+    <topic label="OSGi Remote Services" href="http://wiki.eclipse.org/ECF">
 		<link toc="topics_Reference_RemoteServices.xml"/>
     </topic>
-    <topic label="Distributed Event Admin" href="http://wiki.eclipse.org/Distributed_EventAdmin_Service"/>
-    <topic label="Generic Servers" href="http://wiki.eclipse.org/ECF_Servers"/>
-   <topic label="Reference">
-      <anchor id="reference"/>
-   </topic>
-   <topic label="Tutorials">
-      <anchor id="tutorials"/>
-   </topic>
+    <topic label="Resources">
+        <link toc="topics_Reference.xml"/>
+    </topic> 
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/tocapi.xml b/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
index d4efd56..f8617f9 100644
--- a/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
@@ -1,116 +1,171 @@
 
 <toc label="API JavaDoc">
-args[0] is http://download.eclipse.org/rt/ecf/3.5Test/javadoc/package-list
-<topic label="org.eclipse.ecf.core" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.jobs" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/jobs/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.provider" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.security" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/security/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.provider" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.security" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/security/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.start" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/start/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.status" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/status/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.user" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/user/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.util.reflection" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/util/reflection/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.mergeable" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/mergeable/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/discovery/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/discovery/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/docshare/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare.menu" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/docshare/menu/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare.messages" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/docshare/messages/package-summary.html"/>
-<topic label="org.eclipse.ecf.example.clients" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/example/clients/package-summary.html"/>
-<topic label="org.eclipse.ecf.example.clients.applications" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/example/clients/applications/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.loadbalancing" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/loadbalancing/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.provider.trivial" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/provider/trivial/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.remoteservices.common" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/remoteservices/common/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.remoteservices.hello" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/remoteservices/hello/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.remoteservices.hello.impl" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/remoteservices/hello/impl/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events.socket" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/events/socket/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events.socketfactory" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/events/socketfactory/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.distribution" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/osgi/services/distribution/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.remoteserviceadmin" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/osgi/services/remoteserviceadmin/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/bot/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot.application" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/bot/application/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot.impl" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/bot/impl/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.chatroom" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/chatroom/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.history" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/history/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.im" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/im/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.roster" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/roster/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.search" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/search/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.search.message" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/search/message/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.bittorrent" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/protocol/bittorrent/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.msn" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/protocol/msn/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.msn.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/protocol/msn/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.comm" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/comm/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.comm.tcp" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/comm/tcp/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.datashare" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/datashare/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.datashare.nio" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/datashare/nio/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.discovery" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.dnssd" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/dnssd/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.browse" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/browse/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.events.socket" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/events/socket/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.httpclient" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/httpclient/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.outgoing" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/outgoing/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.retrieve" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/retrieve/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.generic" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.generic.gmm" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/generic/gmm/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.irc.bot" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/irc/bot/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.irc.bot.handler" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/irc/bot/handler/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jslp.container" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/jslp/container/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jslp.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/jslp/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.local.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/local/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.r_osgi.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/r_osgi/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.remoteservice.generic" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/remoteservice/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.xmpp" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/xmpp/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.xmpp.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/xmpp/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/zookeeper/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.core" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/zookeeper/core/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/zookeeper/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.eventadmin" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/eventadmin/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.synd" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/synd/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rpc" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rpc/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rpc.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rpc/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rpc.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rpc/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.soap.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/soap/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.soap.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/soap/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.util.tracker" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/util/tracker/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservices.rest.rss" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservices/rest/rss/package-summary.html"/>
-<topic label="org.eclipse.ecf.server" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/server/package-summary.html"/>
-<topic label="org.eclipse.ecf.server.generic" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/server/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.server.generic.app" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/server/generic/app/package-summary.html"/>
-<topic label="org.eclipse.ecf.storage" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/storage/package-summary.html"/>
-<topic label="org.eclipse.ecf.sync" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/sync/package-summary.html"/>
-<topic label="org.eclipse.ecf.sync.doc" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/sync/doc/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.dtmf" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/dtmf/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/service/package-summary.html"/>
-
+  <topic label="OSGi Remote Services API">
+<topic label="ECF Core API">
+<topic label="org.eclipse.ecf.core" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.jobs" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/jobs/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.provider" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/provider/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.security" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/security/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.start" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/start/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.status" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/status/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.user" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/user/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.util.reflection" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/util/reflection/package-summary.html"/>
+</topic>
+<topic label="Discovery API">
+<topic label="org.eclipse.ecf.discovery" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/discovery/package-summary.html"/>
+<topic label="org.eclipse.ecf.discovery.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/discovery/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.discovery.service" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/discovery/service/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.discovery" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/discovery/package-summary.html"/>
+</topic>
+<topic label="Remote Service/Distribution Provider API">
+<topic label="org.eclipse.ecf.remoteservice" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.synd" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/synd/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc.server" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/server/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.soap.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/soap/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.soap.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/soap/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.util.tracker" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/util/tracker/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservices.rest.rss" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservices/rest/rss/package-summary.html"/>
+</topic>
+<topic label="Remote Service Admin API">
+<topic label="org.eclipse.ecf.osgi.services.distribution" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/osgi/services/distribution/package-summary.html"/>
+<topic label="org.eclipse.ecf.osgi.services.remoteserviceadmin" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/osgi/services/remoteserviceadmin/package-summary.html"/>
+</topic>
+<topic label="Distributed EventAdmin API">
+<topic label="org.eclipse.ecf.remoteservice.eventadmin" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/eventadmin/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.eventadmin.serialization" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/eventadmin/serialization/package-summary.html"/>
+</topic>
+</topic>
+  <topic label="All API">
+args[0] is http://download.eclipse.org/rt/ecf/latest/javadoc/package-list
+<topic label="org.eclipse.ecf.core" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.jobs" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/jobs/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.provider" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/provider/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.security" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/security/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.sharedobject" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/sharedobject/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.sharedobject.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/sharedobject/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.sharedobject.model" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/sharedobject/model/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.sharedobject.provider" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/sharedobject/provider/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.sharedobject.security" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/sharedobject/security/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.sharedobject.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/sharedobject/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.start" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/start/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.status" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/status/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.user" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/user/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.core.util.reflection" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/core/util/reflection/package-summary.html"/>
+<topic label="org.eclipse.ecf.datashare" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/datashare/package-summary.html"/>
+<topic label="org.eclipse.ecf.datashare.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/datashare/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.datashare.mergeable" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/datashare/mergeable/package-summary.html"/>
+<topic label="org.eclipse.ecf.datashare.service" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/datashare/service/package-summary.html"/>
+<topic label="org.eclipse.ecf.discovery" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/discovery/package-summary.html"/>
+<topic label="org.eclipse.ecf.discovery.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/discovery/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.discovery.service" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/discovery/service/package-summary.html"/>
+<topic label="org.eclipse.ecf.docshare" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/docshare/package-summary.html"/>
+<topic label="org.eclipse.ecf.docshare.menu" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/docshare/menu/package-summary.html"/>
+<topic label="org.eclipse.ecf.docshare.messages" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/docshare/messages/package-summary.html"/>
+<topic label="org.eclipse.ecf.example.clients" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/example/clients/package-summary.html"/>
+<topic label="org.eclipse.ecf.example.clients.applications" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/example/clients/applications/package-summary.html"/>
+<topic label="org.eclipse.ecf.examples.loadbalancing" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/examples/loadbalancing/package-summary.html"/>
+<topic label="org.eclipse.ecf.examples.provider.remoteservice.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/examples/provider/remoteservice/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.examples.provider.trivial" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/examples/provider/trivial/package-summary.html"/>
+<topic label="org.eclipse.ecf.examples.provider.trivial.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/examples/provider/trivial/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.examples.remoteservices.common" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/examples/remoteservices/common/package-summary.html"/>
+<topic label="org.eclipse.ecf.examples.remoteservices.hello" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/examples/remoteservices/hello/package-summary.html"/>
+<topic label="org.eclipse.ecf.examples.remoteservices.hello.impl" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/examples/remoteservices/hello/impl/package-summary.html"/>
+<topic label="org.eclipse.ecf.filetransfer" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/filetransfer/package-summary.html"/>
+<topic label="org.eclipse.ecf.filetransfer.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/filetransfer/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.filetransfer.events.socket" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/filetransfer/events/socket/package-summary.html"/>
+<topic label="org.eclipse.ecf.filetransfer.events.socketfactory" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/filetransfer/events/socketfactory/package-summary.html"/>
+<topic label="org.eclipse.ecf.filetransfer.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/filetransfer/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.filetransfer.service" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/filetransfer/service/package-summary.html"/>
+<topic label="org.eclipse.ecf.osgi.services.distribution" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/osgi/services/distribution/package-summary.html"/>
+<topic label="org.eclipse.ecf.osgi.services.remoteserviceadmin" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/osgi/services/remoteserviceadmin/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.bot" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/bot/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.bot.application" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/bot/application/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.bot.impl" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/bot/impl/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.chatroom" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/chatroom/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.history" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/history/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.im" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/im/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.roster" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/roster/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.search" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/search/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.search.message" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/search/message/package-summary.html"/>
+<topic label="org.eclipse.ecf.presence.service" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/presence/service/package-summary.html"/>
+<topic label="org.eclipse.ecf.protocol.bittorrent" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/protocol/bittorrent/package-summary.html"/>
+<topic label="org.eclipse.ecf.protocol.msn" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/protocol/msn/package-summary.html"/>
+<topic label="org.eclipse.ecf.protocol.msn.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/protocol/msn/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.comm" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/comm/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.comm.tcp" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/comm/tcp/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.datashare" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/datashare/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.datashare.nio" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/datashare/nio/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.discovery" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/discovery/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.dnssd" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/dnssd/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.browse" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/browse/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.events.socket" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/events/socket/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.httpclient" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/httpclient/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.httpclient4" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/httpclient4/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.outgoing" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/outgoing/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.retrieve" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/retrieve/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.filetransfer.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/filetransfer/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.generic" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/generic/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.generic.gmm" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/generic/gmm/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.irc.bot" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/irc/bot/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.irc.bot.handler" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/irc/bot/handler/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.jslp.container" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/jslp/container/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.jslp.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/jslp/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.local.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/local/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.r_osgi.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/r_osgi/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.remoteservice.generic" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/remoteservice/generic/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.xmpp" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/xmpp/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.xmpp.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/xmpp/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.zookeeper" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/zookeeper/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.zookeeper.core" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/zookeeper/core/package-summary.html"/>
+<topic label="org.eclipse.ecf.provider.zookeeper.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/provider/zookeeper/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.eventadmin" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/eventadmin/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.eventadmin.serialization" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/eventadmin/serialization/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.synd" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/synd/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rest.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rest/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.rpc.server" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/rpc/server/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.soap.client" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/soap/client/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.soap.identity" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/soap/identity/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.util" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/util/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservice.util.tracker" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/util/tracker/package-summary.html"/>
+<topic label="org.eclipse.ecf.remoteservices.rest.rss" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservices/rest/rss/package-summary.html"/>
+<topic label="org.eclipse.ecf.server" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/server/package-summary.html"/>
+<topic label="org.eclipse.ecf.server.generic" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/server/generic/package-summary.html"/>
+<topic label="org.eclipse.ecf.server.generic.app" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/server/generic/app/package-summary.html"/>
+<topic label="org.eclipse.ecf.storage" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/storage/package-summary.html"/>
+<topic label="org.eclipse.ecf.sync" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/sync/package-summary.html"/>
+<topic label="org.eclipse.ecf.sync.doc" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/sync/doc/package-summary.html"/>
+<topic label="org.eclipse.ecf.telephony.call" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/telephony/call/package-summary.html"/>
+<topic label="org.eclipse.ecf.telephony.call.dtmf" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/telephony/call/dtmf/package-summary.html"/>
+<topic label="org.eclipse.ecf.telephony.call.events" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/telephony/call/events/package-summary.html"/>
+<topic label="org.eclipse.ecf.telephony.call.service" href="http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/telephony/call/service/package-summary.html"/>
+</topic>
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/tocpics_Concepts.xml b/doc/bundles/org.eclipse.ecf.doc/tocpics_Concepts.xml
deleted file mode 100644
index 2613de9..0000000
--- a/doc/bundles/org.eclipse.ecf.doc/tocpics_Concepts.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.toc"?>
-
-<toc label="Concepts" link_to="toc.xml#concepts">
-</toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_GettingStarted.xml b/doc/bundles/org.eclipse.ecf.doc/topics_GettingStarted.xml
index 347e2e6..7cfaab8 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_GettingStarted.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_GettingStarted.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.toc"?>
 
-<toc label="Getting Started" link_to="toc.xml#gettingstarted"> 
-    <topic label="Quick Start" href="html/gettingstarted/quickStart.html"/>
-    <topic label="OSGi 4.2 Remote Services" href="http://wiki.eclipse.org/ECF#OSGi_4.2_Remote_Services"/>
-	<topic label="System Requirements" href="html/gettingstarted/prerequisites.html"/>
+<toc label="Getting Started"> 
+    <topic label="Download" href="http://www.eclipse.org/ecf/downloads.php"/>
+    <topic label="OSGi Remote Services Tutorials, Examples, and Documentation" href="http://wiki.eclipse.org/ECF"/>
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
index a1d4984..df17666 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
@@ -2,20 +2,22 @@
 <?NLS TYPE="org.eclipse.help.toc"?>
 
 <toc label="Reference" link_to="toc.xml#reference">
-    <topic label="What's New and Noteworthy" href="http://www.eclipse.org/ecf/NewAndNoteworthy.html"/>
-	<topic label="ECF Architecture" href="http://www.eclipse.org/ecf/documentation.php"/>
-	<topic label="ECF API" href="http://wiki.eclipse.org/index.php/ECF_API_Docs"/>
-	<topic label="API JavaDoc" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc">
-		<link toc="tocapi.xml"/>
-	</topic>
-	<topic label="Homepage" href="http://www.eclipse.org/ecf"/>
-	<topic label="Summary" href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.ecf"/>
-	<topic label="Wiki" href="http://wiki.eclipse.org/ECF"/>
+	<topic label="Project Homepage" href="http://www.eclipse.org/ecf"/>
+	<topic label="Dashboard" href="https://projects.eclipse.org/projects/rt.ecf"/>
 	<topic label="Mailing List" href="https://dev.eclipse.org/mailman/listinfo/ecf-dev"/>
 	<topic label="Newsgroup" href="http://www.eclipse.org/forums/index.php"/>
-	<topic label="IP Log" href="http://www.eclipse.org/projects/ip_log.php?projectid=rt.ecf"/>
-    <topic label="Project Blog" href="http://eclipseecf.blogspot.com/"/>
-	<topic label="Extension Points">
-		<link toc="topics_Extpoint.xml"/>
+    <topic label="Blog" href="http://eclipseecf.blogspot.com/"/>
+    <topic label="Recent Presentations">
+      <topic label="Democamp presentation by committer Markus Kuppe" href="http://www.lemmster.de/publications/Discover_Remote_Services_-_Democamp_HH_2013_-_Markus_Alexander_Kuppe.pdf"/>
+      <topic label="Discover OSGi Remote Services" href="http://www.eclipsecon.org/europe2013/discover-remote-osgi-services"/>
+      <topic label="Fun with OSGi Remote Services" href="http://vimeo.com/14247502"/>
+    </topic>
+	<topic label="Reference Documentation" href="http://wiki.eclipse.org/ECF">
+	  <topic label="JavaDoc" href="http://download.eclipse.org/rt/ecf/latest/javadoc">
+		  <link toc="tocapi.xml"/>
+	  </topic>
+	   <topic label="Extension Points">
+	      <link toc="topics_Extpoint.xml"/>
+	   </topic>
 	</topic>
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml
index 6ebfc52..0626815 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml
@@ -1,10 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.toc"?>
 <toc label="OSGi Remote Services"> 
-	<topic label="REST API" href="http://wiki.eclipse.org/REST_abstraction_for_ECF"/>
-    <topic label="Getting Started with OSGi Remote Services" href="http://wiki.eclipse.org/Getting_Started_with_ECF%27s_OSGi_Remote_Services_Implementation"/>
-    <topic label="Remote Services Admin" href="http://wiki.eclipse.org/Remote_Services_Admin"/>
-    <topic label="Asynchronous Proxies" href="http://wiki.eclipse.org/Asynchronous_Proxies_for_Remote_Services"/>
-    <topic label="OSGi Remote Services and ECF" href="http://wiki.eclipse.org/OSGi_4.2_Remote_Services_and_ECF"/>
+	<topic label="Tutorials and Getting Started">
+	  <topic label="Building your first OSGi Remote Service" href="https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service"/>
+	  <topic label="Using Java8's CompletableFuture for Non-blocking Remote Services" href="https://wiki.eclipse.org/Tutorial:_Building_your_first_Asynchronous_OSGi_Remote_Service#Using_Java8_CompletableFuture"/>
+      <topic label="Building your first Asynchronous OSGi Remote Service" href="https://wiki.eclipse.org/Tutorial:_Building_your_first_Asynchronous_OSGi_Remote_Service"/>
+      <topic label="OSGi Remote Services for the Raspberry Pi" href="https://wiki.eclipse.org/Tutorial:_OSGi_Remote_Services_for_the_Raspberry_Pi"/>
+      <topic label="Creating a RESTful Remote Service Provider" href="https://wiki.eclipse.org/Tutorial:_Creating_a_RESTful_Remote_Service_Provider"/>
+      <topic label="Getting Started with OSGi Remote Services" href="https://wiki.eclipse.org/EIG:Getting_Started_with_OSGi_Remote_Services"/>
+      <topic label="OSGi Remote Services and ECF" href="https://wiki.eclipse.org/OSGi_Remote_Services_and_ECF"/>
+    </topic>
+    <topic label="Download and Install into Eclipse or Apache Karaf">
+	  <topic label="Download and Install into Eclipse" href="http://www.eclipse.org/ecf/downloads.php"/>
+      <topic label="Install into Apache Karaf" href="https://wiki.eclipse.org/EIG:Install_into_Apache_Karaf"/>
+      <topic label="Install and run Timeline Tutorial in Apache Karaf" href="https://wiki.eclipse.org/EIG:Install_Timeline_Example_into_Apache_Karaf"/>
+    </topic>
+	<topic label="Java8's CompletableFuture for Non-blocking Remote Services" href="https://wiki.eclipse.org/Tutorial:_Building_your_first_Asynchronous_OSGi_Remote_Service#Using_Java8_CompletableFuture"/>
+    <topic label="Asynchronous/Non-Blocking Remote Services" href="https://wiki.eclipse.org/ECF/Asynchronous_Remote_Services"/>
     <topic label="File-based Discovery of Remote Services" href="http://wiki.eclipse.org/File-based_Discovery"/>
+    <topic label="Distributed EventAdmin Service" href="https://wiki.eclipse.org/Distributed_EventAdmin_Service"/>
+    <topic label="Tracing Options for Remote Services" href="https://wiki.eclipse.org/Tracing_Options_for_Remote_Services"/>
+    <topic label="Discovery and Distribution Provider Configuration Properties" href="https://wiki.eclipse.org/EIG:Configuration_Properties"/>
+    <topic label="JavaDoc">
+	      <link toc="tocapi.xml"/>
+	</topic>
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
index cf9db58..3252c1f 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
@@ -2,11 +2,9 @@
 <?NLS TYPE="org.eclipse.help.toc"?>
 
 <toc label="Tutorials" link_to="toc.xml#tutorials"> 
-	<topic label="REST API" href="http://wiki.eclipse.org/REST_abstraction_for_ECF"/>
-	<topic label="Getting Started with ECF's RFC119/Distributed OSGi" href="http://wiki.eclipse.org/Getting_Started_with_ECF%27s_RFC119_Implementation"/>
-	<topic label="Getting Started with ECF's Remote Services API" href="http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API"/>
-	<topic label="Distributed EventAdmin Service" href="http://wiki.eclipse.org/Distributed_EventAdmin_Service"/>
-	<topic label="Real-Time Shared Editing" href="http://wiki.eclipse.org/DocShare_Plugin"/>
-	<topic label="Create an IRC bot" href="html/tutorials/bot.html"/>
+	<topic label="Building your first OSGi Remote Service" href="https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service"/>
+	<topic label="Building your first Asynchronous OSGi Remote Service" href="https://wiki.eclipse.org/Tutorial:_Building_your_first_Asynchronous_OSGi_Remote_Service"/>
+	<topic label="OSGi Remote Services for the Raspberry Pi" href="https://wiki.eclipse.org/Tutorial:_OSGi_Remote_Services_for_the_Raspberry_Pi"/>
+	<topic label="Creating a RESTful Remote Service Provider" href="https://wiki.eclipse.org/Tutorial:_Creating_a_RESTful_Remote_Service_Provider"/>
 	<topic label="Other Info" href="http://wiki.eclipse.org/ECF"/>
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java
index f2f2543..0f6add7 100644
--- a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java
+++ b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java
@@ -21,8 +21,7 @@
 	private static final String DEFAULT_USERNAME = "eclipsecon@ecf.eclipse.org";
 	
 	public Client3() {
-		super();
-		setMessageReceiver(new IMessageReceiver() {
+		super(new IMessageReceiver() {
 			public void handleMessage(final IChatMessage chatMessage) {
 				Display.getDefault().asyncExec(new Runnable() {
 					public void run() {
diff --git a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java
index 283e89c..09a6cb9 100644
--- a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java
+++ b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java
@@ -15,7 +15,6 @@
 import org.eclipse.ecf.presence.IPresence;
 import org.eclipse.ecf.presence.IPresenceListener;
 import org.eclipse.ecf.presence.im.IChatMessage;
-import org.eclipse.ecf.presence.roster.IRosterEntry;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Display;
 
@@ -25,8 +24,7 @@
 	private static final String DEFAULT_USERNAME = "eclipsecon@ecf.eclipse.org";
 	
 	public Client4() {
-		super();
-		setMessageReceiver(new IMessageReceiver() {
+		super(new IMessageReceiver() {
 			public void handleMessage(final IChatMessage chatMessage) {
 				Display.getDefault().asyncExec(new Runnable() {
 					public void run() {
@@ -34,16 +32,9 @@
 								+ chatMessage.getFromID().getName(), chatMessage.getBody());
 					}
 				});
-			}});
-		setPresenceListener(new IPresenceListener(){
+			}},new IPresenceListener(){
 			public void handlePresence(ID fromID, IPresence presence) {
 				System.out.println("handlePresence("+fromID+","+presence+")");
-			}
-			public void handleRosterEntryAdd(IRosterEntry entry) {
-				System.out.println("handleRosterEntryAdd("+entry+")");
-			}
-			public void handleRosterEntryRemove(IRosterEntry entry) {
-				System.out.println("handleRosterEntryRemove("+entry+")");
 			}});
 	}
 	public void createAndConnect() throws ECFException {
diff --git a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java
index c23f573..6dd85b4 100644
--- a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java
+++ b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java
@@ -34,7 +34,7 @@
 				if (event instanceof IContainerConnectedEvent) {
 					IContainerConnectedEvent ccevent = (IContainerConnectedEvent) event;
 					// Check to make sure it's a client...not the groupID
-					if (!ccevent.getTargetID().equals(getGroupID())) sendHelloMessage();
+					if (!ccevent.getTargetID().equals(getConnectedID())) sendHelloMessage();
 				}
 				return false;
 			}});
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.classpath b/examples/bundles/com.mycorp.examples.timeservice.async/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.gitignore b/examples/bundles/com.mycorp.examples.timeservice.async/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.project b/examples/bundles/com.mycorp.examples.timeservice.async/.project
new file mode 100644
index 0000000..62d0c40
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.mycorp.examples.timeservice.async</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.pde.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.async/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..41f0c11
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF RS Example Timeservice Async API
+Bundle-SymbolicName: com.mycorp.examples.timeservice.async
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: com.mycorp.examples.timeservice;version="2.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.async/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.async/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/build.properties b/examples/bundles/com.mycorp.examples.timeservice.async/build.properties
new file mode 100644
index 0000000..9cbab3c
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               about.html
+src.includes = about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeService.java b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeService.java
new file mode 100644
index 0000000..4149d5b
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeService.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis - initial API and implementation
+ ******************************************************************************/
+package com.mycorp.examples.timeservice;
+
+/**
+ * Example OSGi service for retrieving current time in milliseconds from January
+ * 1, 1970.
+ * 
+ */
+public interface ITimeService {
+
+	/**
+	 * Get current time.
+	 * 
+	 * @return Long current time in milliseconds since Jan 1, 1970. Will not
+	 *         return <code>null</code>.
+	 */
+	public Long getCurrentTime();
+
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java
new file mode 100644
index 0000000..299871f
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis - initial API and implementation
+ ******************************************************************************/
+package com.mycorp.examples.timeservice;
+
+import java.util.concurrent.CompletableFuture;
+
+public interface ITimeServiceAsync {
+
+	/**
+	 * Get current time using Java 8 {@link CompletableFuture}.
+	 * 
+	 * @return CompletableFuture<Long> The future value time in milliseconds since Jan 1, 1970. Will not
+	 *         return <code>null</code>.
+	 */
+	public CompletableFuture<Long> getCurrentTimeAsync();
+
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.classpath b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.gitignore b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.project b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.project
new file mode 100644
index 0000000..b083822
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.mycorp.examples.timeservice.consumer.ds.async</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.pde.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1f3a05e
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Async
+Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.ds.async
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: MYCORP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: com.mycorp.examples.timeservice;version="2.0.0"
+Service-Component: OSGI-INF/timeservicecomponentasync.xml
+Bundle-ActivationPolicy: lazy
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/OSGI-INF/timeservicecomponentasync.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/OSGI-INF/timeservicecomponentasync.xml
new file mode 100644
index 0000000..2e13191
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/OSGI-INF/timeservicecomponentasync.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" enabled="true" name="com.mycorp.examples.timeservice.consumer.ds.async">
+   <implementation class="com.mycorp.examples.timeservice.consumer.ds.async.TimeServiceComponentAsync"/>
+   <reference bind="bindTimeService" cardinality="1..n" interface="com.mycorp.examples.timeservice.ITimeServiceAsync" name="ITimeServiceAsync" policy="dynamic"/>
+</scr:component>
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/build.properties
new file mode 100644
index 0000000..529e35c
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/build.properties
@@ -0,0 +1,10 @@
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               OSGI-INF/timeservicecomponentasync.xml,\
+               OSGI-INF/,\
+               launch/,\
+               about.html
+source.. = src/
+src.includes = launch/,\
+               about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/launch/TimeServiceConsumer.generic.noreg.java8.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/launch/TimeServiceConsumer.generic.noreg.java8.product
new file mode 100644
index 0000000..e95b4d7
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/launch/TimeServiceConsumer.generic.noreg.java8.product
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic Consumer No Extension Registry Java8" uid="com.mycorp.examples.timeservice.consumer.generic.noreg.java8.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice.async"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds.async"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" version="2.0.0"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice.async" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds.async" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/launch/TimeServiceConsumer.rosgi.noreg.java8.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/launch/TimeServiceConsumer.rosgi.noreg.java8.product
new file mode 100644
index 0000000..e95b4d7
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/launch/TimeServiceConsumer.rosgi.noreg.java8.product
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic Consumer No Extension Registry Java8" uid="com.mycorp.examples.timeservice.consumer.generic.noreg.java8.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice.async"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds.async"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" version="2.0.0"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice.async" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds.async" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/src/com/mycorp/examples/timeservice/consumer/ds/async/TimeServiceComponentAsync.java b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/src/com/mycorp/examples/timeservice/consumer/ds/async/TimeServiceComponentAsync.java
new file mode 100644
index 0000000..8a038f9
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/src/com/mycorp/examples/timeservice/consumer/ds/async/TimeServiceComponentAsync.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis - initial API and implementation
+ ******************************************************************************/
+package com.mycorp.examples.timeservice.consumer.ds.async;
+
+import java.util.concurrent.CompletableFuture;
+
+import com.mycorp.examples.timeservice.ITimeServiceAsync;
+
+public class TimeServiceComponentAsync {
+
+	void bindTimeService(ITimeServiceAsync timeService) {
+		System.out.println("Discovered ITimeServiceAsync via DS");
+		// Get the CompletableFuture...no blocking here
+		CompletableFuture<Long> cf = timeService.getCurrentTimeAsync();
+		// print out time when done...no blocking anywhere!
+		cf.thenAccept((time) -> System.out.println("Remote time is: " + time));
+	}
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
index 8a6c53c..b14a75e 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice Consumer Declarative Services Example
+Bundle-Name: ECF RS Example Timeservice Consumer DS
 Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.ds
 Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Service-Component: OSGI-INF/timeservicecomponent.xml
-Import-Package: com.mycorp.examples.timeservice;version="1.0.0"
+Import-Package: com.mycorp.examples.timeservice;version="[1.0.0,2.0.0)"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.consumer.ds/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
index ed9702d..ae221b9 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
@@ -2,5 +2,9 @@
 bin.includes = META-INF/,\
                .,\
                OSGI-INF/timeservicecomponent.xml,\
-               OSGI-INF/
+               OSGI-INF/,\
+               launch/,\
+               about.html
 source.. = src/
+src.includes = launch/,\
+               about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch
deleted file mode 100644
index a297d12..0000000
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/TimeServiceConsumer DS"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="default_auto_start" value="true"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-DverboseRemoteServiceAdmin=true"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="com.mycorp.examples.timeservice.consumer.ds@default:default,com.mycorp.examples.timeservice@default:default"/>
-</launchConfiguration>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.edef.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.edef.noreg.product
new file mode 100644
index 0000000..1cb323a
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.edef.noreg.product
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic Consumer DS EDEF No Registry" uid="com.mycorp.examples.timeservice.consumer.generic.ds.edef.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server.port=3288
+-Decf.generic.server.hostname=localhost
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery.rest"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery" autoStart="false" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery.rest" autoStart="false" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.edef.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.edef.product
new file mode 100644
index 0000000..1975717
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.edef.product
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic Consumer DS EDEF" uid="com.mycorp.examples.timeservice.consumer.generic.ds.edef.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server.port=3288
+-Decf.generic.server.hostname=localhost
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery" autoStart="false" startLevel="0" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.noreg.product
new file mode 100644
index 0000000..0d8cbf8
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.noreg.product
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic Consumer DS No Registry" uid="com.mycorp.examples.timeservice.consumer.generic.ds.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server.port=3288
+-Decf.generic.server.hostname=localhost
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.product
new file mode 100644
index 0000000..f2a8fdc
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.generic.product
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic Consumer DS" uid="com.mycorp.examples.timeservice.consumer.generic.ds.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server.port=3288
+-Decf.generic.server.hostname=localhost
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.edef.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.edef.noreg.product
new file mode 100644
index 0000000..9a64784
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.edef.noreg.product
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService REST Consumer DS EDEF No Registry" uid="com.mycorp.examples.timeservice.rest.consumer.ds.edef.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dorg.eclipse.equinox.http.jetty.http.port=8181
+-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host
+-Dcom.mycorp.examples.timeservice.rest.host.id=http://localhost:8181
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery.rest"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer"/>
+      <plugin id="javax.servlet"/>
+      <plugin id="org.apache.commons.codec"/>
+      <plugin id="org.apache.commons.logging"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.apache.httpcomponents.httpclient"/>
+      <plugin id="org.apache.httpcomponents.httpcore"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.remoteservice.rest"/>
+      <plugin id="org.eclipse.ecf.remoteservice.servlet"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+      <plugin id="org.json"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery.rest" autoStart="false" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer" autoStart="true" startLevel="0" />
+      <plugin id="javax.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.codec" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.logging" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpclient" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpcore" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.rest" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+      <plugin id="org.json" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.edef.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.edef.product
new file mode 100644
index 0000000..8c0d3fd
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.edef.product
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService REST Consumer DS EDEF" uid="com.mycorp.examples.timeservice.rest.consumer.ds.edef.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dorg.eclipse.equinox.http.jetty.http.port=8181
+-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host
+-Dcom.mycorp.examples.timeservice.rest.host.id=http://localhost:8181
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery.rest"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer"/>
+      <plugin id="javax.servlet"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.commons.codec"/>
+      <plugin id="org.apache.commons.logging"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.apache.httpcomponents.httpclient"/>
+      <plugin id="org.apache.httpcomponents.httpcore"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.remoteservice.rest"/>
+      <plugin id="org.eclipse.ecf.remoteservice.servlet"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+      <plugin id="org.json"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery.rest" autoStart="false" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer" autoStart="true" startLevel="0" />
+      <plugin id="javax.servlet" autoStart="true" startLevel="0" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.codec" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.logging" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpclient" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpcore" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.rest" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+      <plugin id="org.json" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.noreg.product
new file mode 100644
index 0000000..4503b0c
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.noreg.product
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService REST Consumer DS No Registry" uid="com.mycorp.examples.timeservice.rest.consumer.ds.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dorg.eclipse.equinox.http.jetty.http.port=8181
+-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host
+-Dcom.mycorp.examples.timeservice.rest.host.id=http://localhost:8181
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer"/>
+      <plugin id="javax.servlet"/>
+      <plugin id="org.apache.commons.codec"/>
+      <plugin id="org.apache.commons.logging"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.apache.httpcomponents.httpclient"/>
+      <plugin id="org.apache.httpcomponents.httpcore"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.remoteservice.rest"/>
+      <plugin id="org.eclipse.ecf.remoteservice.servlet"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+      <plugin id="org.json"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer" autoStart="true" startLevel="0" />
+      <plugin id="javax.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.codec" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.logging" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpclient" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpcore" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.rest" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+      <plugin id="org.json" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.product
new file mode 100644
index 0000000..c5f9fee
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rest.product
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService REST Consumer DS" uid="com.mycorp.examples.timeservice.rest.consumer.ds.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dorg.eclipse.equinox.http.jetty.http.port=8181
+-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host
+-Dcom.mycorp.examples.timeservice.rest.host.id=http://localhost:8181
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer"/>
+      <plugin id="javax.servlet"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.commons.codec"/>
+      <plugin id="org.apache.commons.logging"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.apache.httpcomponents.httpclient"/>
+      <plugin id="org.apache.httpcomponents.httpcore"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.remoteservice.rest"/>
+      <plugin id="org.eclipse.ecf.remoteservice.servlet"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+      <plugin id="org.json"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.consumer" autoStart="true" startLevel="0" />
+      <plugin id="javax.servlet" autoStart="true" startLevel="0" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.codec" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.logging" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpclient" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpcore" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.rest" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+      <plugin id="org.json" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rosgi.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rosgi.noreg.product
new file mode 100644
index 0000000..82c5617
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rosgi.noreg.product
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Consumer ROSGI DS No Registry" uid="com.mycorp.examples.timeservice.consumer.rosgi.ds.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.r_osgi.peer
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.objectweb.asm" version="3.3.1"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="ch.ethz.iks.r_osgi.remote" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.r_osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.objectweb.asm" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rosgi.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rosgi.product
new file mode 100644
index 0000000..8ca6544
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.ds.rosgi.product
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Consumer ROSGI DS" uid="com.mycorp.examples.timeservice.consumer.rosgi.ds.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.r_osgi.peer
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.objectweb.asm" version="3.3.1"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="ch.ethz.iks.r_osgi.remote" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds" autoStart="true" startLevel="0" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.r_osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.objectweb.asm" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.generic.noreg.java8.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.generic.noreg.java8.product
new file mode 100644
index 0000000..81171be
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer.generic.noreg.java8.product
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic No Extension Registry Java8" uid="com.mycorp.examples.timeservice.consumer.generic.noreg.java8.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server.java8
+-Decf.generic.server.java8.port=3288
+-Decf.generic.server.java8.hostname=localhost
+-Decf.exported.async.interfaces=*
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice.async"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds.async"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice.java8"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice.async" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds.async" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice.java8" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" /> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/src/com/mycorp/examples/timeservice/consumer/ds/TimeServiceComponent.java b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/src/com/mycorp/examples/timeservice/consumer/ds/TimeServiceComponent.java
index cda9418..2a0f555 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/src/com/mycorp/examples/timeservice/consumer/ds/TimeServiceComponent.java
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/src/com/mycorp/examples/timeservice/consumer/ds/TimeServiceComponent.java
@@ -8,13 +8,35 @@
  ******************************************************************************/
 package com.mycorp.examples.timeservice.consumer.ds;
 
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
 import com.mycorp.examples.timeservice.ITimeService;
+import com.mycorp.examples.timeservice.ITimeServiceAsync;
 
 public class TimeServiceComponent {
 
 	void bindTimeService(ITimeService timeService) {
+		// Invoke synchronously
 		System.out.println("Discovered ITimeService via DS");
 		// Call the service and print out result!
 		System.out.println("Current time is: " + timeService.getCurrentTime());
+		
+		// Then invoke asynchronously
+	    if (timeService instanceof ITimeServiceAsync) {
+	        ITimeServiceAsync asyncTimeService = (ITimeServiceAsync) timeService;
+	        System.out.println("Discovered ITimeServiceAsync via DS");
+	        // Call the asynchronous remote service.  Unlike the synchronous getTimeService(),
+	        // this method will not block
+	        Future<Long> currentTimeFuture = asyncTimeService.getCurrentTimeAsync();
+	        // potentially do other operations here...
+	        try {
+				System.out.println("Current time via future.get is: " + currentTimeFuture.get());
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			} catch (ExecutionException e) {
+				e.printStackTrace();
+			}  
+	    }
 	}
 }
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF
index 5b3c4cc..4c9a4ca 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice Consuemr FileDiscovery Rest
+Bundle-Name: ECF RS Example REST Timeservice Consumer FileDiscovery
 Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.filediscovery.rest
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Remote-Service: timeservicerestendpointdescription.xml
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties
index 24e86ec..7442499 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties
@@ -2,4 +2,7 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               timeservicerestendpointdescription.xml
+               timeservicerestendpointdescription.xml,\
+               about.html
+src.includes = timeservicerestendpointdescription.xml,\
+               about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch
deleted file mode 100644
index 4c543a9..0000000
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/TimeServiceRestConsumer DS"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="default_auto_start" value="true"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-DverboseRemoteServiceAdmin=true"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="com.mycorp.examples.timeservice.consumer.ds@default:default,com.mycorp.examples.timeservice.consumer.filediscovery.rest@default:false,com.mycorp.examples.timeservice.provider.rest.common@default:default,com.mycorp.examples.timeservice.provider.rest.consumer@default:default,com.mycorp.examples.timeservice@default:default,org.eclipse.ecf.remoteservice.rest@default:default,org.eclipse.ecf.remoteservice@default:default,org.json@default:default"/>
-</launchConfiguration>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml
index feaff8b..452732a 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
   <endpoint-description>
+    <property name="ecf.endpoint.id" value-type="String" value="http://localhost:8181"/>
     <property name="ecf.endpoint.id.ns" value-type="String" value="com.mycorp.examples.timeservice.provider.rest.namespace"/>
+    <property name="ecf.endpoint.ts" value-type="Long" value="1387233380373"/>
     <property name="endpoint.framework.uuid" value-type="String" value="20cc5d57-e8f0-0012-192b-c570b422d1f9"/>
-    <property name="endpoint.id" value-type="String" value="http://localhost:8181"/>
+    <property name="endpoint.id" value-type="String" value="87d3ef4f-8e8f-4187-873e-166dcc58c9eb"/>
     <property name="endpoint.package.version.com.mycorp.examples.timeservice" value-type="String" value="1.0.0"/>
     <property name="endpoint.service.id" value-type="Long" value="0"/>
     <property name="objectClass" value-type="String">
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rosgi/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rosgi/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rosgi/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rosgi/build.properties
index 24e86ec..32954c6 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rosgi/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rosgi/build.properties
@@ -2,4 +2,6 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               timeservicerestendpointdescription.xml
+               timeservicerestendpointdescription.xml,\
+               about.html
+src.includes = about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
index bf5a41a..8e686d2 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
@@ -1,9 +1,8 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: TimeService Consumer Filediscovery
+Bundle-Name: ECF RS Example TimeService Consumer FileDiscovery
 Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.filediscovery
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Remote-Service: timeserviceendpointdescription.xml
-
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties
index ea3d35e..42b1d7f 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties
@@ -2,7 +2,7 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               launch/,\
-               timeserviceendpointdescription.xml
-src.includes = launch/,\
-               timeserviceendpointdescription.xml
+               timeserviceendpointdescription.xml,\
+               about.html
+src.includes = timeserviceendpointdescription.xml,\
+               about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch
deleted file mode 100644
index 0e42f51..0000000
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/TimeServiceConsumer"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="default_auto_start" value="true"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-DverboseRemoteServiceAdmin=true"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="com.mycorp.examples.timeservice.consumer.filediscovery@default:false,com.mycorp.examples.timeservice.consumer@default:default,com.mycorp.examples.timeservice@default:default"/>
-</launchConfiguration>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
index 180533d..156b074 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
   <endpoint-description>
+    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://localhost:3288/server"/>
     <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
+    <property name="ecf.endpoint.ts" value-type="Long" value="1387233380373"/>
     <property name="endpoint.framework.uuid" value-type="String" value="20cc5d57-e8f0-0012-192b-c570b422d1f9"/>
-    <property name="endpoint.id" value-type="String" value="ecftcp://localhost:3288/server"/>
+    <property name="endpoint.id" value-type="String" value="87d3ef4f-8e8f-4187-873e-166dcc58c9ea"/>
     <property name="endpoint.package.version.com.mycorp.examples.timeservice" value-type="String" value="1.0.0"/>
     <property name="endpoint.service.id" value-type="Long" value="0"/>
     <property name="objectClass" value-type="String">
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF
index 9f2cb57..e8d068e 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Consumer
+Bundle-Name: ECF RS Example Timeservice Consumer
 Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer
 Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: com.mycorp.examples.timeservice.consumer.Activator
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.consumer/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.consumer/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer/build.properties
index 34d2e4d..9cbab3c 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer/build.properties
@@ -1,4 +1,6 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               about.html
+src.includes = about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF
index bc89279..1a9760b 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF
@@ -1,12 +1,12 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Host
+Bundle-Name: ECF RS Example Timeservice Host
 Bundle-SymbolicName: com.mycorp.examples.timeservice.host
 Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Import-Package: com.mycorp.examples.timeservice;version="1.0.0",
- org.osgi.framework,
- org.osgi.service.remoteserviceadmin;version="1.0.0"
+ org.osgi.framework
 Bundle-Activator: com.mycorp.examples.timeservice.host.Activator
+Require-Bundle: org.eclipse.osgi.services.remoteserviceadmin;bundle-version="1.5.0"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.host/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.host/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/build.properties b/examples/bundles/com.mycorp.examples.timeservice.host/build.properties
index d24b149..621e99d 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.host/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/build.properties
@@ -2,5 +2,7 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               launch/
-src.includes = launch/
+               launch/,\
+               about.html
+src.includes = launch/,\
+               about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.noreg.java8.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.noreg.java8.product
new file mode 100644
index 0000000..8408c9a
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.noreg.java8.product
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic No Extension Registry Java8" uid="com.mycorp.examples.timeservice.host.generic.noreg.java8.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server=3288
+-Decf.generic.server.hostname=localhost
+-Decf.exported.async.interfaces=*
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice.async"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" version="2.0.0.v20140410-1838"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice.async" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="6" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.noreg.product
new file mode 100644
index 0000000..72dc452
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.noreg.product
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic No Extension Registry" uid="com.mycorp.examples.timeservice.host.generic.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server.port=3288
+-Decf.generic.server.hostname=localhost
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="6" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.product
new file mode 100644
index 0000000..c4114a6
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.generic.product
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService Generic" uid="com.mycorp.examples.timeservice.host.generic.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server.port=3288
+-Decf.generic.server.hostname=localhost
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="6" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch
deleted file mode 100644
index ca03f3c..0000000
--- a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/TimeServiceHost"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="default_auto_start" value="true"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true &#13;&#10;-DverboseRemoteServiceAdmin=true"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.jobs@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.event@2:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="com.mycorp.examples.timeservice.host@default:default,com.mycorp.examples.timeservice@default:default"/>
-</launchConfiguration>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rest.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rest.noreg.product
new file mode 100644
index 0000000..10e405a
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rest.noreg.product
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService REST Host No Registry" uid="com.mycorp.examples.timeservice.rest.host.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dorg.eclipse.equinox.http.jetty.http.port=8181
+-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host
+-Dcom.mycorp.examples.timeservice.rest.host.id=http://localhost:8181
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.host"/>
+      <plugin id="javax.servlet"/>
+      <plugin id="org.apache.commons.codec"/>
+      <plugin id="org.apache.commons.logging"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.apache.httpcomponents.httpclient"/>
+      <plugin id="org.apache.httpcomponents.httpcore"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.remoteservice.rest"/>
+      <plugin id="org.eclipse.ecf.remoteservice.servlet"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.http.jetty"/>
+      <plugin id="org.eclipse.equinox.http.servlet"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.jetty.continuation"/>
+      <plugin id="org.eclipse.jetty.http"/>
+      <plugin id="org.eclipse.jetty.io"/>
+      <plugin id="org.eclipse.jetty.security"/>
+      <plugin id="org.eclipse.jetty.server"/>
+      <plugin id="org.eclipse.jetty.servlet"/>
+      <plugin id="org.eclipse.jetty.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+      <plugin id="org.json"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.host" autoStart="true" startLevel="6" />
+      <plugin id="javax.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.codec" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.logging" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpclient" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpcore" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.rest" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.http.jetty" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.http.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.continuation" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.http" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.io" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.security" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.server" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+      <plugin id="org.json" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rest.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rest.product
new file mode 100644
index 0000000..83431c9
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rest.product
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService REST Host" uid="com.mycorp.examples.timeservice.rest.host.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dorg.eclipse.equinox.http.jetty.http.port=8181
+-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host
+-Dcom.mycorp.examples.timeservice.rest.host.id=http://localhost:8181
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common"/>
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.host"/>
+      <plugin id="javax.servlet"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.commons.codec"/>
+      <plugin id="org.apache.commons.logging"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.apache.httpcomponents.httpclient"/>
+      <plugin id="org.apache.httpcomponents.httpcore"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.remoteservice.rest"/>
+      <plugin id="org.eclipse.ecf.remoteservice.servlet"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.http.jetty"/>
+      <plugin id="org.eclipse.equinox.http.servlet"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.equinox.util"/>
+      <plugin id="org.eclipse.jetty.continuation"/>
+      <plugin id="org.eclipse.jetty.http"/>
+      <plugin id="org.eclipse.jetty.io"/>
+      <plugin id="org.eclipse.jetty.security"/>
+      <plugin id="org.eclipse.jetty.server"/>
+      <plugin id="org.eclipse.jetty.servlet"/>
+      <plugin id="org.eclipse.jetty.util"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+      <plugin id="org.json"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.common" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.provider.rest.host" autoStart="true" startLevel="0" />
+      <plugin id="javax.servlet" autoStart="true" startLevel="6" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.codec" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.commons.logging" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpclient" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.httpcomponents.httpcore" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.rest" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.http.jetty" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.http.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.continuation" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.http" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.io" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.security" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.server" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.servlet" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.jetty.util" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+      <plugin id="org.json" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.noreg.java8.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.noreg.java8.product
new file mode 100644
index 0000000..698f101
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.noreg.java8.product
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService R-OSGi No Extension Registry Java8" uid="com.mycorp.examples.timeservice.host.rosgi.noreg.java8.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.r_osgi.peer
+-Dch.ethz.iks.r_osgi.port=9285
+-Decf.exported.async.interfaces=*
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+   </vm>
+
+   <plugins>
+      <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="com.mycorp.examples.timeservice.async"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" version="2.0.0.v20140410-1838"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.objectweb.asm"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="ch.ethz.iks.r_osgi.remote" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.async" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="6" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.r_osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.objectweb.asm" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.noreg.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.noreg.product
new file mode 100644
index 0000000..b271aed
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.noreg.product
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService ROSGI No Extension Registry" uid="com.mycorp.examples.timeservice.host.rosgi.noreg.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.r_osgi.peer
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.objectweb.asm" version="3.3.1"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="ch.ethz.iks.r_osgi.remote" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="6" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.r_osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.objectweb.asm" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.product b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.product
new file mode 100644
index 0000000..ec16afc
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.rosgi.product
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="MyCorp Remote TimeService ROSGI" uid="com.mycorp.examples.timeservice.host.rosgi.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.r_osgi.peer
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="com.mycorp.examples.timeservice"/>
+      <plugin id="com.mycorp.examples.timeservice.host"/>
+      <plugin id="javax.xml"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.equinox.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.objectweb.asm" version="3.3.1"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="ch.ethz.iks.r_osgi.remote" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.host" autoStart="true" startLevel="6" />
+      <plugin id="javax.xml" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.contenttype" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.r_osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.preferences" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.objectweb.asm" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceROSGiHost.launch b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceROSGiHost.launch
deleted file mode 100644
index dd0f749..0000000
--- a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceROSGiHost.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/TimeServiceROSGiHost"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="default_auto_start" value="true"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true &#13;&#10;-DverboseRemoteServiceAdmin=true&#10;-Dservice.exported.configs=ecf.r_osgi.peer"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="ch.ethz.iks.r_osgi.remote@default:default,javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.r_osgi@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent*1.0.300.v20120912-130548@default:default,org.eclipse.equinox.concurrent*1.1.0.v20130225-1702@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.event@2:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.objectweb.asm@default:default"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="com.mycorp.examples.timeservice.host@default:default,com.mycorp.examples.timeservice@default:default"/>
-</launchConfiguration>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch
deleted file mode 100644
index bcb1fc8..0000000
--- a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/TimeServiceRestHost"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="default_auto_start" value="true"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true &#13;&#10;-DverboseRemoteServiceAdmin=true&#13;&#10;-Dorg.eclipse.equinox.http.jetty.http.port=8181&#13;&#10;-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.servlet@default:default,javax.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@2:default,org.eclipse.equinox.http.jetty@3:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="com.mycorp.examples.timeservice.host@default:default,com.mycorp.examples.timeservice.provider.rest.common@default:default,com.mycorp.examples.timeservice.provider.rest.host@default:default,com.mycorp.examples.timeservice@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.ecf.remoteservice.rest@default:default,org.eclipse.ecf.remoteservice.servlet@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.ssl@default:false,org.json@default:default"/>
-</launchConfiguration>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/src/com/mycorp/examples/timeservice/host/Activator.java b/examples/bundles/com.mycorp.examples.timeservice.host/src/com/mycorp/examples/timeservice/host/Activator.java
index d2e9184..f18a9fd 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.host/src/com/mycorp/examples/timeservice/host/Activator.java
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/src/com/mycorp/examples/timeservice/host/Activator.java
@@ -10,6 +10,7 @@
 
 import java.util.Dictionary;
 import java.util.Hashtable;
+import java.util.Properties;
 
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -21,36 +22,20 @@
 
 public class Activator implements BundleActivator {
 
-	private static final String GENERIC_SERVER_CONFIG = "ecf.generic.server";
-	private static final String GENERIC_SERVER_PORTPROP_NAME = GENERIC_SERVER_CONFIG+ ".port";
-	private static final String GENERIC_SERVER_PORTPROP_VALUE = "3288";
-	private static final String GENERIC_SERVER_HOSTPROP_NAME = GENERIC_SERVER_CONFIG+ ".hostname";
-	private static final String GENERIC_SERVER_HOSTPROP_VALUE = "localhost";
-	
-	private static final String R_OSGI_SERVER_CONFIG = "ecf.r_osgi.peer";
-
-	private static final String REST_SERVER_CONFIG = "com.mycorp.examples.timeservice.rest.host";
-	private static final String REST_SERVER_IDPROP_NAME = REST_SERVER_CONFIG + ".id";
-	private static final String REST_SERVER_IDPROP_VALUE = "http://localhost:8181";
-	
 	public void start(BundleContext context) throws Exception {
 		// If the verboseRemoteServiceAdmin system property is set
 		// then register debug listener
 		if (Boolean.getBoolean("verboseRemoteServiceAdmin"))
 			registerDebugListener(context);
 
-		// Create remote service properties...see createRemoteServiceProperties above
+		// Create remote service properties...see createRemoteServiceProperties()
 		Dictionary<String, Object> props = createRemoteServiceProperties();
-		// Create MyTimeService impl and register as a remote service
-		// register the remote service with the service registry. If ECF remote
-		// services/RSA impl is installed and started, it will export this
-		// service via the default distribution provider, which is
-		// 'ecf.generic.server'
-		// To change which provider is used (e.g.) r-OSGi:
-		// props.put("service.exported.configs","ecf.r_osgi.peer");
+		
+		// Create MyTimeService impl and register/export as a remote service
 		ServiceRegistration<ITimeService> timeServiceRegistration = context
 				.registerService(ITimeService.class, new TimeServiceImpl(),
 						props);
+		
 		// Print out that ITimeService remote service registration
 		System.out.println("MyTimeService host registered with registration="
 				+ timeServiceRegistration);
@@ -61,31 +46,23 @@
 	}
 
 	private Dictionary<String,Object> createRemoteServiceProperties() {
-		Dictionary<String, Object> props = new Hashtable<String, Object>();
 		// This is the only required service property to trigger remote services
-		props.put("service.exported.interfaces", "*");
-		// set service.exported.configs
-		String serviceExportedConfig = System.getProperty("service.exported.configs",GENERIC_SERVER_CONFIG);
-		props.put("service.exported.configs",serviceExportedConfig);
-		String propName = null;
-		String propValue = null;
-		if (GENERIC_SERVER_CONFIG.equals(serviceExportedConfig)) {
-			propName = GENERIC_SERVER_PORTPROP_NAME;
-			propValue = GENERIC_SERVER_PORTPROP_VALUE;
-			props.put(GENERIC_SERVER_HOSTPROP_NAME, GENERIC_SERVER_HOSTPROP_VALUE);
-		} else if (REST_SERVER_CONFIG.equals(serviceExportedConfig)) {
-			propName = REST_SERVER_IDPROP_NAME;
-			propValue = REST_SERVER_IDPROP_VALUE;
-		} else if (R_OSGI_SERVER_CONFIG.equals(serviceExportedConfig)) {
-			// r-osgi does not require the server to define its endpoint
-			return props;
-		} else throw new NullPointerException("Unsuppored value for service.exported.config="+serviceExportedConfig);
-		
-		// Set the propName and idPropValue
-		props.put(propName,propValue);
-		return props;
+		Dictionary<String,Object> result = new Hashtable<String,Object>();
+		result.put("service.exported.interfaces", "*");
+		Properties props = System.getProperties();
+		String config = props.getProperty("service.exported.configs");
+		if (config != null) {
+			result.put("service.exported.configs", config);
+			String configProps = config + ".";
+			for(Object k: props.keySet()) {
+				if (k instanceof String) {
+					String key = (String) k;
+					if (key.startsWith(configProps) || key.equals("ecf.exported.async.interfaces")) result.put(key, props.getProperty(key));
+				}
+			}
+		}
+		return result;
 	}
-	
 
 	// Register a RemoteServiceAdminListener so we can report to sdtout
 	// when a remote service has actually been successfully exported by
@@ -104,7 +81,7 @@
 			}
 
 		};
-		// Register as service, and RemoteServiceAdmin will callback
+		// Register our listener as service via whiteboard pattern, and RemoteServiceAdmin will callback
 		context.registerService(RemoteServiceAdminListener.class.getName(),
 				rsaListener, null);
 	}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF
index baf07f4..b7cdbbc 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF
@@ -1,12 +1,15 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Timerservice Rest Provider Common
+Bundle-Name: ECF RS Example Timeservice REST Provider Common
 Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.common;singleton:=true
 Bundle-Version: 2.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: org.eclipse.ecf.core.identity,
- org.eclipse.ecf.remoteservice.rest.identity;version="2.2.200"
+ org.eclipse.ecf.core.util;version="3.2.0",
+ org.eclipse.ecf.remoteservice.rest.identity,
+ org.osgi.framework
 Require-Bundle: org.eclipse.equinox.common
 Export-Package: com.mycorp.examples.timeservice.provider.rest.common
 Bundle-ActivationPolicy: lazy
+Bundle-Activator: com.mycorp.examples.internal.timeservice.provider.rest.common.Activator
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/build.properties b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/build.properties
index e9863e2..e5a949c 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/build.properties
@@ -2,4 +2,6 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               plugin.xml
+               plugin.xml,\
+               about.html
+src.includes = about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/src/com/mycorp/examples/internal/timeservice/provider/rest/common/Activator.java b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/src/com/mycorp/examples/internal/timeservice/provider/rest/common/Activator.java
new file mode 100644
index 0000000..95e5150
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/src/com/mycorp/examples/internal/timeservice/provider/rest/common/Activator.java
@@ -0,0 +1,26 @@
+package com.mycorp.examples.internal.timeservice.provider.rest.common;
+
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+import com.mycorp.examples.timeservice.provider.rest.common.TimeServiceRestNamespace;
+
+public class Activator implements BundleActivator {
+
+	public void start(final BundleContext context) throws Exception {
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			@Override
+			protected void runWithoutRegistry() throws Exception {
+				context.registerService(Namespace.class, new TimeServiceRestNamespace(), null);
+			}
+		});
+	}
+
+	public void stop(BundleContext context) throws Exception {
+		// nothing
+	}
+
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/src/com/mycorp/examples/timeservice/provider/rest/common/TimeServiceRestNamespace.java b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/src/com/mycorp/examples/timeservice/provider/rest/common/TimeServiceRestNamespace.java
index 74bb06f..41fd04a 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/src/com/mycorp/examples/timeservice/provider/rest/common/TimeServiceRestNamespace.java
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/src/com/mycorp/examples/timeservice/provider/rest/common/TimeServiceRestNamespace.java
@@ -23,6 +23,10 @@
 	
 	private static final long serialVersionUID = -3632048418135041788L;
 
+	public TimeServiceRestNamespace() {
+		super(NAME,"Time Service REST Namespace");
+	}
+	
 	@Override
 	public ID createInstance(Object[] parameters) throws IDCreateException {
 		return new TimeServiceRestID(this, URI.create((String) parameters[0]));
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF
index fd2794e..19fe302 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice Provider Rest Consumer
+Bundle-Name: ECF RS Example Timeservice REST Provider Consumer
 Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.consumer;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Import-Package: com.mycorp.examples.timeservice;version="1.0.0",
@@ -17,4 +17,5 @@
  org.json,
  org.osgi.framework
 Require-Bundle: org.eclipse.ecf,
- org.eclipse.equinox.common;bundle-version="3.6.200"
+ org.eclipse.equinox.common
+Bundle-Activator: com.mycorp.examples.timeservice.internal.provider.rest.consumer.Activator
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/build.properties b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/build.properties
index e9863e2..e5a949c 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/build.properties
@@ -2,4 +2,6 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               plugin.xml
+               plugin.xml,\
+               about.html
+src.includes = about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/src/com/mycorp/examples/timeservice/internal/provider/rest/consumer/Activator.java b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/src/com/mycorp/examples/timeservice/internal/provider/rest/consumer/Activator.java
new file mode 100644
index 0000000..d160e01
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/src/com/mycorp/examples/timeservice/internal/provider/rest/consumer/Activator.java
@@ -0,0 +1,23 @@
+package com.mycorp.examples.timeservice.internal.provider.rest.consumer;
+
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	public void start(final BundleContext context) throws Exception {
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			@Override
+			protected void runWithoutRegistry() throws Exception {
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(TimeServiceRestClientContainer.TIMESERVICE_CONSUMER_CONFIG_NAME, new TimeServiceRestClientContainerInstantiator(), "TimeService REST Client", false ,false), null);
+			}
+		});
+	}
+
+	public void stop(BundleContext context) throws Exception {
+	}
+
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF
index d92c669..d4b9433 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ECF TimeService Rest Provider Host
+Bundle-Name: ECF RS Example TimeService REST Provider Host
 Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.host;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.ecf
@@ -21,3 +21,4 @@
  org.osgi.service.http
 Service-Component: OSGI-INF/httpservicecomponent.xml
 Bundle-ActivationPolicy: lazy
+Bundle-Activator: com.mycorp.examples.timeservice.internal.provider.rest.host.Activator
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/build.properties b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/build.properties
index dfc69c3..20ce1e8 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/build.properties
@@ -3,5 +3,7 @@
                .,\
                OSGI-INF/httpservicecomponent.xml,\
                OSGI-INF/,\
-               plugin.xml
+               plugin.xml,\
+               about.html
 source.. = src/
+src.includes = about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/src/com/mycorp/examples/timeservice/internal/provider/rest/host/Activator.java b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/src/com/mycorp/examples/timeservice/internal/provider/rest/host/Activator.java
new file mode 100644
index 0000000..3be5e91
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/src/com/mycorp/examples/timeservice/internal/provider/rest/host/Activator.java
@@ -0,0 +1,23 @@
+package com.mycorp.examples.timeservice.internal.provider.rest.host;
+
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	public void start(final BundleContext context) throws Exception {
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			@Override
+			protected void runWithoutRegistry() throws Exception {
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(TimeServiceServerContainer.TIMESERVICE_HOST_CONFIG_NAME, new TimeServiceServerContainerInstantiator(), "TimeService REST Server", true,false), null);
+			}
+		});
+	}
+
+	public void stop(BundleContext context) throws Exception {
+	}
+
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF
index 54763bc..404197a 100644
--- a/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice
+Bundle-Name: ECF RS Example Timeservice API
 Bundle-SymbolicName: com.mycorp.examples.timeservice
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Export-Package: com.mycorp.examples.timeservice;version="1.0.0"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/examples/bundles/com.mycorp.examples.timeservice/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to examples/bundles/com.mycorp.examples.timeservice/about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice/build.properties b/examples/bundles/com.mycorp.examples.timeservice/build.properties
index 34d2e4d..9cbab3c 100644
--- a/examples/bundles/com.mycorp.examples.timeservice/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice/build.properties
@@ -1,4 +1,6 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               about.html
+src.includes = about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java b/examples/bundles/com.mycorp.examples.timeservice/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java
new file mode 100644
index 0000000..79e9a7a
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis - initial API and implementation
+ ******************************************************************************/
+package com.mycorp.examples.timeservice;
+
+import java.util.concurrent.Future;
+
+/**
+ * @since 1.1
+ */
+public interface ITimeServiceAsync {
+
+	public Future<Long> getCurrentTimeAsync();
+}
diff --git a/examples/bundles/org.eclipse.ecf.example.clients/products/ChatRobot.product b/examples/bundles/org.eclipse.ecf.example.clients/products/ChatRobot.product
index 38fdda5..497b458 100644
--- a/examples/bundles/org.eclipse.ecf.example.clients/products/ChatRobot.product
+++ b/examples/bundles/org.eclipse.ecf.example.clients/products/ChatRobot.product
@@ -45,7 +45,7 @@
       <plugin id="org.eclipse.ecf.provider.datashare"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
       <plugin id="org.eclipse.ecf.provider.xmpp"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
       <plugin id="org.eclipse.ecf.ui"/>
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 1.launch b/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 1.launch
deleted file mode 100644
index 3fe96ea..0000000
--- a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 1.launch
+++ /dev/null
@@ -1,381 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Example Collab 1"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>
-<stringAttribute key="location1" value="C:\eclipse3.1m4\eclipse\runtime-workspace"/>
-<stringAttribute key="location2" value="C:\eclipse3.1m4\eclipse\second-runtime-workspace"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<mapAttribute key="org.eclipse.debug.core.environmentVariables">
-<mapEntry key="smack.debugEnabled" value="true"/>
-</mapAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -consoleLog"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms512m -Xmx512m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value="C:\Documents and Settings\slewis\workspace.ecf\org.eclipse.ecf.example.collab\launchconfigs\config\config.ini"/>
-<booleanAttribute key="tracing" value="false"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="true"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/irccontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/ircrootcontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/XMPPClientSOContainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackconnection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackdebug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmppgroupchatsharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmpppresencesharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="true"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.help.base/debug" value="true"/>
-<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/formatter/enable_new" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/monitorbundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useNamedJRE" value="true"/>
-<booleanAttribute key="useProduct" value="true"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 2.launch b/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 2.launch
deleted file mode 100644
index 440ca6b..0000000
--- a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 2.launch
+++ /dev/null
@@ -1,340 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="org.eclipse.ecf.provider"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Example Collab 2"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab2"/>
-<stringAttribute key="location1" value="C:\eclipse3.1m4\eclipse\second-runtime-workspace"/>
-<stringAttribute key="location2" value="C:\eclipse3.1m4\eclipse\runtime-workspace"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dch.ethz.iks.slp.debug=true&#13;&#10;-Dnet.slp.traceMsg=true&#13;&#10;-Dnet.slp.traceReg=true"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value=""/>
-<booleanAttribute key="tracing" value="false"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/requests" value="true"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewer_cache_debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/textchatcomposite" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmpppresencesharedobject" value="true"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/debug" value="true"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/sharedobjectcontainerfactory" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug/packages" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showSystemJobs" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/connectionfactory" value="true"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.help.base/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.team.ftp/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/formatter/enable_new" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.ecf/debug/factoryinit" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/abstractsharedobject" value="true"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/brokercontainer" value="true"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackconnection" value="true"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/SharedDataGraph" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/DataGraphSharingFactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin/timing" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="true"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/channel" value="true"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/monitorbundles" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/twophasecommiteventprocessor" value="true"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/idfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/XMPPClientSOContainer" value="true"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/responses" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmppgroupchatsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/irccontainer" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/EMFUpdateManager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/clientcontainer" value="true"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="true"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackdebug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/list" value="true"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/servercontainer" value="true"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>
-</mapAttribute>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useNamedJRE" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 3.launch b/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 3.launch
deleted file mode 100644
index 11c348f..0000000
--- a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 3.launch
+++ /dev/null
@@ -1,336 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="org.eclipse.ecf,org.eclipse.ecf.example.collab,org.eclipse.ecf.provider,org.eclipse.ecf.provider.jms"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Example Collab 3"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab3"/>
-<stringAttribute key="location1" value="C:\eclipse3.1m4\eclipse\third-runtime-workspace"/>
-<stringAttribute key="location2" value="C:\eclipse3.1m4\eclipse\second-runtime-workspace"/>
-<stringAttribute key="location3" value="C:\eclipse3.1m4\eclipse\runtime-workspace"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<stringAttribute key="selectedPlugin" value="org.eclipse.ecf.provider"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.ui.views@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.expressions@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.search@default:default,org.eclipse.help@default:default,org.eclipse.ui@default:default,org.eclipse.ui.forms@default:default,org.eclipse.jface.text@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.ant.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.jface@default:default,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.equinox.app@default:default,org.eclipse.jdt.core@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.ui.win32@default:false,org.eclipse.text@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.navigator@default:default,org.junit*3.8.2.v20090203-1005@default:default,org.eclipse.team.ui@default:default,org.eclipse.core.resources@default:default,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.team.core@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.help.base@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.common@2:true,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.update.core@default:default,org.eclipse.help.appserver@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.debug.core@default:default,org.eclipse.update.configurator@3:true,org.eclipse.swt@default:default,org.eclipse.update.ui@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.core.runtime@default:true,org.apache.lucene@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.core.variables@default:default,org.eclipse.ui.ide@default:default,org.eclipse.osgi@-1:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.preferences@default:default,org.eclipse.compare@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ltk.core.refactoring@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.provider.twitter.ui.hub@default:default,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.ecf.services.quotes.oldskool@default:default,osgi.cloud.node@default:default,org.eclipse.ecf.client.jgroups@default:default,eclipse.p2@default:default,org.eclipse.ecf.server@default:default,org.jivesoftware.smack@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2@default:default,ch.ethz.iks.r_osgi.remote@default:default,org.eclipse.ecf.provider.jms.qpid@default:default,org.eclipse.ecf.mgmt.framework@default:default,org.eclipse.ecf.tests.provider.filetransfer.scp@default:default,org.eclipse.ecf.presence.bot@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.eclipse.ecf.examples.loadbalancing.consumer@default:default,org.eclipse.ecf.console@default:default,org.eclipse.ecf.tests.mgmt.ds@default:default,org.eclipse.ecf.examples.remoteservices.dictionary.common@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.tests.sharedobject@default:default,org.eclipse.ecf.provider.r_osgi@default:default,org.eclipse.ecf.tests.mgmt.app@default:default,org.eclipse.ecf.tests.presence@default:default,org.eclipse.ecf.tests.provider.jms.weblogic@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.telephony.call@default:default,org.eclipse.ecf.provider.xmpp@default:default,org.eclipse.ecf.provider.nntp.ui@default:false,org.eclipse.ecf.mgmt.app@default:default,org.eclipse.ecf.tests.provider.datashare.nio@default:false,org.eclipse.ecf.tests.discovery@default:default,org.eclipse.ecf.provider.jms@default:default,org.eclipse.ecf.provider.twitter.ui@default:default,org.eclipse.team.ecf.core@default:default,org.eclipse.ecf.examples.remoteservices.hello.dm.host@default:default,org.eclipse.ecf.examples.remoteservices.hello2@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.remoteservice.soap.host@default:default,org.eclipse.ecf.examples.datashare.app@default:default,org.eclipse.ecf.examples.loadbalancing@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local@default:default,org.json@default:default,org.eclipse.ecf.provider.twitter.ui.hub.product@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.ui.capabilities@default:default,org.eclipse.ecf.services.quotes.eclipsetwitter@default:default,org.eclipse.ecf.tests.mgmt.p2@default:default,org.eclipse.ecf.examples.loadbalancing.servicehost@default:default,org.eclipse.ecf.protocol.bittorrent@default:default,org.eclipse.ecf.protocol.nntp.store.filesystem@default:default,org.eclipse.ecf.provider.yahoo@default:default,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j@default:false,org.eclipse.emf.edit.ui@default:default,org.eclipse.ecf.mgmt.p2.install.host@default:default,org.eclipse.ecf.provider.nntp.security@default:default,org.eclipse.ecf.provider.skype@default:default,org.eclipse.ecf.mgmt.ds.host@default:default,org.eclipse.ecf.tests.provider.filetransfer.xmpp@default:default,org.eclipse.ecf.remoteservice.soap@default:default,org.eclipse.ecf.tests.provider.discovery@default:default,org.eclipse.ecf.remoteservice.eventadmin@default:default,org.eclipse.ecf.tests.provider.jms.activemq@default:default,org.eclipse.emf@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider.xmpp.ui@default:default,org.eclipse.ecf.examples.updatesite.server@default:default,org.eclipse.ecf.provider.msn.ui@default:default,org.eclipse.ecf.provider.bittorrent@default:default,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.provider.zookeeper@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.ecf.examples.tests.remoteservice.soap.host.hello@default:default,org.apache.httpcomponents.httpcore@default:default,ch.ethz.iks.slp@default:default,org.eclipse.ecf.mgmt.app.host@default:default,org.eclipse.ecf.provider.irc@default:default,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer@default:default,org.eclipse.ecf.example.clients@default:default,org.eclipse.ecf.protocol.nntp.model.test@default:false,org.eclipse.ecf.provider.jms.activemq@default:default,org.eclipse.ecf.tests.provider.jslp@default:default,org.eclipse.ecf.provider.filetransfer.scp@default:default,org.eclipse.ecf.protocol.msn@default:default,org.eclipse.emf.common@default:default,org.eclipse.ecf.provider.jms.weblogic.ui@default:default,org.eclipse.ecf.examples.eventadmin.app@default:default,org.eclipse.team.ecf.ui@default:default,org.eclipse.ecf.discovery.ui.properties@default:false,org.eclipse.ecf.tests.protocol.msn@default:false,org.eclipse.ecf.examples.provider.dictionary.soap.client@default:default,org.eclipse.ecf.provider.msn@default:default,eclipse.p2.host@default:default,org.eclipse.ecf.doc@default:default,org.eclipse.ecf.tests.provider.twitter@default:default,org.eclipse.ecf.tests.datashare@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.services.quotes.starwars@default:default,org.eclipse.ecf.tests.osgi.services.discovery@default:default,org.eclipse.ecf.provider.datashare@default:default,org.example.processor.assignment2@default:default,org.eclipse.ecf.examples.provider.trivial@default:default,org.eclipse.ecf.presence.ui@default:default,org.eclipse.ecf.provider.bittorrent.ui@default:default,org.eclipse.ecf.discovery.ui.browser@default:default,org.eclipse.ecf.provider.jms.activemq.ui@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.helios.tools@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.ecf.tests.sync@default:default,org.eclipse.ecf.provider.rss@default:default,org.eclipse.ecf.example.collab@default:default,com.skype@default:default,org.eclipse.ecf.examples.updatesite.client@default:default,org.eclipse.ecf.remoteservice.apt.java6@default:default,org.eclipse.ecf.tests.provider.xmpp@default:default,org.eclipse.ecf.provider.nntp@default:default,org.eclipse.ecf.remoteservice.rest@default:default,org.eclipse.ecf.provider.filetransfer.sharedobject@default:default,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests@default:false,org.eclipse.ecf.discovery.ui@default:default,org.eclipse.ecf.provider.riena@default:default,org.eclipse.ecf.provider.ui@default:default,org.example.processor.solution@default:default,org.eclipse.ecf.springframework@default:default,org.eclipse.ecf.provider.jms.weblogic@default:default,org.eclipse.ecf.protocol.nntp.store.derby@default:default,org.eclipse.ecf.examples.remoteservice.discovery.local@default:default,org.eclipse.ecf.tests.remoteservice.rest@default:default,org.eclipse.ecf.protocol.nntp.core@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.remoteservice.ui.dosgi@default:false,org.eclipse.ecf.provider.twitter@default:default,org.eclipse.ecf.provider.yahoo.ui@default:default,org.example.processor.assignment3@default:default,osgi.cloud.node.client@default:default,org.eclipse.ecf.ui@default:default,org.apache.zookeeper@default:default,org.eclipse.ecf.examples.loadbalancing.ds.consumer@default:default,org.eclipse.ecf.salvo.application@default:default,org.eclipse.ecf.tests.server.generic@default:default,org.eclipse.ecf.tests.storage@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests.filetransfer.jreprovider@default:default,org.eclipse.ecf.mgmt.p2.profile.host@default:default,org.eclipse.ecf.examples.remoteservices.hello@default:default,org.eclipse.ecf.examples.remoteservices.hello.host@default:default,org.eclipse.ecf.tests.provider.jmdns@default:default,org.eclipse.ecf.provider.irc.bot@default:default,org.eclipse.ecf.provider.discovery@default:default,org.eclipse.ecf.presence.collab.ui@default:default,org.eclipse.ecf.tests.provider.filetransfer.efs@default:default,org.eclipse.ecf.examples.loadbalancing.server@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.telephony.call.ui@default:default,org.eclipse.ecf.server.jgroups@default:default,org.eclipse.ecf.salvo.ui@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client@default:default,org.eclipse.ecf.services.quotes@default:default,org.eclipse.ecf.storage@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.protocol.nntp.model@default:default,org.eclipse.ecf.provider.datashare.nio@default:default,org.apache.mime4j@default:default,org.eclipse.ecf.tests.provider.jms@default:default,org.eclipse.ecf.examples.remoteservice.rest.twitter@default:default,org.eclipse.ecf.sync@default:default,org.eclipse.ecf.discovery.ui.edit@default:default,org.eclipse.ecf.tests.provider.discovery.local@default:default,org.eclipse.ecf.provider.jslp@default:default,org.eclipse.ecf.mgmt.p2@default:default,org.eclipse.ecf.tests.provider.jgroups@default:default,org.eclipse.ecf.examples.remoteservices.client@default:false,org.apache.log4j@default:default,org.eclipse.ecf.docshare@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.ecf.examples.remoteservices.hello.consumer@default:default,org.example.processor@default:default,org.eclipse.ecf.tests.mgmt.framework@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.ecf.provider.skype.ui@default:default,com.skype.win32.win32.x86@default:false,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.remoteservices.hello.ds.host@default:default,org.eclipse.ecf.remoteservice.ui@default:default,org.eclipse.ecf.protocol.nntp.store.filesystem.tests@default:false,org.eclipse.ecf.provider.jgroups@default:default,org.eclipse.ecf.examples.remoteservices.server@default:default,org.eclipse.ecf.mgmt.ds@default:default,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer@default:default,org.eclipse.ecf.provider.filetransfer.efs@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.example.collab.editor@default:default,org.eclipse.ecf.example.remoteservice.soap.host.hello@default:default,org.apache.httpcomponents.httpcore.nio@default:default,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.presence@default:default,org.eclipse.ecf.salvo.ui.navigator@default:false,org.eclipse.ecf.mgmt.p2.repository.host@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted@default:default,org.eclipse.ecf.provider.irc.ui@default:default,com.commonsense.backstop.tests.client.axis@default:default,org.eclipse.ecf.mgmt.framework.host@default:default,org.eclipse.ecf.tests.call@default:default,org.eclipse.ecf.samples.nntp@default:default,org.eclipse.emf.edit@default:default,org.eclipse.helios.tests@default:default,org.eclipse.ecf.provider.aim@default:default,org.eclipse.ecf.discovery.ui.model@default:default,org.eclipse.ecf.datashare@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.provider.jmdns@default:default,com.commonsense.backstop.client.axis@default:default,org.eclipse.ecf.tests.provider.skype@default:default,org.example.processor.assignment1@default:default,org.eclipse.ecf.discovery.ui.properties.tabbed@default:false,org.eclipse.ecf.tests.httpservice.util@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.filetransfer.ui@default:default,com.skype.examples@default:default,org.eclipse.ecf.tests.provider.nntp@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value=""/>
-<booleanAttribute key="tracing" value="true"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/config/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/contenttypes/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/pluginstopper" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/actions" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/activateplugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/create" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/failure" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/class" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/loader" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/native" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/resource" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes/failure" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/properties" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/general" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/get" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/set" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/dump" value=""/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/events/extension" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/events/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/resolve" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/timing/startup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/brokercontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/channel" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/clientcontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/servercontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackconnection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackdebug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmpppresencesharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmppsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/DataGraphSharingFactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.sdo/EMFUpdateManager" value="true"/>
-<mapEntry key="org.eclipse.ecf.sdo/SharedDataGraph" value="true"/>
-<mapEntry key="org.eclipse.ecf.sdo/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/textchatcomposite" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/connectionfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/factoryinit" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/idfactory" value="true"/>
-<mapEntry key="org.eclipse.help.base/debug" value="true"/>
-<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/allTypesCache" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/checkCoreBindingGetJavaElement" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/checkCoreBindingIsEqualTo" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/useUIBindingGetJavaElement" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/monitorbundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin/timing" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packages" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/debug" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/list" value="true"/>
-<mapEntry key="org.eclipse.team.ftp/requests" value="true"/>
-<mapEntry key="org.eclipse.team.ftp/responses" value="true"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showSystemJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-<mapEntry key="ort.eclipse.ecf/debug/sharedobjectcontainerfactory" value="true"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050activemq\051.product"
index 2797530..abf2645 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050activemq\051.product"
@@ -24,7 +24,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050jgroups\051.product" "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050jgroups\051.product"
index 7f1555c..41bfa20 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050jgroups\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Receiver \050jgroups\051.product"
@@ -35,7 +35,7 @@
       <plugin id="org.eclipse.ecf.provider.datashare"/>
       <plugin id="org.eclipse.ecf.provider.jgroups"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050activemq\051.product"
index 2f4abf7..9f7fb3c 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050activemq\051.product"
@@ -24,7 +24,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050jgroups\051.product" "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050jgroups\051.product"
index 7f1fb95..6b1c3f6 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050jgroups\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.datashare.app/products/Datashare Sender \050jgroups\051.product"
@@ -35,7 +35,7 @@
       <plugin id="org.eclipse.ecf.provider.datashare"/>
       <plugin id="org.eclipse.ecf.provider.jgroups"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050activemq\051.product"
index db04a22..2805a7e 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050activemq\051.product"
@@ -35,7 +35,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.remoteservice.eventadmin"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050generic\051.product"
index d647637..9d25245 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Client \050generic\051.product"
@@ -36,7 +36,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.remoteservice.eventadmin"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050activemq\051.product"
index 5fa5b36..9026cfb 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050activemq\051.product"
@@ -35,7 +35,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.remoteservice.eventadmin"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050generic\051.product"
index c06e8b2..efb8120 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.eventadmin.app/products/EventAdmin Server \050generic\051.product"
@@ -34,7 +34,7 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.datashare"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.remoteservice.eventadmin"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/products/Data Processor Consumer \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/products/Data Processor Consumer \050activemq\051.product"
index ba7bb7f..d7b6b16 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/products/Data Processor Consumer \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/products/Data Processor Consumer \050activemq\051.product"
@@ -40,7 +40,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/products/Data Processor Consumer DS \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/products/Data Processor Consumer DS \050activemq\051.product"
index 3f419e9..8ee6b03 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/products/Data Processor Consumer DS \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/products/Data Processor Consumer DS \050activemq\051.product"
@@ -41,7 +41,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/products/Data Processor Server \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/products/Data Processor Server \050activemq\051.product"
index 3a58bc5..7ca8d90 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/products/Data Processor Server \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/products/Data Processor Server \050activemq\051.product"
@@ -40,7 +40,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.servicehost/products/Data Processor Service Host \050activemq\051.product" "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.servicehost/products/Data Processor Service Host \050activemq\051.product"
index 5e33533..34d7c79 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.servicehost/products/Data Processor Service Host \050activemq\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.servicehost/products/Data Processor Service Host \050activemq\051.product"
@@ -40,7 +40,7 @@
       <plugin id="org.eclipse.ecf.provider.jms"/>
       <plugin id="org.eclipse.ecf.provider.jms.activemq"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
diff --git a/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java b/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java
index 8df7cd6..df6f922 100644
--- a/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java
+++ b/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java
@@ -8,9 +8,8 @@
 package org.eclipse.ecf.examples.loadbalancing;
 
 import org.eclipse.ecf.remoteservice.IAsyncCallback;
-import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
 
-public interface IDataProcessorAsync extends IAsyncRemoteServiceProxy {
+public interface IDataProcessorAsync {
 
 	public void processDataAsync(String data, IAsyncCallback<String> callback);
 
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF
index 734f0f6..f932ed1 100644
--- a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF
@@ -2,8 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.examples.provider.remoteservice;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %bundle.provider
+Bundle-Version: 1.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.events,
@@ -16,7 +15,7 @@
  org.eclipse.ecf.remoteservice.util;version="6.0.0",
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.6.0"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
 Export-Package: org.eclipse.ecf.examples.provider.remoteservice.identity;version="1.0.0",
  org.eclipse.ecf.internal.examples.provider.remoteservice.container;x-internal:=true
 Bundle-Localization: plugin
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF
index beb52f0..90cc2b9 100644
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF
@@ -5,8 +5,8 @@
 Bundle-Version: 1.0.200.provider
 Bundle-Activator: org.eclipse.ecf.internal.examples.provider.trivial.Activator
 Bundle-Vendor: %bundle.provider
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ecf
+Require-Bundle: org.eclipse.ecf,
+ org.eclipse.equinox.common;bundle-version="3.6.200"
 Eclipse-LazyStart: true
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
@@ -16,3 +16,4 @@
  org.eclipse.ecf.internal.examples.provider.trivial;x-internal:=true,
  org.eclipse.ecf.internal.examples.provider.trivial.container;x-internal:=true
 Bundle-Localization: bundle
+Import-Package: org.osgi.framework
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
index 7ace60c..4f21baf 100644
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
@@ -19,17 +19,5 @@
             server="false">
       </containerFactory>
    </extension>
-   <extension
-         id="Trivial"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="*"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.ecf.examples.provider.trivial.TrivialApplication">
-         </run>
-      </application>
-   </extension>
 
 </plugin>
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/TrivialApplication.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/TrivialApplication.java
deleted file mode 100644
index b34ad23..0000000
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/TrivialApplication.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.ecf.examples.provider.trivial;
-
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.IContainerFactory;
-import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.util.ECFException;
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.equinox.app.IApplicationContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class TrivialApplication implements IApplication {
-
-	private boolean done = false;
-
-	private ServiceTracker containerManagerTracker;
-	
-	public Object start(IApplicationContext context) throws Exception {
-		try {
-			IContainerFactory factory = getContainerManager().getContainerFactory();
-			// Create instance of trivial container
-			IContainer container = factory.createContainer("ecf.container.trivial");
-
-			// Get appropriate container adapter...e.g. IChannelContainerAdapter
-			// IChannelContainerAdapter containerAdapter =
-			// (IChannelContainerAdapter)
-			// container.getAdapter(IChannelContainerAdapter.class);
-
-			// Connect
-			ID targetID = IDFactory.getDefault().createID(
-					container.getConnectNamespace(), "myid");
-			container.connect(targetID, null);
-
-			synchronized (this) {
-				while (!done) {
-					wait();
-				}
-			}
-
-		} catch (ECFException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	public void stop() {
-		if (containerManagerTracker != null) {
-			containerManagerTracker.close();
-			containerManagerTracker = null;
-		}
-		synchronized (this) {
-			done = true;
-			notify();
-		}
-	}
-
-	protected IContainerManager getContainerManager() {
-		if (containerManagerTracker == null) {
-			containerManagerTracker = new ServiceTracker(
-					org.eclipse.ecf.internal.examples.provider.trivial.Activator.getDefault().getContext(), IContainerManager.class.getName(),
-					null);
-			containerManagerTracker.open();
-		}
-		return (IContainerManager) containerManagerTracker.getService();
-	}
-
-
-}
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java
index 3b7ab14..907f543 100644
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java
@@ -21,6 +21,10 @@
 	public static final String SCHEME = "trivial";
 	public static final String NAME = "ecf.namespace.trivial";
 
+	public TrivialNamespace(String name) {
+		super(name,null);
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[])
 	 */
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/Activator.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/Activator.java
index 2629385..04fdb67 100755
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/Activator.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/Activator.java
@@ -1,12 +1,19 @@
 package org.eclipse.ecf.internal.examples.provider.trivial;
 
-import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.provider.IContainerInstantiator;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
+import org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace;
+import org.eclipse.ecf.internal.examples.provider.trivial.container.TrivialContainerInstantiator;
+import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
 /**
  * The activator class controls the plug-in life cycle
  */
-public class Activator extends Plugin {
+public class Activator implements BundleActivator {
 
 	// The plug-in ID
 	public static final String PLUGIN_ID = "org.eclipse.ecf.internal.examples.provider.trivial";
@@ -27,9 +34,23 @@
 	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
 	 */
 	public void start(BundleContext context) throws Exception {
-		super.start(context);
 		this.context = context;
 		plugin = this;
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithoutRegistry() throws Exception {
+				// If we don't have a registry, then register trivial namespace
+				Activator.this.context.registerService(Namespace.class,
+						new TrivialNamespace(TrivialNamespace.NAME), null);
+				// And create and register ContainerTypeDescription
+				Activator.this.context
+						.registerService(
+								ContainerTypeDescription.class,
+								new ContainerTypeDescription(
+										TrivialContainerInstantiator.NAME,
+										(IContainerInstantiator) new TrivialContainerInstantiator()),
+								null);
+			}
+		});
 	}
 
 	/*
@@ -38,7 +59,6 @@
 	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
-		super.stop(context);
 		this.context = null;
 	}
 
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java
index c678294..489adae 100644
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java
@@ -21,6 +21,8 @@
 
 public class TrivialContainerInstantiator extends BaseContainerInstantiator {
 
+	public static final String NAME = "ecf.container.trivial";
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.provider.BaseContainerInstantiator#createInstance(org.eclipse.ecf.core.ContainerTypeDescription, java.lang.Object[])
 	 */
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.classpath b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.gitignore b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.project b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.project
new file mode 100644
index 0000000..5f4a6c5
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.examples.raspberrypi.management.consumer</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6983f4e
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Raspberry Pi Management Consumer
+Bundle-SymbolicName: org.eclipse.ecf.examples.raspberrypi.management.consumer
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.eclipse.ecf.examples.raspberrypi.management;version="1.0.0"
+Service-Component: OSGI-INF/raspberrypicomponent.xml
+Bundle-ActivationPolicy: lazy
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/OSGI-INF/raspberrypicomponent.xml b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/OSGI-INF/raspberrypicomponent.xml
new file mode 100644
index 0000000..ab85d90
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/OSGI-INF/raspberrypicomponent.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" enabled="true" name="org.eclipse.ecf.examples.raspberrypi.management.consumer">
+   <implementation class="org.eclipse.ecf.internal.examples.raspberrypi.management.consumer.RaspberryPiComponent"/>
+   <reference bind="bindRaspberryPi" cardinality="0..n" interface="org.eclipse.ecf.examples.raspberrypi.management.IRaspberryPiAsync" name="IRaspberryPiAsync" policy="dynamic"/>
+</scr:component>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/build.properties b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/build.properties
new file mode 100644
index 0000000..9d72e66
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/build.properties
@@ -0,0 +1,6 @@
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               OSGI-INF/raspberrypicomponent.xml,\
+               OSGI-INF/
+source.. = src/
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/src/org/eclipse/ecf/internal/examples/raspberrypi/management/consumer/RaspberryPiComponent.java b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/src/org/eclipse/ecf/internal/examples/raspberrypi/management/consumer/RaspberryPiComponent.java
new file mode 100644
index 0000000..a9c0810
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.consumer/src/org/eclipse/ecf/internal/examples/raspberrypi/management/consumer/RaspberryPiComponent.java
@@ -0,0 +1,18 @@
+package org.eclipse.ecf.internal.examples.raspberrypi.management.consumer;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+import org.eclipse.ecf.examples.raspberrypi.management.IRaspberryPiAsync;
+
+public class RaspberryPiComponent {
+
+	void bindRaspberryPi(IRaspberryPiAsync rpi) {
+		CompletableFuture<Map<String,String>> future = rpi.getSystemPropertiesAsync();
+		future.thenAccept((map) -> {
+			System.out.println("Found RaspberryPi");
+			for(String key: map.keySet()) 
+				System.out.println("  "+key+"="+map.get(key));
+		});
+	}
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/.project b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/.project
new file mode 100644
index 0000000..3310523
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.examples.raspberrypi.management.host.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/build.properties b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/build.properties
new file mode 100644
index 0000000..db8f764
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml
+root=rootfiles
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/feature.xml b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/feature.xml
new file mode 100644
index 0000000..c751ecf
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/feature.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.examples.raspberrypi.management.host.feature"
+      label="Raspberry Pi Host Feature"
+      version="1.0.0.qualifier">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="org.eclipse.ecf.examples.raspberrypi.management"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.examples.raspberrypi.management.host"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.felix.gogo.command"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.felix.gogo.runtime"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.felix.gogo.shell"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.console"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.discovery"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.identity"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.osgi.services.distribution"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.osgi.services.remoteserviceadmin"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.remoteservice"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.remoteservice.asyncproxy"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.sharedobject"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.equinox.common"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.equinox.concurrent"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.equinox.console"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.equinox.event"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.core.jobs"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osgi"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osgi.services"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osgi.services.remoteserviceadmin"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.remoteservice"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="ch.ethz.iks.slp"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.jslp"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/products/RaspberryPiManagmentHost.product b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/products/RaspberryPiManagmentHost.product
new file mode 100644
index 0000000..c9f2e5e
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/products/RaspberryPiManagmentHost.product
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="ECF RaspberryPi Remote Service Example" uid="org.eclipse.ecf.examples.raspberrypi.management.host.feature" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-console
+-consoleLog
+-debug
+      </programArgs>
+      <programArgsLin>-os linux
+-ws gtk
+-arch arm
+      </programArgsLin>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true 
+-DverboseRemoteServiceAdmin=true
+-Dservice.exported.configs=ecf.generic.server
+-Decf.generic.server.port=3288
+-Decf.generic.server.hostname=localhost
+-Decf.exported.async.interfaces=*
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</linux>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+   </vm>
+
+   <plugins>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.examples.raspberrypi.management"/>
+      <plugin id="org.eclipse.ecf.examples.raspberrypi.management.host"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.jmdns"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" version="2.0.0.v20140410-1838"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+   </plugins>
+
+   <features>
+      <feature id="org.eclipse.ecf.examples.raspberrypi.management.host.feature" version="1.0.0.qualifier"/>
+   </features>
+
+   <configurations>
+      <plugin id="ch.ethz.iks.slp" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.examples.raspberrypi.management" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.examples.raspberrypi.management.host" autoStart="true" startLevel="6" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="5" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.jslp" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/rootfiles/rpimgmthost.bat b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/rootfiles/rpimgmthost.bat
new file mode 100644
index 0000000..0507239
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/rootfiles/rpimgmthost.bat
@@ -0,0 +1,19 @@
+@echo off
+set JAVAPROG=java
+set GENERICHOSTNAME=localhost
+set GENERICPORT=3288
+if "%1"=="" goto usage
+set GENERICHOSTNAME=%1
+:runjava
+set JAVAPROPS=-Decf.generic.server.hostname=%GENERICHOSTNAME% -Decf.generic.server.port=%GENERICPORT% -Declipse.ignoreApp=true -Dosgi.noShutdown=true
+echo javaprops=%JAVAPROPS%
+set EQUINOXJAR=plugins/org.eclipse.osgi_3.10.0.v20140407-2102.jar
+echo equinoxjar=%EQUINOXJAR%
+set ARGS=-configuration file:configuration -os linux -ws gtk -arch arm -console -consoleLog -debug
+echo program args=%ARGS%
+%JAVAPROG% %JAVAPROPS% -jar %EQUINOXJAR% %ARGS%
+goto end
+:usage
+ECHO No arguments supplied.  Usage:  %0 hostname [port]
+:end
+@echo on
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/rootfiles/rpimgmthost.sh b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/rootfiles/rpimgmthost.sh
new file mode 100644
index 0000000..fdfe0f7
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host.feature/rootfiles/rpimgmthost.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+JAVAPROG=java
+if [ "$#" -eq  "0" ];then
+ echo "No arguments supplied. Usage:  rpimgmthost.sh hostname port"
+ exit 1
+fi
+GENERICHOSTNAME="${1}"
+if [ "${2}" != "" ];then
+  GENERICPORT="${2}"
+else
+  GENERICPORT=3288
+fi
+echo "Hostname: ${GENERICHOSTNAME}"
+echo "Port: ${GENERICPORT}"
+JAVAPROPS="-Decf.generic.server.hostname=${GENERICHOSTNAME} -Decf.generic.server.port=${GENERICPORT} -Declipse.ignoreApp=true -Dosgi.noShutdown=true"
+echo "javaprops=${JAVAPROPS}"
+EQUINOXJAR=plugins/org.eclipse.osgi_3.10.0.v20140407-2102.jar
+echo "equinox=${EQUINOXJAR}"
+PROGARGS="-configuration file:configuration -os linux -ws gtk -arch arm -console -consoleLog -debug"
+${JAVAPROG} ${JAVAPROPS} -jar ${EQUINOXJAR} ${PROGARGS}
+
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.classpath b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.gitignore b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.project b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.project
new file mode 100644
index 0000000..5c180fa
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.examples.raspberrypi.management.host</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.settings/org.eclipse.pde.core.prefs b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..617e228
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Raspberry Pi Management Remote Service Host
+Bundle-SymbolicName: org.eclipse.ecf.examples.raspberrypi.management.host
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Activator: org.eclipse.ecf.internal.examples.raspberrypi.management.host.Activator
+Import-Package: org.eclipse.ecf.examples.raspberrypi.management,
+ org.osgi.framework;version="1.8.0"
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/build.properties b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/src/org/eclipse/ecf/internal/examples/raspberrypi/management/host/Activator.java b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/src/org/eclipse/ecf/internal/examples/raspberrypi/management/host/Activator.java
new file mode 100644
index 0000000..357d4ec
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/src/org/eclipse/ecf/internal/examples/raspberrypi/management/host/Activator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis (slewis@composent.com) - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.internal.examples.raspberrypi.management.host;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.eclipse.ecf.examples.raspberrypi.management.IRaspberryPi;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+public class Activator implements BundleActivator {
+
+	private static final String OSGI_SERVICE_EXPORTED_INTERFACES = "service.exported.interfaces";
+	
+	private ServiceRegistration<IRaspberryPi> registration;
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		Dictionary<String,Object> props = new Hashtable<String,Object>();
+		// Add OSGi required remote service properties
+		props.put(OSGI_SERVICE_EXPORTED_INTERFACES, System.getProperty(OSGI_SERVICE_EXPORTED_INTERFACES,"*"));
+		// Use ECF generic server config.
+		props.put("service.exported.configs", "ecf.generic.server");
+		// Setup hostname config (default:localhost)
+		String hostname = System.getProperty("ecf.generic.server.hostname");
+		if (hostname != null) 
+			props.put("ecf.generic.server.hostname",hostname);
+		// Setup port config (default:-1)
+		props.put("ecf.generic.server.port",new Integer(System.getProperty("ecf.generic.server.port","-1")));
+		// Setup IRaspberryPiAsync as async remote service
+		props.put("ecf.exported.async.interfaces", "*");
+		// This remote service registration will trigger export, and publishing via zeroconf
+		registration = context.registerService(IRaspberryPi.class, new RaspberryPi(), props);
+		
+		System.out.println("IRaspberryPi remote service registered="+registration);
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		registration.unregister();
+		System.out.println("IRaspberryPi remote service unregistered");
+	}
+
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/src/org/eclipse/ecf/internal/examples/raspberrypi/management/host/RaspberryPi.java b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/src/org/eclipse/ecf/internal/examples/raspberrypi/management/host/RaspberryPi.java
new file mode 100644
index 0000000..2c011ec
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management.host/src/org/eclipse/ecf/internal/examples/raspberrypi/management/host/RaspberryPi.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis (slewis@composent.com) - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.internal.examples.raspberrypi.management.host;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.ecf.examples.raspberrypi.management.IRaspberryPi;
+
+/**
+ * Implementation of IRaspberryPi service interface.
+ */
+public class RaspberryPi implements IRaspberryPi {
+
+	@Override
+	public Map<String, String> getSystemProperties() {
+		Properties props = System.getProperties();
+		
+		Map<String, String> result = new HashMap<String,String>();
+		for (final String name: props.stringPropertyNames())
+		    result.put(name, props.getProperty(name));
+		
+		System.out.println("REMOTE CALL: getSystemProperties()");
+		return result;
+	}
+
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.classpath b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.gitignore b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.project b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.project
new file mode 100644
index 0000000..d0e47d3
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.examples.raspberrypi.management</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.settings/org.eclipse.pde.core.prefs b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c2372a2
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Raspberry Pi Management API
+Bundle-SymbolicName: org.eclipse.ecf.examples.raspberrypi.management
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.ecf.examples.raspberrypi.management;version="1.0.0"
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/build.properties b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/src/org/eclipse/ecf/examples/raspberrypi/management/IRaspberryPi.java b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/src/org/eclipse/ecf/examples/raspberrypi/management/IRaspberryPi.java
new file mode 100644
index 0000000..a3b07ae
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/src/org/eclipse/ecf/examples/raspberrypi/management/IRaspberryPi.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis (slewis@composent.com) - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.examples.raspberrypi.management;
+
+import java.util.Map;
+
+public interface IRaspberryPi {
+
+	/**
+	 * Get system properties for the Raspberry Pi remote service host.
+	 * @return Map<String,String> the system properties for the remote RP
+	 */
+	public Map<String,String> getSystemProperties();
+	
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/src/org/eclipse/ecf/examples/raspberrypi/management/IRaspberryPiAsync.java b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/src/org/eclipse/ecf/examples/raspberrypi/management/IRaspberryPiAsync.java
new file mode 100644
index 0000000..da7016c
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.raspberrypi.management/src/org/eclipse/ecf/examples/raspberrypi/management/IRaspberryPiAsync.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Scott Lewis (slewis@composent.com) - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.examples.raspberrypi.management;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+public interface IRaspberryPiAsync {
+
+	/**
+	 * Get remote system properties via CompletableFuture for non-blocking.
+	 * Note:  signature of this method is connected to {@link IRaspberryPi#getSystemProperties()}.
+	 * 
+	 * @return CompletableFuture
+	 */
+	public CompletableFuture<Map<String,String>> getSystemPropertiesAsync();
+	
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF
index fa04dd8..eb74872 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECF RemoteServices Hello Example Endpoint Description Extender Format
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.consumer.edef
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Remote-Service: generic_hello.xml
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
index 79573e4..b6430fc 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
   <endpoint-description>
+    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://localhost:3787/server"/>
     <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
+    <property name="ecf.endpoint.ts" value-type="Long" value="1387233380373"/>
     <property name="endpoint.framework.uuid" value-type="String" value="70cd3d4b-4931-0010-1b63-d64101cefd5e"/>
-    <property name="endpoint.id" value-type="String" value="ecftcp://localhost:3787/server"/>
+    <property name="endpoint.id" value-type="String" value="87d3ef4f-8e8f-4187-873e-166dcc58c9ed"/>
     <property name="endpoint.service.id" value-type="Long" value="0"/>
-	<property name="endpoint.package.version.org.eclipse.ecf.examples.remoteservices.hello" value-type="String" value="3.0.0"/>
+	<property name="endpoint.package.version.org.eclipse.ecf.examples.remoteservices.hello" value-type="String" value="4.0.0"/>
     <property name="objectClass" value-type="String">
       <array>
         <value>org.eclipse.ecf.examples.remoteservices.hello.IHello</value>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF
index d450a41..4c89d6e 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.consumer.rs
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.examples.remoteservices.hello.consumer.rs.Activator
 Bundle-Vendor: %bundleProvider
 Require-Bundle: org.eclipse.equinox.common
@@ -12,8 +12,9 @@
 Bundle-Localization: bundle
 Import-Package: org.eclipse.ecf.core,
  org.eclipse.ecf.core.identity;version="3.0.0",
- org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+ org.eclipse.ecf.examples.remoteservices.hello;version="4.0.0",
  org.eclipse.ecf.remoteservice,
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.ecf.remoteservice.events,
  org.osgi.framework;version="1.5.0",
  org.osgi.util.tracker
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product
index c553973..9c5f220 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product
@@ -14,12 +14,12 @@
 
    <plugins>
       <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
       <plugin id="org.eclipse.core.contenttype"/>
       <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
       <plugin id="org.eclipse.ecf"/>
       <plugin id="org.eclipse.ecf.discovery"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
@@ -28,13 +28,13 @@
       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.r_osgi"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
-      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -45,6 +45,7 @@
    <configurations>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.rs" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
    </configurations>
 
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/META-INF/MANIFEST.MF
index 7a9e3b7..2ff8655 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
  CDC-1.1/Foundation-1.1
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity;version="3.0.0",
- org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+ org.eclipse.ecf.examples.remoteservices.hello;version="4.0.0",
  org.eclipse.ecf.osgi.services.distribution;version="1.0.0",
  org.eclipse.ecf.remoteservice,
  org.eclipse.ecf.remoteservice.events,
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
index 6fa56c3..0cc3b9b 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
@@ -22,6 +22,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -39,12 +40,13 @@
       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -55,6 +57,7 @@
    <configurations>
       <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
    </configurations>
 
 </product>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product"
index 35229a6..9ab46a6 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product"
@@ -22,6 +22,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -39,12 +40,13 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.jmdns"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -52,5 +54,8 @@
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
    </plugins>
 
+   <configurations>
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+   </configurations>
 
 </product>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product"
index 64a0976..8e45160 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product"
@@ -26,6 +26,7 @@
    <plugins>
       <plugin id="ch.ethz.iks.r_osgi.remote"/>
       <plugin id="ch.ethz.iks.slp"/>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -43,12 +44,13 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.jmdns"/>
       <plugin id="org.eclipse.ecf.provider.r_osgi"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -57,5 +59,8 @@
       <plugin id="org.objectweb.asm"/>
    </plugins>
 
+   <configurations>
+      <plugin id="org.eclipse.equinox.event" autoStart="false" startLevel="0" />
+   </configurations>
 
 </product>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product"
index 5759b3e..4bb1c61 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product"
@@ -30,6 +30,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -49,12 +50,13 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
       <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -62,5 +64,8 @@
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
    </plugins>
 
+   <configurations>
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+   </configurations>
 
 </product>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product"
index a18c8fc..300633f 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product"
@@ -29,6 +29,7 @@
 
    <plugins>
       <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -48,12 +49,13 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.r_osgi"/>
       <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -62,5 +64,8 @@
       <plugin id="org.objectweb.asm"/>
    </plugins>
 
+   <configurations>
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+   </configurations>
 
 </product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java
index bc8fe36..d6ae778 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java
@@ -10,6 +10,9 @@
  *****************************************************************************/
 package org.eclipse.ecf.internal.examples.remoteservices.hello.consumer;
 
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.ecf.core.IContainerFactory;
@@ -184,7 +187,7 @@
 			
 			// Call asynchronously with future
 			System.out.println("STARTING async remote call via future...");
-			IFuture future = helloA.helloAsync(CONSUMER_NAME + " via async proxy with future");
+			Future<String> future = helloA.helloAsync(CONSUMER_NAME + " via async proxy with future");
 			System.out.println("LOCAL async future invocation complete");
 			System.out.println();
 			try {
@@ -194,7 +197,7 @@
 					Thread.sleep(200);
 				}
 				// Now it's done, so this will not block
-				Object result = future.get();
+				String result = future.get();
 				System.out.println("COMPLETED remote call with future SUCCEEDED with result="+result);
 				System.out.println();
 			} catch (OperationCanceledException e) {
@@ -205,6 +208,10 @@
 				System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
 				System.out.println();
 				e.printStackTrace();
+			} catch (ExecutionException e) {
+				System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
+				System.out.println();
+				e.printStackTrace();
 			}
 			
 			// Call other helloMessage method
@@ -226,7 +233,7 @@
 					Thread.sleep(200);
 				}
 				// Now it's done, so this will not block
-				Object result = future.get();
+				String result = future.get();
 				System.out.println("COMPLETED remote call with future SUCCEEDED with result="+result);
 				System.out.println();
 			} catch (OperationCanceledException e) {
@@ -237,6 +244,10 @@
 				System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
 				System.out.println();
 				e.printStackTrace();
+			} catch (ExecutionException e) {
+				System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
+				System.out.println();
+				e.printStackTrace();
 			}
 
 		}
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/.gitignore b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator$HelloTrackerCustomizer$1.class b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator$HelloTrackerCustomizer$1.class
deleted file mode 100644
index 2621e2a..0000000
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator$HelloTrackerCustomizer$1.class
+++ /dev/null
Binary files differ
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator$HelloTrackerCustomizer.class b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator$HelloTrackerCustomizer.class
deleted file mode 100644
index 84486b0..0000000
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator$HelloTrackerCustomizer.class
+++ /dev/null
Binary files differ
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator.class b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator.class
deleted file mode 100644
index 9ed2ef4..0000000
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/bin/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator.class
+++ /dev/null
Binary files differ
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/src/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/src/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator.java
index 6a64df5..8d58e2f 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/src/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer2/src/org/eclipse/ecf/examples/internal/remoteservices/hello/consumer2/Activator.java
@@ -10,13 +10,15 @@
  *****************************************************************************/
 package org.eclipse.ecf.examples.internal.remoteservices.hello.consumer2;
 
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.ecf.examples.remoteservices.hello.HelloMessage;
 import org.eclipse.ecf.examples.remoteservices.hello.IHello;
 import org.eclipse.ecf.examples.remoteservices.hello.IHelloAsync;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
 import org.eclipse.ecf.remoteservice.IAsyncCallback;
-import org.eclipse.equinox.concurrent.future.IFuture;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
@@ -94,7 +96,7 @@
 				
 				// Call asynchronously with future
 				System.out.println("STARTING async remote call via future...");
-				IFuture future = helloA.helloAsync(CONSUMER_NAME + " via async proxy with future");
+				Future<String> future = helloA.helloAsync(CONSUMER_NAME + " via async proxy with future");
 				System.out.println("LOCAL async future invocation complete");
 				System.out.println();
 				try {
@@ -104,7 +106,7 @@
 						Thread.sleep(200);
 					}
 					// Now it's done, so this will not block
-					Object result = future.get();
+					String result = future.get();
 					System.out.println("COMPLETED remote call with future SUCCEEDED with result="+result);
 					System.out.println();
 				} catch (OperationCanceledException e) {
@@ -115,6 +117,10 @@
 					System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
 					System.out.println();
 					e.printStackTrace();
+				} catch (ExecutionException e) {
+					System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
+					System.out.println();
+					e.printStackTrace();
 				}
 				
 				// Call other helloMessage method
@@ -136,7 +142,7 @@
 						Thread.sleep(200);
 					}
 					// Now it's done, so this will not block
-					Object result = future.get();
+					String result = future.get();
 					System.out.println("COMPLETED remote call with future SUCCEEDED with result="+result);
 					System.out.println();
 				} catch (OperationCanceledException e) {
@@ -147,10 +153,12 @@
 					System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
 					System.out.println();
 					e.printStackTrace();
+				} catch (ExecutionException e) {
+					System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
+					System.out.println();
+					e.printStackTrace();
 				}
-
 			}
-			
 		}
 
 		public void modifiedService(ServiceReference<IHello> reference,
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/META-INF/MANIFEST.MF
index 23f824a..790a586 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/META-INF/MANIFEST.MF
@@ -7,7 +7,7 @@
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
  CDC-1.1/Foundation-1.1
-Import-Package: org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+Import-Package: org.eclipse.ecf.examples.remoteservices.hello;version="4.0.0",
  org.eclipse.ecf.remoteservice,
  org.eclipse.ecf.remoteservice.events,
  org.eclipse.equinox.app;version="1.0.0",
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product"
index 04f57ca..cff17d4 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product"
@@ -22,6 +22,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -39,13 +40,14 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.jmdns"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
       <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.equinox.util"/>
@@ -66,6 +68,7 @@
       <plugin id="org.eclipse.equinox.app" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
       <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
    </configurations>
 
 </product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/consumer/HelloClientComponent.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/consumer/HelloClientComponent.java
index dea199b..89940d6 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/consumer/HelloClientComponent.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/consumer/HelloClientComponent.java
@@ -9,6 +9,9 @@
 ******************************************************************************/
 package org.eclipse.ecf.examples.internal.remoteservices.hello.ds.consumer;
 
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.ecf.examples.remoteservices.hello.IHello;
@@ -58,7 +61,7 @@
 			
 			// Call asynchronously with future
 			System.out.println("STARTING async remote call via future...");
-			IFuture future = helloA.helloAsync(CONSUMER_NAME + " via async proxy with future");
+			Future<String> future = helloA.helloAsync(CONSUMER_NAME + " via async proxy with future");
 			System.out.println("LOCAL async future invocation complete");
 			System.out.println();
 			try {
@@ -68,7 +71,7 @@
 					Thread.sleep(200);
 				}
 				// Now it's done, so this will not block
-				Object result = future.get();
+				String result = future.get();
 				System.out.println("COMPLETED remote call with future SUCCEEDED with result="+result);
 				System.out.println();
 			} catch (OperationCanceledException e) {
@@ -79,6 +82,10 @@
 				System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
 				System.out.println();
 				e.printStackTrace();
+			} catch (ExecutionException e) {
+				System.out.println("COMPLETED remote call with callback INTERRUPTED with exception="+e);
+				System.out.println();
+				e.printStackTrace();
 			}
 		}
 		
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF
index 2e9073a..9426047 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.ds.host;singleton:=true
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
  CDC-1.1/Foundation-1.1
-Import-Package: org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+Import-Package: org.eclipse.ecf.examples.remoteservices.hello;version="4.0.0",
  org.eclipse.equinox.app;version="1.1.0"
 Service-Component: OSGI-INF/hello.xml
 Bundle-Localization: bundle
 Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml
index 81a1286..ea0f057 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml
@@ -3,7 +3,7 @@
    <implementation class="org.eclipse.ecf.examples.internal.remoteservices.hello.ds.host.HelloComponent"/>
    <property name="service.exported.interfaces" type="String" value="*"/>
    <property name="service.exported.configs" type="String" value="ecf.generic.server"/>
-   <property name="ecf.exported.containerfactoryargs" type="String" value="ecftcp://localhost:3787/server"/>
+   <property name="ecf.generic.server.id" type="String" value="ecftcp://localhost:3787/server"/>
    <service>
       <provide interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
    </service>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product"
index 5183f54..eb2a11f 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product"
@@ -1,14 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="ECF Remote Service Example DS Host" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.host.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.host.HelloHostDS" version="2.0.1.qualifier" useFeatures="false" includeLaunchers="false">
+<product name="ECF Remote Service Example DS Host" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.host.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.host.HelloHostDS" version="2.1.0.qualifier" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
 
    <launcherArgs>
-      <programArgs>-console -consoleLog</programArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+      <programArgs>-console -consoleLog
+      </programArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
    </launcherArgs>
 
    <windowImages/>
@@ -24,6 +26,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -42,12 +45,14 @@
       <plugin id="org.eclipse.ecf.provider.jmdns"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
       <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" version="2.0.0"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
       <plugin id="org.eclipse.equinox.ds"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.equinox.util"/>
@@ -57,14 +62,18 @@
    </plugins>
 
    <configurations>
-      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="1" />
-      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="1" />
-      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="1" />
-      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="1" />
-      <plugin id="org.eclipse.equinox.app" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="3" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="3" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="3" />
+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.app" autoStart="true" startLevel="4" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="3" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.registry" autoStart="true" startLevel="1" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
    </configurations>
 
 </product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF
index a1e45f0..a3918b0 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF
@@ -15,5 +15,5 @@
  org.eclipse.ecf.remoteservice,
  org.osgi.framework;version="1.3.0",
  org.osgi.util.tracker
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.5.0"
+Require-Bundle: org.eclipse.equinox.common
 Bundle-Localization: bundle
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product
index ab199fb..744a52b 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product
@@ -24,6 +24,7 @@
 
    <plugins>
       <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -36,12 +37,12 @@
       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.r_osgi"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
-      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
       <plugin id="org.eclipse.osgi.services"/>
@@ -51,6 +52,7 @@
    <configurations>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host.rs" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
    </configurations>
 
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/META-INF/MANIFEST.MF
index 7b7d39b..ed142c0 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.host;singleton:=true
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.examples.remoteservices.hello.host.Activator
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.4,
@@ -10,7 +10,7 @@
  CDC-1.1/Foundation-1.1
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity;version="3.0.0",
- org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+ org.eclipse.ecf.examples.remoteservices.hello;version="4.0.0",
  org.eclipse.ecf.examples.remoteservices.hello.impl;version="3.0.0",
  org.eclipse.ecf.osgi.services.distribution;version="1.0.0",
  org.eclipse.equinox.app;version="1.0.0",
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
index 182c824..06140c4 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
@@ -24,6 +24,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -40,12 +41,13 @@
       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -56,6 +58,7 @@
    <configurations>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
    </configurations>
 
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product"
index 5376fe1..cef4d42 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product"
@@ -25,6 +25,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -42,15 +43,17 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.jmdns"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
       <plugin id="org.eclipse.osgi.services"/>
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
    </plugins>
@@ -58,6 +61,7 @@
    <configurations>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
    </configurations>
 
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product"
index 6b7bff3..fc3acbc 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product"
@@ -24,6 +24,7 @@
 
    <plugins>
       <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -41,19 +42,24 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.jmdns"/>
       <plugin id="org.eclipse.ecf.provider.r_osgi"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
       <plugin id="org.eclipse.osgi.services"/>
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
       <plugin id="org.objectweb.asm"/>
    </plugins>
 
+   <configurations>
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+   </configurations>
 
 </product>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product"
index 993683f..4a92d54 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product"
@@ -31,6 +31,7 @@
    </vm>
 
    <plugins>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -50,12 +51,13 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
       <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -66,6 +68,7 @@
    <configurations>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
       <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
    </configurations>
 
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product"
index 5aef240..ddbb404 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product"
@@ -29,6 +29,7 @@
 
    <plugins>
       <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="javax.xml"/>
       <plugin id="org.apache.felix.gogo.command"/>
       <plugin id="org.apache.felix.gogo.runtime"/>
       <plugin id="org.apache.felix.gogo.shell"/>
@@ -48,12 +49,13 @@
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.r_osgi"/>
       <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.equinox.app"/>
       <plugin id="org.eclipse.equinox.common"/>
       <plugin id="org.eclipse.equinox.concurrent"/>
       <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
       <plugin id="org.eclipse.equinox.preferences"/>
       <plugin id="org.eclipse.equinox.registry"/>
       <plugin id="org.eclipse.osgi"/>
@@ -62,5 +64,8 @@
       <plugin id="org.objectweb.asm"/>
    </plugins>
 
+   <configurations>
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+   </configurations>
 
 </product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java
index 524de10..0fe4490 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java
@@ -15,6 +15,7 @@
 import java.util.Properties;
 
 import org.eclipse.ecf.examples.remoteservices.hello.IHello;
+import org.eclipse.ecf.examples.remoteservices.hello.IHelloAsync;
 import org.eclipse.ecf.examples.remoteservices.hello.impl.Hello;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
 import org.eclipse.equinox.app.IApplication;
@@ -72,6 +73,7 @@
 		props.put(
 				IDistributionConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS,
 				containerId);
+		props.put("ecf.exported.async.objectClass",new String[] { IHelloAsync.class.getName() });
 		// register remote service
 		helloRegistration = bundleContext.registerService(
 				IHello.class.getName(), new Hello(), props);
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF
index e131411..8f84a15 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello
-Bundle-Version: 3.0.100.qualifier
+Bundle-Version: 4.0.0.qualifier
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
  CDC-1.1/Foundation-1.1
-Export-Package: org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+Export-Package: org.eclipse.ecf.examples.remoteservices.hello;version="4.0.0",
  org.eclipse.ecf.examples.remoteservices.hello.impl;version="3.0.0"
 Bundle-Localization: bundle
 Import-Package: org.eclipse.ecf.remoteservice,
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java
index ef2900c..4f71d65 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java
@@ -9,25 +9,28 @@
 ******************************************************************************/
 package org.eclipse.ecf.examples.remoteservices.hello;
 
+import java.util.concurrent.Future;
+
 import org.eclipse.ecf.remoteservice.IAsyncCallback;
-import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
-import org.eclipse.equinox.concurrent.future.IFuture;
 
 /**
  * @since 2.0
  */
-public interface IHelloAsync extends IAsyncRemoteServiceProxy {
+public interface IHelloAsync {
 
 	public void helloAsync(String from, IAsyncCallback<String> callback);
-	public IFuture helloAsync(String from);
+	/**
+	 * @since 4.0
+	 */
+	public Future<String> helloAsync(String from);
 
 	/**
 	 * @since 3.0
 	 */
 	public void helloMessageAsync(HelloMessage message, IAsyncCallback<String> callback);
 	/**
-	 * @since 3.0
+	 * @since 4.0
 	 */
-	public IFuture helloMessageAsync(HelloMessage message);
+	public Future<String> helloMessageAsync(HelloMessage message);
 
 }
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF
index 1ef999c..da1ed38 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.rest.rss
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.remoteservices.rest.rss.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
@@ -10,6 +10,7 @@
  org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity;version="3.0.0",
  org.eclipse.ecf.remoteservice,
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.ecf.remoteservice.client,
  org.eclipse.ecf.remoteservice.events,
  org.eclipse.ecf.remoteservice.rest,
@@ -20,5 +21,5 @@
  org.osgi.framework;version="1.3.0",
  org.osgi.util.tracker
 Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.console/plugin.properties b/framework/bundles/org.eclipse.ecf.console/plugin.properties
index 4a010e4..02c8ca1 100644
--- a/framework/bundles/org.eclipse.ecf.console/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.console/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF OSGi Console Provider
+plugin.name=ECF Console Provider
 plugin.provider=Eclipse.org - ECF
diff --git a/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF
index c710b76..a126d7a 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
 Require-Bundle: org.eclipse.equinox.common,
- org.eclipse.ecf
+ org.eclipse.ecf;bundle-version="3.4.0"
 Import-Package: org.eclipse.core.runtime.jobs,
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework,
diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java
index 258de6c..264c954 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java
+++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java
@@ -20,6 +20,14 @@
 	private static final long serialVersionUID = 6474091408790223505L;
 	public static final String NAME = "ecf.namespace.discovery"; //$NON-NLS-1$
 
+	public DiscoveryNamespace() {
+		super();
+	}
+
+	public DiscoveryNamespace(String description) {
+		super(NAME, description);
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java
index 5cead02..c6ff207 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java
+++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java
@@ -10,8 +10,8 @@
 package org.eclipse.ecf.internal.discovery;
 
 import org.eclipse.core.runtime.*;
-import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.PlatformHelper;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.*;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
@@ -29,7 +29,7 @@
 
 	private BundleContext context;
 
-	private ServiceTracker adapterManagerTracker;
+	private AdapterManagerTracker adapterManagerTracker;
 	private ServiceTracker logServiceTracker = null;
 
 	/**
@@ -43,22 +43,16 @@
 	public IAdapterManager getAdapterManager() {
 		// First, try to get the adapter manager via
 		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
+			adapterManagerTracker = new AdapterManagerTracker(this.context);
 			adapterManagerTracker.open();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		if (adapterManager == null)
-			getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$
-		return adapterManager;
+		return adapterManagerTracker.getAdapterManager();
 	}
 
 	public LogService getLogService() {
 		if (logServiceTracker == null) {
-			logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null);
+			logServiceTracker = new ServiceTracker(this.context,
+					LogService.class.getName(), null);
 			logServiceTracker.open();
 		}
 		return (LogService) logServiceTracker.getService();
@@ -67,23 +61,34 @@
 	public void log(IStatus status) {
 		LogService logService = getLogService();
 		if (logService != null) {
-			logService.log(LogHelper.getLogCode(status), LogHelper.getLogMessage(status), status.getException());
+			logService.log(LogHelper.getLogCode(status),
+					LogHelper.getLogMessage(status), status.getException());
 		}
 	}
 
 	/**
 	 * This method is called upon plug-in activation
-	 * @param ctxt the bundle context 
-	 * @throws Exception 
+	 * 
+	 * @param ctxt
+	 *            the bundle context
+	 * @throws Exception
 	 */
-	public void start(BundleContext ctxt) throws Exception {
+	public void start(final BundleContext ctxt) throws Exception {
 		this.context = ctxt;
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithoutRegistry() throws Exception {
+				ctxt.registerService(Namespace.class, new DiscoveryNamespace(
+						"Discovery Namespace"), null);
+			}
+		});
 	}
 
 	/**
 	 * This method is called when the plug-in is stopped
-	 * @param ctxt the bundle context 
-	 * @throws Exception 
+	 * 
+	 * @param ctxt
+	 *            the bundle context
+	 * @throws Exception
 	 */
 	public void stop(BundleContext ctxt) throws Exception {
 		if (logServiceTracker != null) {
@@ -100,6 +105,7 @@
 
 	/**
 	 * Returns the shared instance.
+	 * 
 	 * @return default discovery plugin instance.
 	 */
 	public synchronized static DiscoveryPlugin getDefault() {
@@ -112,7 +118,7 @@
 	public static boolean isStopped() {
 		return plugin == null;
 	}
-	
+
 	public BundleContext getBundleContext() {
 		return context;
 	}
diff --git a/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF
index 210a60b..ed4bf18 100644
--- a/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.docshare;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.docshare.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java b/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java
index 451fd23..7932c8d 100644
--- a/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java
+++ b/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java
@@ -21,19 +21,11 @@
 
 	int offset;
 	int length;
-	int startLine;
-	int endLine;
 
-	public SelectionMessage(int offset, int length, int startLine, int endLine) {
+	public SelectionMessage(int offset, int length) {
 		super();
 		this.offset = offset;
 		this.length = length;
-		this.startLine = startLine;
-		this.endLine = endLine;
-	}
-
-	public SelectionMessage(int offset, int length) {
-		this(offset, length, -1, -1);
 	}
 
 	/**
@@ -50,18 +42,4 @@
 		return length;
 	}
 
-	/**
-	 * @return the startLine
-	 */
-	public int getStartLine() {
-		return startLine;
-	}
-
-	/**
-	 * @return the endLine
-	 */
-	public int getEndLine() {
-		return endLine;
-	}
-
 }
diff --git a/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
index f840729..dbd41de 100644
--- a/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.identity;singleton:=true
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.4.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.identity.Activator
 Bundle-Localization: plugin
 Bundle-Vendor: %plugin.provider
 Eclipse-LazyStart: true
 Export-Package: org.eclipse.ecf.core.identity;version="3.2.0",
- org.eclipse.ecf.core.util;version="3.2.0",
+ org.eclipse.ecf.core.util;version="3.4.0",
  org.eclipse.ecf.internal.core.identity;version="3.2.0";x-internal:=true
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
@@ -17,6 +17,6 @@
  org.osgi.service.log;version="1.3.0",
  org.osgi.util.tracker;version="1.3.2"
 Require-Bundle: org.eclipse.equinox.common,
- org.eclipse.equinox.registry
+ org.eclipse.equinox.registry;resolution:=optional
 Bundle-ActivationPolicy: lazy; exclude:="org.eclipse.ecf.core.util"
-
+Provide-Capability: ecf.namespace;names:List<String>=”org.eclipse.ecf.core.identity.StringID,org.eclipse.ecf.core.identity.GUID,org.eclipse.ecf.core.identity.LongID,org.eclipse.ecf.core.identity.URIID”; version:Version=3.3
diff --git a/framework/bundles/org.eclipse.ecf.identity/plugin.properties b/framework/bundles/org.eclipse.ecf.identity/plugin.properties
index aeebc90..ee9c0bc 100644
--- a/framework/bundles/org.eclipse.ecf.identity/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.identity/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF Core Identity API
+plugin.name=ECF Identity Core API
 plugin.provider=Eclipse.org - ECF
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java
index 7bbadf3..d56bd52 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java
@@ -8,7 +8,6 @@
  ******************************************************************************/
 package org.eclipse.ecf.core.identity;
 
-import java.security.AccessController;
 import java.util.*;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -23,12 +22,8 @@
 	public static final String SECURITY_PROPERTY = IDFactory.class.getName()
 			+ ".security"; //$NON-NLS-1$
 
-	private static final int IDENTITY_CREATION_ERRORCODE = 2001;
-
 	private static Hashtable namespaces = new Hashtable();
 
-	private static boolean securityEnabled = false;
-
 	protected static IIDFactory instance = null;
 
 	static {
@@ -67,8 +62,6 @@
 	public Namespace addNamespace(Namespace namespace) throws SecurityException {
 		if (namespace == null)
 			return null;
-		checkPermission(new NamespacePermission(namespace.toString(),
-				NamespacePermission.ADD_NAMESPACE));
 		initialize();
 		return addNamespace0(namespace);
 	}
@@ -81,8 +74,6 @@
 
 	protected final static void checkPermission(
 			NamespacePermission namespacepermission) throws SecurityException {
-		if (securityEnabled)
-			AccessController.checkPermission(namespacepermission);
 	}
 
 	/*
@@ -96,8 +87,6 @@
 			throws SecurityException {
 		if (namespace == null)
 			return false;
-		checkPermission(new NamespacePermission(namespace.toString(),
-				NamespacePermission.CONTAINS_NAMESPACE));
 		initialize();
 		return containsNamespace0(namespace);
 	}
@@ -128,8 +117,6 @@
 	public Namespace getNamespace(Namespace namespace) throws SecurityException {
 		if (namespace == null)
 			return null;
-		checkPermission(new NamespacePermission(namespace.toString(),
-				NamespacePermission.GET_NAMESPACE));
 		initialize();
 		return getNamespace0(namespace);
 	}
@@ -187,8 +174,8 @@
 			e = new IDCreateException(s);
 		}
 		Activator.getDefault().log(
-				new Status(IStatus.ERROR, Activator.PLUGIN_ID,
-						IDENTITY_CREATION_ERRORCODE, s, e));
+				new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,
+						s, e));
 		throw e;
 	}
 
@@ -268,13 +255,14 @@
 	public Namespace removeNamespace(Namespace n) throws SecurityException {
 		if (n == null)
 			return null;
-		checkPermission(new NamespacePermission(n.toString(),
-				NamespacePermission.REMOVE_NAMESPACE));
 		initialize();
 		return removeNamespace0(n);
 	}
 
-	protected final static Namespace removeNamespace0(Namespace n) {
+	/**
+	 * @since 3.4
+	 */
+	public final static Namespace removeNamespace0(Namespace n) {
 		if (n == null)
 			return null;
 		return (Namespace) namespaces.remove(n.getName());
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/NamespacePermission.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/NamespacePermission.java
index 13133a6..2053d1e 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/NamespacePermission.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/NamespacePermission.java
@@ -40,14 +40,6 @@
 	}
 
 	public boolean implies(Permission p) {
-		if ((p == null) || (p.getClass() != getClass()))
-			return false;
-		NamespacePermission np = (NamespacePermission) p;
-		String act = getActions();
-		if (act == null)
-			return false;
-		if (act.equals(ALL_NAMESPACE) || act.equals(np.getActions()))
-			return true;
 		return false;
 	}
 }
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/AdapterManagerTracker.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/AdapterManagerTracker.java
new file mode 100644
index 0000000..a4346d0
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/AdapterManagerTracker.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.core.util;
+
+import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.internal.core.identity.Activator;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+/**
+ * @since 3.4
+ */
+public class AdapterManagerTracker extends ServiceTracker {
+
+	public AdapterManagerTracker(BundleContext context,
+			ServiceTrackerCustomizer customizer) {
+		super(context, IAdapterManager.class.getName(), customizer);
+	}
+
+	public AdapterManagerTracker(BundleContext context) {
+		this(context, null);
+	}
+
+	public IAdapterManager getAdapterManager() {
+		IAdapterManager adapterManager = (IAdapterManager) getService();
+		// Then, if the service isn't there, try to get from Platform class via
+		// PlatformHelper class
+		if (adapterManager == null)
+			adapterManager = PlatformHelper.getPlatformAdapterManager();
+		if (adapterManager == null)
+			Activator.getDefault().log(
+					new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+							IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$
+		return adapterManager;
+	}
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/ECFRuntimeException.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/ECFRuntimeException.java
index d96550d..6ef0a7e 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/ECFRuntimeException.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/ECFRuntimeException.java
@@ -49,29 +49,32 @@
 	 * @param cause
 	 */
 	public ECFRuntimeException(String message, Throwable cause) {
-		this(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0, ((message == null) ? "" : message), cause)); //$NON-NLS-1$
+		this(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0,
+				((message == null) ? "" : message), cause)); //$NON-NLS-1$
 	}
 
 	/**
-	 * Creates a new exception with the given status object.  The message
-	 * of the given status is used as the exception message.
+	 * Creates a new exception with the given status object. The message of the
+	 * given status is used as the exception message.
 	 *
-	 * @param status the status object to be associated with this exception
+	 * @param status
+	 *            the status object to be associated with this exception
 	 */
 	public ECFRuntimeException(IStatus status) {
 		super(status.getMessage());
+		initCause(status.getException());
 		this.status = status;
 	}
 
 	/**
 	 * Returns the status object for this exception.
 	 * <p>
-	 *   <b>IMPORTANT:</b><br>
-	 *   The result must NOT be used to log a <code>CoreException</code>
-	 *   (e.g., using <code>yourPlugin.getLog().log(status);</code>),
-	 *   since that code pattern hides the original stacktrace.
-	 *   Instead, create a new {@link Status} with your plug-in ID and
-	 *   this <code>CoreException</code>, and log that new status.
+	 * <b>IMPORTANT:</b><br>
+	 * The result must NOT be used to log a <code>CoreException</code> (e.g.,
+	 * using <code>yourPlugin.getLog().log(status);</code>), since that code
+	 * pattern hides the original stacktrace. Instead, create a new
+	 * {@link Status} with your plug-in ID and this <code>CoreException</code>,
+	 * and log that new status.
 	 * </p>
 	 *
 	 * @return a status object
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/ExtensionRegistryRunnable.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/ExtensionRegistryRunnable.java
new file mode 100644
index 0000000..1264147
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/ExtensionRegistryRunnable.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.core.util;
+
+import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.internal.core.identity.Activator;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * @since 3.4
+ */
+public class ExtensionRegistryRunnable implements ISafeRunnable {
+
+	private BundleContext context;
+
+	public ExtensionRegistryRunnable(BundleContext ctxt) {
+		this.context = ctxt;
+	}
+
+	protected void runWithoutRegistry() throws Exception {
+		// by default do nothing
+	}
+
+	protected void runWithRegistry(IExtensionRegistry registry)
+			throws Exception {
+		// by default do nothing
+	}
+
+	protected void logWarning(Throwable exception) {
+		Activator a = Activator.getDefault();
+		if (a != null)
+			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID,
+					IStatus.WARNING, "Warning: code cannot be run", exception)); //$NON-NLS-1$
+	}
+
+	public void run() throws Exception {
+		try {
+			runWithRegistry(getExtensionRegistry());
+		} catch (NoClassDefFoundError e) {
+			runWithoutRegistry();
+		}
+	}
+
+	private IExtensionRegistry getExtensionRegistry() {
+		if (context == null)
+			return null;
+		ServiceTracker extensionRegistryTracker = new ServiceTracker(context,
+				IExtensionRegistry.class.getName(), null);
+		extensionRegistryTracker.open();
+		IExtensionRegistry result = (IExtensionRegistry) extensionRegistryTracker
+				.getService();
+		extensionRegistryTracker.close();
+		return result;
+	}
+
+	public void handleException(Throwable exception) {
+		logWarning(exception);
+	}
+}
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java
index 0b186c0..08ccc7c 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/internal/core/identity/Activator.java
@@ -15,6 +15,7 @@
 import org.osgi.framework.*;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
 /**
  * The activator class controls the plug-in life cycle
@@ -24,60 +25,49 @@
 	// The plug-in ID
 	public static final String PLUGIN_ID = "org.eclipse.ecf.identity"; //$NON-NLS-1$
 
-	protected static final String NAMESPACE_NAME = "namespace"; //$NON-NLS-1$
+	private static final String NAMESPACE_NAME = "namespace"; //$NON-NLS-1$
 
-	protected static final String NAMESPACE_EPOINT = PLUGIN_ID + "." //$NON-NLS-1$
+	private static final String NAMESPACE_EPOINT = PLUGIN_ID + "." //$NON-NLS-1$
 			+ NAMESPACE_NAME;
 
-	protected static final String NAME_ATTRIBUTE = "name"; //$NON-NLS-1$
+	private static final String NAME_ATTRIBUTE = "name"; //$NON-NLS-1$
 
-	protected static final String CLASS_ATTRIBUTE = "class"; //$NON-NLS-1$
+	private static final String CLASS_ATTRIBUTE = "class"; //$NON-NLS-1$
 
-	protected static final int REMOVE_NAMESPACE_ERRORCODE = 100;
+	private static final int FACTORY_NAME_COLLISION_ERRORCODE = 200;
 
-	protected static final int FACTORY_NAME_COLLISION_ERRORCODE = 200;
-
-	protected static final String DESCRIPTION_ATTRIBUTE = "description"; //$NON-NLS-1$
+	private static final String DESCRIPTION_ATTRIBUTE = "description"; //$NON-NLS-1$
 
 	// The shared instance
 	private static Activator plugin;
 
-	private BundleContext context = null;
+	private BundleContext context;
 
-	private IRegistryChangeListener registryManager = null;
+	private ServiceRegistration idFactoryServiceRegistration;
 
-	private ServiceRegistration idFactoryServiceRegistration = null;
+	private ServiceTracker debugOptionsTracker;
 
-	private ServiceTracker extensionRegistryTracker = null;
+	private ServiceTracker logServiceTracker;
 
-	private ServiceTracker debugOptionsTracker = null;
+	private LogService logService;
 
-	private ServiceTracker logServiceTracker = null;
+	private AdapterManagerTracker adapterManagerTracker;
 
-	private LogService logService = null;
+	private ServiceTracker namespacesTracker;
 
-	private ServiceTracker adapterManagerTracker = null;
+	// This is object rather than typed to avoid referencing the
+	// IRegistryChangedListener class directly
+	private Object registryManager;
 
 	public synchronized IAdapterManager getAdapterManager() {
 		if (this.context == null)
 			return null;
 		// First, try to get the adapter manager via
 		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context,
-					IAdapterManager.class.getName(), null);
+			adapterManagerTracker = new AdapterManagerTracker(this.context);
 			adapterManagerTracker.open();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker
-				.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		if (adapterManager == null)
-			getDefault().log(
-					new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR,
-							"Cannot get adapter manager", null)); //$NON-NLS-1$
-		return adapterManager;
+		return adapterManagerTracker.getAdapterManager();
 	}
 
 	/**
@@ -87,17 +77,6 @@
 		// public null constructor
 	}
 
-	public synchronized IExtensionRegistry getExtensionRegistry() {
-		if (this.context == null)
-			return null;
-		if (extensionRegistryTracker == null) {
-			extensionRegistryTracker = new ServiceTracker(context,
-					IExtensionRegistry.class.getName(), null);
-			extensionRegistryTracker.open();
-		}
-		return (IExtensionRegistry) extensionRegistryTracker.getService();
-	}
-
 	public synchronized DebugOptions getDebugOptions() {
 		if (context == null)
 			return null;
@@ -122,76 +101,102 @@
 		idFactoryServiceRegistration = context.registerService(
 				IIDFactory.class.getName(), IDFactory.getDefault(), null);
 
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null) {
-			this.registryManager = new IdentityRegistryManager();
-			reg.addRegistryChangeListener(registryManager);
-		}
+		namespacesTracker = new ServiceTracker(context,
+				Namespace.class.getName(), new ServiceTrackerCustomizer() {
+
+					public Object addingService(ServiceReference reference) {
+						Namespace ns = (Namespace) context
+								.getService(reference);
+						if (ns != null && ns.getName() != null)
+							IDFactory.addNamespace0(ns);
+						return ns;
+					}
+
+					public void modifiedService(ServiceReference reference,
+							Object service) {
+					}
+
+					public void removedService(ServiceReference reference,
+							Object service) {
+						IDFactory.removeNamespace0((Namespace) service);
+					}
+				});
+		namespacesTracker.open();
+
+		SafeRunner.run(new ExtensionRegistryRunnable(ctxt) {
+			protected void runWithRegistry(IExtensionRegistry registry)
+					throws Exception {
+				if (registry != null) {
+					registryManager = new IRegistryChangeListener() {
+						public void registryChanged(IRegistryChangeEvent event) {
+							final IExtensionDelta delta[] = event
+									.getExtensionDeltas(PLUGIN_ID,
+											NAMESPACE_NAME);
+							for (int i = 0; i < delta.length; i++) {
+								switch (delta[i].getKind()) {
+								case IExtensionDelta.ADDED:
+									addNamespaceExtensions(delta[i]
+											.getExtension()
+											.getConfigurationElements());
+									break;
+								case IExtensionDelta.REMOVED:
+									IConfigurationElement[] members = delta[i]
+											.getExtension()
+											.getConfigurationElements();
+									for (int m = 0; m < members.length; m++) {
+										final IConfigurationElement member = members[m];
+										String name = null;
+										try {
+											name = member
+													.getAttribute(NAME_ATTRIBUTE);
+											if (name == null) {
+												name = member
+														.getAttribute(CLASS_ATTRIBUTE);
+											}
+											if (name == null)
+												continue;
+											final IIDFactory factory = IDFactory
+													.getDefault();
+											final Namespace n = factory
+													.getNamespaceByName(name);
+											if (n == null
+													|| !factory
+															.containsNamespace(n)) {
+												continue;
+											}
+											// remove
+											factory.removeNamespace(n);
+										} catch (final Exception e) {
+											getDefault()
+													.log(new Status(
+															IStatus.ERROR,
+															Activator.PLUGIN_ID,
+															IStatus.ERROR,
+															"Exception removing namespace", e)); //$NON-NLS-1$
+										}
+									}
+									break;
+								}
+							}
+						}
+					};
+					registry.addRegistryChangeListener((IRegistryChangeListener) registryManager);
+				}
+			}
+		});
 	}
 
 	public BundleContext getBundleContext() {
 		return context;
 	}
 
-	protected class IdentityRegistryManager implements IRegistryChangeListener {
-		public void registryChanged(IRegistryChangeEvent event) {
-			final IExtensionDelta delta[] = event.getExtensionDeltas(PLUGIN_ID,
-					NAMESPACE_NAME);
-			for (int i = 0; i < delta.length; i++) {
-				switch (delta[i].getKind()) {
-				case IExtensionDelta.ADDED:
-					addNamespaceExtensions(delta[i].getExtension()
-							.getConfigurationElements());
-					break;
-				case IExtensionDelta.REMOVED:
-					removeNamespaceExtensions(delta[i].getExtension()
-							.getConfigurationElements());
-					break;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Remove extensions for identity namespace extension point
-	 * 
-	 * @param members
-	 *            the members to remove
-	 */
-	protected void removeNamespaceExtensions(IConfigurationElement[] members) {
-		for (int m = 0; m < members.length; m++) {
-			final IConfigurationElement member = members[m];
-			String name = null;
-			try {
-				name = member.getAttribute(NAME_ATTRIBUTE);
-				if (name == null) {
-					name = member.getAttribute(CLASS_ATTRIBUTE);
-				}
-				if (name == null)
-					continue;
-				final IIDFactory factory = IDFactory.getDefault();
-				final Namespace n = factory.getNamespaceByName(name);
-				if (n == null || !factory.containsNamespace(n)) {
-					continue;
-				}
-				// remove
-				factory.removeNamespace(n);
-			} catch (final Exception e) {
-				getDefault().log(
-						new Status(IStatus.ERROR, Activator.PLUGIN_ID,
-								REMOVE_NAMESPACE_ERRORCODE,
-								"Exception removing namespace", e)); //$NON-NLS-1$
-			}
-		}
-	}
-
-	public Bundle getBundle() {
+	Bundle getBundle() {
 		if (context == null)
 			return null;
 		return context.getBundle();
 	}
 
-	protected synchronized LogService getLogService() {
+	synchronized LogService getLogService() {
 		if (context == null) {
 			if (logService == null)
 				logService = new SystemLogService(PLUGIN_ID);
@@ -223,7 +228,7 @@
 	 * @param members
 	 *            the members to add
 	 */
-	protected void addNamespaceExtensions(IConfigurationElement[] members) {
+	void addNamespaceExtensions(IConfigurationElement[] members) {
 		final String bundleName = getDefault().getBundle().getSymbolicName();
 		for (int m = 0; m < members.length; m++) {
 			final IConfigurationElement member = members[m];
@@ -270,16 +275,19 @@
 	 * 
 	 */
 	public void setupNamespaceExtensionPoint() {
-		// Process extension points
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null) {
-			final IExtensionPoint extensionPoint = reg
-					.getExtensionPoint(NAMESPACE_EPOINT);
-			if (extensionPoint == null) {
-				return;
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			protected void runWithRegistry(IExtensionRegistry registry)
+					throws Exception {
+				if (registry != null) {
+					final IExtensionPoint extensionPoint = registry
+							.getExtensionPoint(NAMESPACE_EPOINT);
+					if (extensionPoint == null)
+						return;
+					addNamespaceExtensions(extensionPoint
+							.getConfigurationElements());
+				}
 			}
-			addNamespaceExtensions(extensionPoint.getConfigurationElements());
-		}
+		});
 	}
 
 	/*
@@ -289,9 +297,17 @@
 	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext ctxt) throws Exception {
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null)
-			reg.removeRegistryChangeListener(registryManager);
+		SafeRunner.run(new ExtensionRegistryRunnable(ctxt) {
+			protected void runWithRegistry(IExtensionRegistry registry)
+					throws Exception {
+				if (registry != null)
+					registry.removeRegistryChangeListener((IRegistryChangeListener) registryManager);
+			}
+		});
+		if (namespacesTracker != null) {
+			namespacesTracker.close();
+			namespacesTracker = null;
+		}
 		registryManager = null;
 		if (logServiceTracker != null) {
 			logServiceTracker.close();
@@ -302,10 +318,6 @@
 			debugOptionsTracker.close();
 			debugOptionsTracker = null;
 		}
-		if (extensionRegistryTracker != null) {
-			extensionRegistryTracker.close();
-			extensionRegistryTracker = null;
-		}
 		if (idFactoryServiceRegistration != null) {
 			idFactoryServiceRegistration.unregister();
 			idFactoryServiceRegistration = null;
@@ -324,9 +336,8 @@
 	 * @return the shared instance
 	 */
 	public synchronized static Activator getDefault() {
-		if (plugin == null) {
+		if (plugin == null)
 			plugin = new Activator();
-		}
 		return plugin;
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF
index b743996..9491e9f 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.presence.ui;singleton:=true
-Bundle-Version: 2.2.0.qualifier
+Bundle-Version: 2.3.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.presence.ui.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java
index 0d3faf2..c916845 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java
@@ -168,6 +168,7 @@
 
 	public static String MultiRosterView_SHOW_CHAT_ROOMS_FOR_ACCOUNT_ACTION_TEXT;
 	public static String MultiRosterView_ShowOffline;
+	public static String MultiRosterView_ShowAway;
 	public static String MultiRosterView_ShowEmptyGroups;
 	public static String MultiRosterView_AddContact;
 	public static String MultiRosterView_SearchContact;
diff --git a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties
index 47c77cc..02a4acb 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties
@@ -23,6 +23,7 @@
 MultiRosterView_SetInvisible = &Invisible
 MultiRosterView_SetOffline = &Offline
 MultiRosterView_ShowOffline = Show &Offline Contacts
+MultiRosterView_ShowAway = Show &Away Contacts
 MultiRosterView_ShowEmptyGroups = Show &Empty Groups
 MultiRosterView_NO_IDENTIFIER_FOR_ROOM_TITLE=Could not create identifier for room
 MultiRosterView_PASSWORD_NOT_CHANGED_MESSAGE=Error changing password
diff --git a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java
index 7e1eaad..430d0b0 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java
@@ -21,6 +21,7 @@
 import org.eclipse.ecf.internal.presence.ui.Messages;
 import org.eclipse.ecf.internal.presence.ui.dialogs.*;
 import org.eclipse.ecf.presence.*;
+import org.eclipse.ecf.presence.IPresence.Mode;
 import org.eclipse.ecf.presence.chatroom.IChatRoomInfo;
 import org.eclipse.ecf.presence.im.*;
 import org.eclipse.ecf.presence.roster.*;
@@ -95,6 +96,8 @@
 
 	private IAction showEmptyGroupsAction;
 
+	private IAction showAwayAction;
+
 	private IAction addContactAction;
 
 	private IAction searchContactAction;
@@ -141,6 +144,21 @@
 		}
 	};
 
+	private ViewerFilter showAwayFilter = new ViewerFilter() {
+		public boolean select(Viewer viewer, Object parentElement, Object element) {
+			if (element instanceof IRosterEntry) {
+				IRosterEntry entry = (IRosterEntry) element;
+				IPresence presence = entry.getPresence();
+				if (presence != null) {
+					Mode m = presence.getMode();
+					return (m == IPresence.Mode.AVAILABLE || m == IPresence.Mode.CHAT || m == IPresence.Mode.DND);
+				}
+				return true;
+			}
+			return true;
+		}
+	};
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -171,6 +189,7 @@
 		treeViewer.setLabelProvider(new MultiRosterLabelProvider());
 		treeViewer.addFilter(hideOfflineFilter);
 		treeViewer.addFilter(hideEmptyGroupsFilter);
+		treeViewer.addFilter(showAwayFilter);
 		treeViewer.setInput(rosterAccounts);
 		treeViewer.addOpenListener(new IOpenListener() {
 			public void open(OpenEvent e) {
@@ -461,6 +480,16 @@
 			}
 		};
 
+		showAwayAction = new Action(Messages.MultiRosterView_ShowAway, IAction.AS_CHECK_BOX) {
+			public void run() {
+				if (isChecked()) {
+					treeViewer.removeFilter(showAwayFilter);
+				} else {
+					treeViewer.addFilter(showAwayFilter);
+				}
+			}
+		};
+
 		addContactAction = new Action(Messages.MultiRosterView_AddContact, SharedImages.getImageDescriptor(SharedImages.IMG_ADD_BUDDY)) {
 			public void run() {
 				AddContactDialog dialog = new AddContactDialog(treeViewer.getControl().getShell());
@@ -720,6 +749,7 @@
 		setInvisibleAction.setEnabled(enabled);
 		setOfflineAction.setEnabled(enabled);
 		showOfflineAction.setEnabled(enabled);
+		showAwayAction.setEnabled(enabled);
 		showEmptyGroupsAction.setEnabled(enabled);
 		addContactAction.setEnabled(enabled);
 		searchContactAction.setEnabled(enabled);
@@ -741,6 +771,8 @@
 
 		manager.add(showEmptyGroupsAction);
 
+		manager.add(showAwayAction);
+
 		manager.add(new Separator());
 		manager.add(addContactAction);
 		manager.add(new Separator());
diff --git a/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF
index fcaa97c..4367d33 100644
--- a/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.presence;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.presence.PresencePlugin
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IMultiResourceRosterEntry.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IMultiResourceRosterEntry.java
new file mode 100644
index 0000000..9277f37
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IMultiResourceRosterEntry.java
@@ -0,0 +1,14 @@
+package org.eclipse.ecf.presence.roster;
+
+/**
+ * @since 2.1
+ */
+public interface IMultiResourceRosterEntry {
+
+	/**
+	 * Get all the resources for this multi resource roster entry
+	 * @return IRosterResource[] of resources.  Will not return <code>null</code>.
+	 */
+	public IRosterResource[] getResources();
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java
index 75c3ec6..5f77bfd 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java
@@ -12,7 +12,6 @@
 package org.eclipse.ecf.presence.roster;
 
 import java.util.Collection;
-
 import org.eclipse.ecf.core.user.IUser;
 import org.eclipse.ecf.presence.IPresence;
 
@@ -35,7 +34,7 @@
 	 * Get groups associated with this roster entry. Instance in list are of
 	 * type {@link IRosterGroup}
 	 * 
-	 * @return Iterator of groups that this roster entry belongs to. Will not
+	 * @return Collection of IRosterGroup instances entry belongs to. Will not
 	 *         return <code>null</code>.
 	 */
 	public Collection getGroups();
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterResource.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterResource.java
new file mode 100644
index 0000000..664895f
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterResource.java
@@ -0,0 +1,11 @@
+package org.eclipse.ecf.presence.roster;
+
+import org.eclipse.ecf.presence.IPresence;
+
+/**
+ * @since 2.1
+ */
+public interface IRosterResource extends IRosterItem {
+	// No new methods
+	public IPresence getPresence();
+}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java
index fa33a6d..6917908 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java
@@ -21,7 +21,7 @@
  * created as appropriate.
  * 
  */
-public class RosterEntry extends RosterItem implements IRosterEntry {
+public class RosterEntry extends RosterItem implements IRosterEntry, IMultiResourceRosterEntry {
 
 	protected IUser user;
 
@@ -29,6 +29,11 @@
 
 	protected List groups;
 
+	/**
+	 * @since 2.1
+	 */
+	protected List resources;
+
 	public RosterEntry(IRosterItem parent, IUser user, IPresence presenceState) {
 		Assert.isNotNull(parent);
 		Assert.isNotNull(user);
@@ -40,6 +45,7 @@
 			groups.add(parent);
 			((RosterGroup) parent).add(this);
 		}
+		this.resources = new ArrayList();
 	}
 
 	public void setPresence(IPresence newPresence) {
@@ -129,6 +135,7 @@
 	public String toString() {
 		StringBuffer sb = new StringBuffer("RosterEntry["); //$NON-NLS-1$
 		synchronized (sb) {
+			sb.append("userid=" + getUser().getID().getName()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
 			sb.append("name=").append(getName()).append(';'); //$NON-NLS-1$
 			sb.append("presence=").append(presence).append(';'); //$NON-NLS-1$
 			sb.append("groups="); //$NON-NLS-1$
@@ -144,4 +151,53 @@
 		return sb.toString();
 	}
 
+	/**
+	 * @since 2.1
+	 */
+	public boolean updateResource(String resourceName, IPresence p) {
+		if (resourceName == null)
+			return false;
+		synchronized (resources) {
+			for (Iterator i = resources.iterator(); i.hasNext();) {
+				RosterResource r = (RosterResource) i.next();
+				if (r.getName().equals(resourceName)) {
+					r.setPresence(p);
+					return true;
+				}
+			}
+			resources.add(new RosterResource(this, resourceName, p));
+			return false;
+		}
+	}
+
+	/**
+	 * @since 2.1
+	 */
+	public RosterResource removeResource(String resourceName) {
+		if (resourceName == null)
+			return null;
+		RosterResource result = null;
+		synchronized (resources) {
+			for (Iterator i = resources.iterator(); i.hasNext();) {
+				RosterResource r = (RosterResource) i.next();
+				if (r.getName().equals(resourceName)) {
+					i.remove();
+					result = r;
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * @since 2.1
+	 */
+	public IRosterResource[] getResources() {
+		List result = null;
+		synchronized (resources) {
+			result = new ArrayList(resources);
+		}
+		return (IRosterResource[]) result.toArray(new IRosterResource[result.size()]);
+	}
+
 }
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterResource.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterResource.java
new file mode 100644
index 0000000..42c88e0
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterResource.java
@@ -0,0 +1,55 @@
+package org.eclipse.ecf.presence.roster;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IAdapterManager;
+import org.eclipse.ecf.internal.presence.PresencePlugin;
+import org.eclipse.ecf.presence.IPresence;
+
+/**
+ * @since 2.1
+ */
+public class RosterResource implements IRosterResource {
+
+	private String name;
+	private IRosterEntry parent;
+	private IPresence presence;
+
+	public RosterResource(IRosterEntry parent, String name, IPresence presence) {
+		Assert.isNotNull(parent);
+		this.parent = parent;
+		Assert.isNotNull(name);
+		this.name = name;
+		this.presence = presence;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public IRosterItem getParent() {
+		return parent;
+	}
+
+	public IRoster getRoster() {
+		return parent.getRoster();
+	}
+
+	public Object getAdapter(Class adapter) {
+		if (adapter.isInstance(this)) {
+			return this;
+		}
+		IAdapterManager adapterManager = PresencePlugin.getDefault().getAdapterManager();
+		if (adapterManager == null)
+			return null;
+		return adapterManager.loadAdapter(this, adapter.getName());
+	}
+
+	public IPresence getPresence() {
+		return presence;
+	}
+
+	public void setPresence(IPresence presence) {
+		this.presence = presence;
+	}
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF
index bac5d57..4f7a4a1 100644
--- a/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
 Manifest-Version: 1.0
 Bundle-SymbolicName: org.eclipse.ecf.provider;singleton:=true
-Bundle-Version: 4.4.0.qualifier
+Bundle-Version: 4.5.0.qualifier
 Bundle-Name: %plugin.name
 Bundle-Vendor: %plugin.provider
 Bundle-Activator: org.eclipse.ecf.internal.provider.ProviderPlugin
@@ -15,7 +15,7 @@
 Eclipse-BuddyPolicy: global
 Bundle-ManifestVersion: 2
 Require-Bundle: org.eclipse.equinox.common,
- org.eclipse.ecf;bundle-version="3.1.0",
+ org.eclipse.ecf;bundle-version="3.4.0",
  org.eclipse.ecf.sharedobject
 Import-Package: org.osgi.framework;version="1.3.0",
  org.osgi.service.log;version="1.3.0",
diff --git a/framework/bundles/org.eclipse.ecf.provider/build.properties b/framework/bundles/org.eclipse.ecf.provider/build.properties
index 4203b3f..7a0fd63 100644
--- a/framework/bundles/org.eclipse.ecf.provider/build.properties
+++ b/framework/bundles/org.eclipse.ecf.provider/build.properties
@@ -12,8 +12,7 @@
                plugin.xml,\
                META-INF/,\
                about.html,\
-               plugin.properties,\
-               OSGI-INF/
+               plugin.properties
 src.includes = about.html
 jars.compile.order = .
 source.. = src/
diff --git a/framework/bundles/org.eclipse.ecf.provider/plugin.properties b/framework/bundles/org.eclipse.ecf.provider/plugin.properties
index 23debdd..5a29255 100644
--- a/framework/bundles/org.eclipse.ecf.provider/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.provider/plugin.properties
@@ -6,6 +6,6 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF Provider API
+plugin.name=ECF Generic Provider
 plugin.provider=Eclipse.org - ECF
 
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java
index 52099e7..6e72806 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java
@@ -14,7 +14,10 @@
 import javax.net.ssl.SSLServerSocketFactory;
 import javax.net.ssl.SSLSocketFactory;
 import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.core.ContainerTypeDescription;
 import org.eclipse.ecf.core.util.*;
+import org.eclipse.ecf.provider.generic.GenericContainerInstantiator;
+import org.eclipse.ecf.provider.generic.SSLGenericContainerInstantiator;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
@@ -36,7 +39,7 @@
 
 	private ServiceTracker logServiceTracker = null;
 
-	private ServiceTracker adapterManagerTracker = null;
+	private AdapterManagerTracker adapterManagerTracker = null;
 
 	private ServiceTracker sslServerSocketFactoryTracker;
 	private ServiceTracker sslSocketFactoryTracker;
@@ -46,17 +49,10 @@
 			return null;
 		// First, try to get the adapter manager via
 		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
+			adapterManagerTracker = new AdapterManagerTracker(this.context);
 			adapterManagerTracker.open();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		if (adapterManager == null)
-			getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$
-		return adapterManager;
+		return adapterManagerTracker.getAdapterManager();
 	}
 
 	/**
@@ -70,8 +66,16 @@
 	/**
 	 * This method is called upon plug-in activation
 	 */
-	public void start(BundleContext context1) throws Exception {
+	public void start(final BundleContext context1) throws Exception {
 		this.context = context1;
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithoutRegistry() throws Exception {
+				context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(GenericContainerInstantiator.TCPSERVER_NAME, new GenericContainerInstantiator(), "ECF Generic Server", true, false), null); //$NON-NLS-1$
+				context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(GenericContainerInstantiator.TCPCLIENT_NAME, new GenericContainerInstantiator(), "ECF Generic Client", false, true), null); //$NON-NLS-1$
+				context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(SSLGenericContainerInstantiator.SSLSERVER_NAME, new SSLGenericContainerInstantiator(), "ECF SSL Generic Server", true, false), null); //$NON-NLS-1$
+				context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(SSLGenericContainerInstantiator.SSLCLIENT_NAME, new SSLGenericContainerInstantiator(), "ECF SSL Generic Client", false, true), null); //$NON-NLS-1$
+			}
+		});
 	}
 
 	/**
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java
index 0ffd749..429b4b3 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java
@@ -107,7 +107,10 @@
 			return keepAlive;
 		}
 
-		InetAddress getBindAddress() {
+		/**
+		 * @since 4.5
+		 */
+		public InetAddress getBindAddress() {
 			return bindAddress;
 		}
 	}
@@ -265,19 +268,33 @@
 		return port;
 	}
 
+	/**
+	 * @since 4.5
+	 */
+	protected IContainer createClientContainer(GenericContainerArgs gcargs) throws Exception {
+		return new TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+	}
+
+	/**
+	 * @since 4.5
+	 */
+	protected IContainer createServerContainer(GenericContainerArgs gcargs) throws Exception {
+		return new TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+	}
+
 	public IContainer createInstance(ContainerTypeDescription description, Object[] args) throws ContainerCreateException {
 		boolean isClient = isClient(description);
 		try {
 			GenericContainerArgs gcargs = null;
 			if (isClient) {
 				gcargs = getClientArgs(args);
-				return new TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+				return createClientContainer(gcargs);
 			}
 			// This synchronized block is to prevent issues with
 			// multithreaded access to ServerPort (to find available port)
 			synchronized (this) {
 				gcargs = getServerArgs(args);
-				return new TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+				return createServerContainer(gcargs);
 			}
 		} catch (Exception e) {
 			Trace.catching(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "createInstance", e); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java
index f6403ee..5737444 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java
@@ -108,7 +108,10 @@
 			return keepAlive;
 		}
 
-		InetAddress getBindAddress() {
+		/**
+		 * @since 4.5
+		 */
+		public InetAddress getBindAddress() {
 			return bindAddress;
 		}
 	}
@@ -272,19 +275,33 @@
 		return port;
 	}
 
+	/**
+	 * @since 4.5
+	 */
+	protected IContainer createClientContainer(GenericContainerArgs gcargs) throws Exception {
+		return new SSLClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+	}
+
+	/**
+	 * @since 4.5
+	 */
+	protected IContainer createServerContainer(GenericContainerArgs gcargs) throws Exception {
+		return new SSLServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+	}
+
 	public IContainer createInstance(ContainerTypeDescription description, Object[] args) throws ContainerCreateException {
 		boolean isClient = isClient(description);
 		try {
 			GenericContainerArgs gcargs = null;
 			if (isClient) {
 				gcargs = getClientArgs(args);
-				return new SSLClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+				return createClientContainer(gcargs);
 			}
 			// This synchronized block is to prevent issues with
 			// multithreaded access to ServerPort (to find available port)
 			synchronized (this) {
 				gcargs = getServerArgs(args);
-				return new SSLServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+				return createServerContainer(gcargs);
 			}
 		} catch (Exception e) {
 			Trace.catching(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "createInstance", e); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java
index df18599..f6bbdc1 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java
@@ -141,6 +141,14 @@
 			threadGroup.interrupt();
 			threadGroup = null;
 		}
+		if (this.serverSocket != null) {
+			try {
+				this.serverSocket.close();
+			} catch (IOException e) {
+				Trace.catching("org.eclipse.ecf.provider", ECFProviderDebugOptions.CONNECTION, SSLServerSOContainerGroup.class, "takeOffTheAir", e); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+			this.serverSocket = null;
+		}
 		isOnTheAir = false;
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.classpath b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.gitignore b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.project b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.project
new file mode 100644
index 0000000..3559d27
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.remoteservice.asyncproxy.j8</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.settings/org.eclipse.pde.core.prefs b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..77356d6
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundle.name
+Bundle-SymbolicName: org.eclipse.ecf.remoteservice.asyncproxy
+Bundle-Version: 2.0.0.qualifier
+Bundle-Vendor: %bundle.provider
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.equinox.concurrent.future
+Bundle-Localization: bundle
+Export-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="2.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/about.html
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/build.properties b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/build.properties
new file mode 100644
index 0000000..d692a27
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               about.html,\
+               bundle.properties
+src.includes = about.html
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/bundle.properties b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/bundle.properties
new file mode 100644
index 0000000..7a860ca
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/bundle.properties
@@ -0,0 +1,10 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+bundle.provider=Eclipse.org - ECF
+bundle.name=ECF RemoteServices AsyncProxy API Java8
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteCall.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteCall.java
new file mode 100644
index 0000000..d6d7d9d
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteCall.java
@@ -0,0 +1,14 @@
+/****************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.remoteservice.asyncproxy;
+
+public abstract class AbstractAsyncProxyRemoteCall {
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteService.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteService.java
new file mode 100644
index 0000000..c3c96a3
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteService.java
@@ -0,0 +1,50 @@
+/****************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.remoteservice.asyncproxy;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Future;
+
+import org.eclipse.equinox.concurrent.future.IFuture;
+
+public abstract class AbstractAsyncProxyRemoteService {
+
+	@SuppressWarnings("rawtypes")
+	protected abstract IFuture callAsync(AbstractAsyncProxyRemoteCall call);
+	
+	@SuppressWarnings("rawtypes")
+	protected abstract Future callFutureAsync(AbstractAsyncProxyRemoteCall call);
+	
+	protected abstract void callCompletableAsync(AbstractAsyncProxyRemoteCall call, IAsyncProxyCompletable completable);
+
+	@SuppressWarnings("unchecked")
+	protected Object callFuture(AbstractAsyncProxyRemoteCall call, @SuppressWarnings("rawtypes") Class returnType) {
+		// If the result value is a CompletableFuture then
+		// we callCompletableAsync
+		if (CompletableFuture.class.isAssignableFrom(returnType)) {
+			@SuppressWarnings("rawtypes")
+		    CompletableFuture result = new CompletableFuture();
+			callCompletableAsync(call, (r,hadException,exception) -> {
+				if (hadException) result.completeExceptionally(exception);
+				else result.complete(r);
+			});
+			// And return the CompletableFuture
+			return result;
+		}
+		// Else if it's an IFuture then return
+		// IFuture result of callAsync
+		if (IFuture.class.isAssignableFrom(returnType))
+			return callAsync(call);
+		// Else it must be a Future return value
+		return callFutureAsync(call);
+	}
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/IAsyncProxyCompletable.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/IAsyncProxyCompletable.java
new file mode 100644
index 0000000..26a11a8
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/IAsyncProxyCompletable.java
@@ -0,0 +1,15 @@
+/****************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.remoteservice.asyncproxy;
+
+public interface IAsyncProxyCompletable {
+	void handleComplete(Object result, boolean hadException, Throwable exception);
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.classpath b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.classpath
new file mode 100644
index 0000000..64c5e31
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.gitignore b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.project b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.project
new file mode 100644
index 0000000..d85f9b4
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.remoteservice.asyncproxy</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..af0f20f
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.settings/org.eclipse.pde.core.prefs b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3737650
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundle.name
+Bundle-SymbolicName: org.eclipse.ecf.remoteservice.asyncproxy
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %bundle.provider
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.equinox.concurrent.future
+Bundle-Localization: bundle
+Export-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Capability: osgi.ee; filter="(&(|(osgi.ee = J2SE)(osgi.ee = JavaSE))(version >= 1.5)(!(version >= 1.8)))"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/about.html
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/build.properties b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/build.properties
new file mode 100644
index 0000000..b9ec38b
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               bundle.properties,\
+               about.html
+src.includes = bundle.properties,\
+               about.html
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/bundle.properties b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/bundle.properties
new file mode 100644
index 0000000..ffb4129
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/bundle.properties
@@ -0,0 +1,10 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp, and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+bundle.provider=Eclipse.org - ECF
+bundle.name=ECF RemoteServices AsyncProxy API
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteCall.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteCall.java
new file mode 100644
index 0000000..d6d7d9d
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteCall.java
@@ -0,0 +1,14 @@
+/****************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.remoteservice.asyncproxy;
+
+public abstract class AbstractAsyncProxyRemoteCall {
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteService.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteService.java
new file mode 100644
index 0000000..7e53b6f
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AbstractAsyncProxyRemoteService.java
@@ -0,0 +1,35 @@
+/****************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.remoteservice.asyncproxy;
+
+import java.util.concurrent.Future;
+
+import org.eclipse.equinox.concurrent.future.IFuture;
+
+public abstract class AbstractAsyncProxyRemoteService {
+
+	@SuppressWarnings("rawtypes")
+	protected abstract IFuture callAsync(AbstractAsyncProxyRemoteCall call);
+	
+	@SuppressWarnings("rawtypes")
+	protected abstract Future callFutureAsync(AbstractAsyncProxyRemoteCall call);
+	
+	protected abstract void callCompletableAsync(AbstractAsyncProxyRemoteCall call, IAsyncProxyCompletable completable);
+
+	protected Object callFuture(AbstractAsyncProxyRemoteCall call, @SuppressWarnings("rawtypes") Class returnType) {
+		// Iff it's an IFuture then return
+		// IFuture result of callAsync
+		if (IFuture.class.isAssignableFrom(returnType))
+			return callAsync(call);
+		return callFutureAsync(call);
+	}
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/IAsyncProxyCompletable.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/IAsyncProxyCompletable.java
new file mode 100644
index 0000000..26a11a8
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/IAsyncProxyCompletable.java
@@ -0,0 +1,15 @@
+/****************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.remoteservice.asyncproxy;
+
+public interface IAsyncProxyCompletable {
+	void handleComplete(Object result, boolean hadException, Throwable exception);
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF
index 426e313..2e62566 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF
@@ -16,6 +16,6 @@
  org.osgi.util.tracker;version="1.4.0"
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.jdom;bundle-version="1.0.0",
- org.eclipse.equinox.common;bundle-version="3.6.0"
+ org.eclipse.equinox.common
 Export-Package: org.eclipse.ecf.remoteservice.rest.synd;version="1.1.0"
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties
index 9755a29..9d4db8b 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties
@@ -7,4 +7,4 @@
  * Contributors: Pavel Samolisov - initial API and implementation
  ******************************************************************************/
 plugin.provider=Eclipse.org - ECF
-plugin.name=ECF REST RemoteServices RSS/Atom support
+plugin.name=ECF RemoteServices REST RSS/Atom Support
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF
index ae902db..c53012b 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %plugin.name
 Bundle-Vendor: %plugin.provider
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.rest;singleton:=true
-Bundle-Version: 2.2.300.qualifier
+Bundle-Version: 2.4.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rest.Activator
 Bundle-ActivationPolicy: lazy
 Eclipse-BuddyPolicy: global
@@ -15,18 +15,19 @@
  org.eclipse.ecf.remoteservice.rest.identity;version="2.2.200",
  org.eclipse.ecf.remoteservice.rest.util;version="2.2.200"
 Import-Package: org.apache.http;version="4.1.2",
+ org.apache.http.auth;version="4.1.2",
  org.apache.http.client;version="4.1.2",
  org.apache.http.client.entity;version="4.1.2",
+ org.apache.http.client.methods;version="4.1.2",
  org.apache.http.client.params;version="4.1.2",
+ org.apache.http.entity;version="4.1.2",
  org.apache.http.impl.auth;version="4.1.2",
  org.apache.http.impl.client;version="4.1.2",
- org.apache.http.entity;version="4.1.2",
  org.apache.http.message;version="4.1.2",
- org.apache.http.auth;version="4.1.2",
- org.apache.http.client.methods;version="4.1.2",
  org.apache.http.params;version="4.1.2",
  org.apache.http.util,
  org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.ecf.remoteservice.client,
  org.eclipse.ecf.remoteservice.events,
  org.eclipse.ecf.remoteservice.util,
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties
index 2ba3946..98e3587 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties
@@ -7,4 +7,4 @@
 #
 ############################################################################
 plugin.provider=Eclipse.org - ECF
-plugin.name=ECF REST RemoteServices API
+plugin.name=ECF RemoteServices REST API
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/internal/remoteservice/rest/Activator.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/internal/remoteservice/rest/Activator.java
index 74dd348..8f1cdea 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/internal/remoteservice/rest/Activator.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/internal/remoteservice/rest/Activator.java
@@ -10,8 +10,11 @@
 package org.eclipse.ecf.internal.remoteservice.rest;
 
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.SystemLogService;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.*;
+import org.eclipse.ecf.remoteservice.rest.identity.RestNamespace;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
@@ -40,9 +43,15 @@
 	 * @see
 	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
 	 */
-	public void start(BundleContext context1) throws Exception {
+	public void start(final BundleContext context1) throws Exception {
 		plugin = this;
 		this.context = context1;
+		SafeRunner.run(new ExtensionRegistryRunnable(context1) {
+			protected void runWithoutRegistry() throws Exception {
+				context1.registerService(Namespace.class, new RestNamespace(), null);
+				context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.rest.client", new RestClientContainerInstantiator(), "Rest Client Container"), null); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		});
 	}
 
 	/*
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java
index e28c1ed..e2e1ede 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java
@@ -10,11 +10,15 @@
 package org.eclipse.ecf.remoteservice.rest.client;
 
 import java.util.Dictionary;
+import java.util.Hashtable;
+import org.eclipse.ecf.core.ContainerConnectException;
 import org.eclipse.ecf.core.identity.*;
 import org.eclipse.ecf.remoteservice.*;
 import org.eclipse.ecf.remoteservice.client.*;
 import org.eclipse.ecf.remoteservice.rest.identity.RestID;
 import org.eclipse.ecf.remoteservice.rest.identity.RestNamespace;
+import org.eclipse.ecf.remoteservice.util.RemoteFilterImpl;
+import org.osgi.framework.InvalidSyntaxException;
 
 /**
  * A container for REST services. 
@@ -28,6 +32,20 @@
 		setResponseDeserializer(new XMLRemoteResponseDeserializer());
 	}
 
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID target, ID[] idFilter, String clazz, String filter) throws InvalidSyntaxException, ContainerConnectException {
+		return super.getRemoteServiceReferences(transformTarget(target, filter), idFilter, clazz, filter);
+	}
+
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID target, String clazz, String filter) throws InvalidSyntaxException, ContainerConnectException {
+		return super.getRemoteServiceReferences(transformTarget(target, filter), clazz, filter);
+	}
+
+	protected ID transformTarget(ID originalTarget, String filter) throws InvalidSyntaxException {
+		if (originalTarget != null && filter != null && originalTarget instanceof RestID)
+			((RestID) originalTarget).setRsId(new RemoteFilterImpl(filter).getRsId());
+		return originalTarget;
+	}
+
 	protected class RestRemoteServiceClientRegistration extends RemoteServiceClientRegistration {
 
 		public RestRemoteServiceClientRegistration(Namespace namespace, IRemoteCallable[] restCalls, Dictionary properties, RemoteServiceClientRegistry registry) {
@@ -35,7 +53,13 @@
 			ID cID = getConnectedID();
 			if (cID != null)
 				this.containerId = cID;
-			this.serviceID = new RemoteServiceID(namespace, containerId, registry.getNextServiceId());
+			long rsId = ((RestID) containerId).getRsId();
+			this.serviceID = new RemoteServiceID(namespace, containerId, rsId);
+			if (rsId > 0) {
+				if (this.properties == null)
+					this.properties = new Hashtable();
+				this.properties.put(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID, new Long(rsId));
+			}
 		}
 
 		public RestRemoteServiceClientRegistration(Namespace namespace, String[] classNames, IRemoteCallable[][] restCalls, Dictionary properties, RemoteServiceClientRegistry registry) {
@@ -43,7 +67,13 @@
 			ID cID = getConnectedID();
 			if (cID != null)
 				this.containerId = cID;
-			this.serviceID = new RemoteServiceID(namespace, containerId, registry.getNextServiceId());
+			long rsId = ((RestID) containerId).getRsId();
+			this.serviceID = new RemoteServiceID(namespace, containerId, rsId);
+			if (rsId > 0) {
+				if (this.properties == null)
+					this.properties = new Hashtable();
+				this.properties.put(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID, new Long(rsId));
+			}
 		}
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestID.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestID.java
index 82f30f9..e497be5 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestID.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestID.java
@@ -17,10 +17,20 @@
 
 	private static final long serialVersionUID = 2082626839598770167L;
 
+	private long rsId = 0;
+
 	public RestID(Namespace namespace, URI uri) {
 		super(namespace, uri);
 	}
 
+	public long getRsId() {
+		return rsId;
+	}
+
+	public void setRsId(long rsId) {
+		this.rsId = rsId;
+	}
+
 	public String toString() {
 		StringBuffer sb = new StringBuffer("RestID["); //$NON-NLS-1$
 		sb.append(getName()).append("]"); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestNamespace.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestNamespace.java
index ea59ed4..72fb51a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestNamespace.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/identity/RestNamespace.java
@@ -32,7 +32,7 @@
 	public static final String SCHEME = "rest"; //$NON-NLS-1$
 
 	public RestNamespace() {
-		// nothing
+		super(NAME, "Rest Namespace"); //$NON-NLS-1$
 	}
 
 	public RestNamespace(String name, String desc) {
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF
index 97329b1..ccb0737 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF
@@ -2,15 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.rpc;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.2.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rpc.Activator
 Bundle-Vendor: %plugin.provider
 Require-Bundle: org.eclipse.ecf,
- org.eclipse.equinox.common;bundle-version="3.6.0"
+ org.eclipse.equinox.common
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
-Import-Package: org.osgi.framework, 
- org.osgi.util.tracker,
+Import-Package: javax.servlet;version="2.6.0",
+ javax.servlet.http;version="2.6.0",
  org.apache.commons.httpclient;version="3.1.0",
  org.apache.commons.httpclient.auth;version="3.1.0",
  org.apache.commons.httpclient.methods;version="3.1.0",
@@ -22,15 +22,21 @@
  org.apache.xmlrpc.common,
  org.apache.xmlrpc.parser,
  org.apache.xmlrpc.serializer,
+ org.apache.xmlrpc.server,
+ org.apache.xmlrpc.webserver,
  org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity;version="3.0.0",
  org.eclipse.ecf.core.provider,
  org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.ecf.remoteservice.client,
- org.osgi.service.log;version="1.3.0"
+ org.osgi.framework,
+ org.osgi.service.log;version="1.3.0",
+ org.osgi.util.tracker
 Export-Package: org.eclipse.ecf.internal.remoteservice.rpc;x-internal:=true,
  org.eclipse.ecf.remoteservice.rpc;version="1.0.0",
  org.eclipse.ecf.remoteservice.rpc.client;version="1.0.0",
- org.eclipse.ecf.remoteservice.rpc.identity;version="1.0.0"
+ org.eclipse.ecf.remoteservice.rpc.identity;version="1.0.0",
+ org.eclipse.ecf.remoteservice.rpc.server
 Bundle-Localization: plugin
 DynamicImport-Package: *
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java
index 9295d1c..fb346df 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java
@@ -10,8 +10,11 @@
 package org.eclipse.ecf.internal.remoteservice.rpc;
 
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.SystemLogService;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.*;
+import org.eclipse.ecf.remoteservice.rpc.identity.RpcNamespace;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
@@ -39,9 +42,16 @@
 	 * (non-Javadoc)
 	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
 	 */
-	public void start(BundleContext bundleContext) throws Exception {
+	public void start(final BundleContext bundleContext) throws Exception {
 		plugin = this;
 		Activator.context = bundleContext;
+		SafeRunner.run(new ExtensionRegistryRunnable(bundleContext) {
+			protected void runWithoutRegistry() throws Exception {
+				bundleContext.registerService(Namespace.class, new RpcNamespace(), null);
+				bundleContext.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(
+						"ecf.xmlrpc.client", new RpcClientContainerInstantiator(), "Rpc Client Container"), null); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		});
 	}
 
 	/*
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java
index e9f0484..5258bc2 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java
@@ -31,7 +31,7 @@
 		if (paramToSerialize != null) {
 			for (int i = 0; i < paramToSerialize.length; i++) {
 				IRemoteCallParameter p = new RemoteCallParameter(currentParameters[i].getName(),
-						paramToSerialize[i] == null ? currentParameters[i].getValue() : paramToSerialize);
+						paramToSerialize[i] == null ? currentParameters[i].getValue() : paramToSerialize[i]);
 				results.add(p);
 			}
 		}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java
index 01720e6..a111999 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java
@@ -33,7 +33,7 @@
 	public static final String SCHEME = "xmlrpc"; //$NON-NLS-1$
 
 	public RpcNamespace() {
-		// nothing
+		super(NAME, "Rpc Namespace"); //$NON-NLS-1$
 	}
 
 	public RpcNamespace(String name, String desc) {
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/server/RemoteServiceXmlRpcServlet.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/server/RemoteServiceXmlRpcServlet.java
new file mode 100644
index 0000000..7d62f18
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/server/RemoteServiceXmlRpcServlet.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2010-2011 Naumen. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Pavel Samolisov - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.remoteservice.rpc.server;
+
+import javax.servlet.ServletConfig;
+import org.apache.xmlrpc.XmlRpcException;
+import org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping;
+import org.apache.xmlrpc.server.XmlRpcHandlerMapping;
+import org.apache.xmlrpc.webserver.XmlRpcServlet;
+import org.apache.xmlrpc.webserver.XmlRpcServletServer;
+
+public class RemoteServiceXmlRpcServlet extends XmlRpcServlet {
+
+	private static final long serialVersionUID = 654171179838565650L;
+
+	class RemoteServiceHandlerMapping extends AbstractReflectiveHandlerMapping {
+
+	}
+
+	private RemoteServiceHandlerMapping mapping;
+
+	protected XmlRpcHandlerMapping newXmlRpcHandlerMapping() throws XmlRpcException {
+		return (mapping == null) ? super.newXmlRpcHandlerMapping() : mapping;
+	}
+
+	class RemoteServiceXmlRpcServletServer extends XmlRpcServletServer {
+
+	}
+
+	private RemoteServiceXmlRpcServletServer server;
+
+	protected XmlRpcServletServer newXmlRpcServer(ServletConfig pConfig) throws XmlRpcException {
+		return (server == null) ? super.newXmlRpcServer(pConfig) : server;
+	}
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF
index 63dcb7a..b56b2fe 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ECF Remote Service ServletAPI
+Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.servlet
 Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: Eclipse.org - ECF
+Bundle-Vendor: %plugin.provider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: javax.servlet,
  javax.servlet.http,
@@ -12,9 +12,11 @@
  org.eclipse.ecf.provider.remoteservice.generic;version="4.0.0",
  org.eclipse.ecf.remoteservice;version="7.0.0",
  org.eclipse.ecf.remoteservice.util;version="8.1.0",
- org.eclipse.equinox.concurrent.future;version="1.1.0",
+ org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.7.0",
  org.osgi.service.http;version="1.2.1"
 Export-Package: org.eclipse.ecf.remoteservice.servlet
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
- org.eclipse.ecf;bundle-version="3.2.0"
+Require-Bundle: org.eclipse.equinox.common,
+ org.eclipse.ecf
+Bundle-Localization: plugin
+
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties
index 34d2e4d..cdd2db7 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties
@@ -1,4 +1,7 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               about.html,\
+               plugin.properties
+src.includes = about.html
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties
index 3968910..7b192fe 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties
@@ -7,4 +7,4 @@
 #
 ############################################################################
 plugin.provider=Eclipse.org - ECF
-plugin.name=ECF RemoteService Servlet API
+plugin.name=ECF RemoteServices Servlet API
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF
index 6686cbb..ec89ff9 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF
@@ -3,12 +3,13 @@
 Bundle-Name: %plugin.name
 Bundle-Vendor: %plugin.provider
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.soap;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity;version="3.0.0",
  org.eclipse.ecf.core.util,
  org.eclipse.ecf.remoteservice,
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.ecf.remoteservice.client
 Bundle-ClassPath: .
 Export-Package: org.eclipse.ecf.remoteservice.soap.client;version="1.0.0",
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties
index 50a1a8e..ca125d4 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties
@@ -7,4 +7,4 @@
 #
 ############################################################################
 plugin.provider=Eclipse.org - ECF
-plugin.name=ECF Remote Service SOAP Provider API
+plugin.name=ECF RemoteServices SOAP Provider API
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.ui/META-INF/MANIFEST.MF
index c78f644..1a3ee79 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.ui;singleton:=true
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 3.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
 Require-Bundle: org.eclipse.core.runtime,
@@ -18,4 +18,5 @@
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.ecf.internal.remoteservices.ui.Activator
-Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0"
+Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
+ org.eclipse.equinox.concurrent.future;version="1.0.0"
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
deleted file mode 100644
index 950b0b2..0000000
--- a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.ecf.remoteservice" version="2">
-    <resource path="src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java" type="org.eclipse.ecf.remoteservice.util.RemoteFilterImpl">
-        <filter comment="remote service filter can implement osgi Filter" id="574660632">
-            <message_arguments>
-                <message_argument value="IRemoteFilter"/>
-                <message_argument value="Filter"/>
-                <message_argument value="RemoteFilterImpl"/>
-            </message_arguments>
-        </filter>
-    </resource>
-</component>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
index 3d2b461..c152c5e 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice
-Bundle-Version: 8.3.0.qualifier
+Bundle-Version: 8.4.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
@@ -17,6 +17,7 @@
 Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.ecf
 Import-Package: org.eclipse.ecf.core.util.reflection;version="2.2.100",
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework,
  org.osgi.service.log,
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties
index 9113a5a..0d9b2cb 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties
@@ -7,4 +7,4 @@
 #
 ############################################################################
 plugin.provider=Eclipse.org - ECF
-plugin.name=ECF RemoteService API
+plugin.name=ECF RemoteServices API
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
index d48bcd9..12fd1af 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
@@ -16,6 +16,9 @@
 import org.eclipse.ecf.core.jobs.JobsExecutor;
 import org.eclipse.ecf.core.util.ECFException;
 import org.eclipse.ecf.internal.remoteservice.Activator;
+import org.eclipse.ecf.remoteservice.asyncproxy.*;
+import org.eclipse.ecf.remoteservice.events.IRemoteCallCompleteEvent;
+import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent;
 import org.eclipse.equinox.concurrent.future.*;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceException;
@@ -28,7 +31,7 @@
  * @since 4.1
  */
 //@ProviderType
-public abstract class AbstractRemoteService implements IRemoteService, InvocationHandler {
+public abstract class AbstractRemoteService extends AbstractAsyncProxyRemoteService implements IRemoteService, InvocationHandler {
 
 	protected static final Object[] EMPTY_ARGS = new Object[0];
 
@@ -108,6 +111,11 @@
 		return IRemoteCall.DEFAULT_TIMEOUT;
 	}
 
+	@Override
+	protected IFuture callAsync(AbstractAsyncProxyRemoteCall call) {
+		return callAsync((IRemoteCall) call);
+	}
+
 	public IFuture callAsync(final IRemoteCall call) {
 		IExecutor executor = getIFutureExecutor(call);
 		if (executor == null)
@@ -150,22 +158,45 @@
 			classes.add(IRemoteServiceProxy.class);
 	}
 
+	private boolean nameAlreadyPresent(String className, List classes) {
+		for (Iterator i = classes.iterator(); i.hasNext();) {
+			Class c = (Class) i.next();
+			if (className.equals(c.getName()))
+				return true;
+		}
+		return false;
+	}
+
+	/**
+	 * @since 8.3
+	 */
+	protected List addAsyncProxyClasses(ClassLoader cl, Class[] interfaces) {
+		List intfs = Arrays.asList(interfaces);
+		List results = new ArrayList();
+		if (getRemoteServiceReference().getProperty(Constants.SERVICE_PREVENT_ASYNCPROXY) == null) {
+			for (Iterator i = intfs.iterator(); i.hasNext();) {
+				Class intf = (Class) i.next();
+				String intfName = convertInterfaceNameToAsyncInterfaceName(intf.getName());
+				if (intfName != null && !nameAlreadyPresent(intfName, intfs)) {
+					Class asyncClass = findAsyncRemoteServiceProxyClass(cl, intf);
+					// Only add if async
+					if (asyncClass != null && !intfs.contains(asyncClass))
+						results.add(asyncClass);
+				}
+			}
+		}
+		results.addAll(intfs);
+		return results;
+	}
+
 	/**
 	 * @since 6.0
 	 */
 	@SuppressWarnings("unchecked")
 	public Object getProxy(ClassLoader cl, Class[] interfaces) throws ECFException {
-		// Add async classes
-		// for all interfaces, add async classes
-		List classes = new ArrayList();
-		for (int i = 0; i < interfaces.length; i++) {
-			// add interface to classes
-			classes.add(interfaces[i]);
-			Class asyncClass = findAsyncRemoteServiceProxyClass(cl, interfaces[i]);
-			if (asyncClass != null)
-				classes.add(asyncClass);
-		}
-		// Add IRemoteServiceProxy to classes, if not restricted via service properties
+		// Now add any async p
+		List classes = addAsyncProxyClasses(cl, interfaces);
+
 		addRemoteServiceProxyToProxy(classes);
 		// create and return proxy
 		try {
@@ -256,6 +287,8 @@
 	 */
 	protected Class findAsyncRemoteServiceProxyClass(ClassLoader cl, Class c) {
 		String proxyClassName = convertInterfaceNameToAsyncInterfaceName(c.getName());
+		if (proxyClassName == null)
+			return null;
 		try {
 			return Class.forName(proxyClassName, true, cl);
 		} catch (ClassNotFoundException e) {
@@ -273,7 +306,8 @@
 		String asyncProxyName = (String) getRemoteServiceReference().getProperty(Constants.SERVICE_ASYNC_RSPROXY_CLASS_ + interfaceName);
 		if (asyncProxyName != null)
 			return asyncProxyName;
-		// If a value has been specified by the ServiceProperty
+		if (interfaceName.endsWith(IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX))
+			return interfaceName;
 		return interfaceName + IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX;
 	}
 
@@ -290,13 +324,14 @@
 	}
 
 	protected Object invokeObject(Object proxy, final Method method, final Object[] args) throws Throwable {
-		if (method.getName().equals("toString")) { //$NON-NLS-1$
+		String methodName = method.getName();
+		if (methodName.equals("toString")) { //$NON-NLS-1$
 			final String[] clazzes = getInterfaceClassNames();
 			String proxyClass = (clazzes.length == 1) ? clazzes[0] : Arrays.asList(clazzes).toString();
 			return proxyClass + ".proxy@" + getRemoteServiceID(); //$NON-NLS-1$
-		} else if (method.getName().equals("hashCode")) { //$NON-NLS-1$
+		} else if (methodName.equals("hashCode")) { //$NON-NLS-1$
 			return new Integer(hashCode());
-		} else if (method.getName().equals("equals")) { //$NON-NLS-1$
+		} else if (methodName.equals("equals")) { //$NON-NLS-1$
 			if (args == null || args.length == 0)
 				return Boolean.FALSE;
 			try {
@@ -305,9 +340,9 @@
 				return Boolean.FALSE;
 			}
 			// This handles the use of IRemoteServiceProxy.getRemoteService method
-		} else if (method.getName().equals("getRemoteService")) { //$NON-NLS-1$
+		} else if (methodName.equals("getRemoteService")) { //$NON-NLS-1$
 			return getRemoteService();
-		} else if (method.getName().equals("getRemoteServiceReference")) { //$NON-NLS-1$
+		} else if (methodName.equals("getRemoteServiceReference")) { //$NON-NLS-1$
 			return getRemoteServiceReference();
 		}
 		return null;
@@ -317,6 +352,32 @@
 		return callSync(call);
 	}
 
+	/**
+	 * @since 8.3
+	 */
+	protected boolean isAsync(Object proxy, Method method, Object[] args) {
+		return (Arrays.asList(method.getDeclaringClass().getInterfaces()).contains(IAsyncRemoteServiceProxy.class) || method.getName().endsWith(IAsyncRemoteServiceProxy.ASYNC_METHOD_SUFFIX));
+	}
+
+	/**
+	 * @since 8.3
+	 */
+	protected IRemoteCall createRemoteCall(final String callMethod, final Object[] callParameters, final long callTimeout) {
+		return new IRemoteCall() {
+			public String getMethod() {
+				return callMethod;
+			}
+
+			public Object[] getParameters() {
+				return callParameters;
+			}
+
+			public long getTimeout() {
+				return callTimeout;
+			}
+		};
+	}
+
 	public Object invoke(Object proxy, final Method method, final Object[] args) throws Throwable {
 		// methods declared by Object
 		try {
@@ -325,27 +386,13 @@
 			Object resultObject = invokeObject(proxy, method, args);
 			if (resultObject != null)
 				return resultObject;
-			// If the method's class is a subclass of IAsyncRemoteServiceProxy, then we assume
-			// that the methods are intended to be invoked asynchronously
-			if (Arrays.asList(method.getDeclaringClass().getInterfaces()).contains(IAsyncRemoteServiceProxy.class))
+			if (isAsync(proxy, method, args))
 				return invokeAsync(method, args);
 			// else call synchronously/block and return result
 			final String callMethod = getCallMethodNameForProxyInvoke(method, args);
 			final Object[] callParameters = getCallParametersForProxyInvoke(callMethod, method, args);
 			final long callTimeout = getCallTimeoutForProxyInvoke(callMethod, method, args);
-			final IRemoteCall remoteCall = new IRemoteCall() {
-				public String getMethod() {
-					return callMethod;
-				}
-
-				public Object[] getParameters() {
-					return callParameters;
-				}
-
-				public long getTimeout() {
-					return callTimeout;
-				}
-			};
+			final IRemoteCall remoteCall = createRemoteCall(callMethod, callParameters, callTimeout);
 			return invokeSync(remoteCall);
 		} catch (Throwable t) {
 			if (t instanceof ServiceException)
@@ -356,17 +403,17 @@
 	}
 
 	/**
-	 * @since 3.3
+	 * @since 8.4
 	 */
-	protected class AsyncArgs {
+	public class AsyncArgs {
 		private IRemoteCallListener listener;
 		private Object[] args;
-		private boolean isIFuture;
+		private Class returnType;
 
-		public AsyncArgs(Object[] originalArgs, boolean isIFuture) {
+		public AsyncArgs(Object[] originalArgs, Class returnType) {
 			this.listener = null;
 			this.args = originalArgs;
-			this.isIFuture = isIFuture;
+			this.returnType = returnType;
 		}
 
 		public AsyncArgs(IRemoteCallListener listener, Object[] originalArgs) {
@@ -387,41 +434,27 @@
 			return args;
 		}
 
-		/**
-		 * @since 8.2
-		 */
-		public boolean isIFuture() {
-			return isIFuture;
+		public Class getReturnType() {
+			return returnType;
 		}
 	}
 
 	/**
+	 * @since 8.4
+	 */
+	protected RemoteCall getAsyncRemoteCall(String invokeMethodName, Object[] asyncArgs) {
+		return new RemoteCall(invokeMethodName, asyncArgs, IRemoteCall.DEFAULT_TIMEOUT);
+	}
+
+	/**
 	 * @since 3.3
 	 */
 	protected Object invokeAsync(final Method method, final Object[] args) throws Throwable {
 		final String invokeMethodName = getAsyncInvokeMethodName(method);
 		final AsyncArgs asyncArgs = getAsyncArgs(method, args);
+		RemoteCall remoteCall = getAsyncRemoteCall(invokeMethodName, asyncArgs.getArgs());
 		IRemoteCallListener listener = asyncArgs.getListener();
-		IRemoteCall call = new IRemoteCall() {
-			public String getMethod() {
-				return invokeMethodName;
-			}
-
-			public Object[] getParameters() {
-				return asyncArgs.getArgs();
-			}
-
-			public long getTimeout() {
-				return DEFAULT_TIMEOUT;
-			}
-		};
-		// IFuture or Future will have listener == null
-		if (listener == null) {
-			if (asyncArgs.isIFuture())
-				return callAsync(call);
-			return callFutureAsync(call);
-		}
-		return callAsyncWithResult(call, listener);
+		return (listener != null) ? callAsyncWithResult(remoteCall, listener) : callFuture(remoteCall, asyncArgs.getReturnType());
 	}
 
 	/**
@@ -433,6 +466,29 @@
 	}
 
 	/**
+	 * @since 8.4
+	 */
+	@Override
+	protected void callCompletableAsync(AbstractAsyncProxyRemoteCall call, final IAsyncProxyCompletable completable) {
+		callAsync((IRemoteCall) call, new IRemoteCallListener() {
+			public void handleEvent(IRemoteCallEvent event) {
+				if (event instanceof IRemoteCallCompleteEvent) {
+					IRemoteCallCompleteEvent cce = (IRemoteCallCompleteEvent) event;
+					completable.handleComplete(cce.getResponse(), cce.hadException(), cce.getException());
+				}
+			}
+		});
+	}
+
+	/**
+	 * @since 8.4
+	 */
+	@Override
+	protected Future callFutureAsync(AbstractAsyncProxyRemoteCall call) {
+		return callFutureAsync((IRemoteCall) call);
+	}
+
+	/**
 	 * @since 8.2
 	 */
 	protected Future callFutureAsync(final IRemoteCall call) {
@@ -453,30 +509,26 @@
 		IRemoteCallListener listener = null;
 		Class returnType = method.getReturnType();
 		// If the return type is of type java.util.concurrent.Future, then we return
-		if (returnType.equals(Future.class)) {
-			return new AsyncArgs(args, false);
-		} else if (returnType.equals(IFuture.class)) {
-			return new AsyncArgs(args, true);
-		} else {
-			// If the provided args do *not* include an IRemoteCallListener then we have a problem
-			if (args == null || args.length == 0)
-				throw new IllegalArgumentException("Async calls must include a IRemoteCallListener instance as the last argument"); //$NON-NLS-1$
-			// Get the last arg
-			Object lastArg = args[args.length - 1];
-			// If it's an IRemoteCallListener implementer directly, then just cast and return
-			if (lastArg instanceof IRemoteCallListener) {
-				listener = (IRemoteCallListener) lastArg;
-			}
-			// If it's an implementation of IAsyncCallback, then create a new listener based upon 
-			// callback and return
-			if (lastArg instanceof IAsyncCallback) {
-				listener = new CallbackRemoteCallListener((IAsyncCallback) lastArg);
-			}
-			// If the last are is not an instance of IRemoteCallListener then there is a problem
-			if (listener == null)
-				throw new IllegalArgumentException("Last argument must be an instance of IRemoteCallListener"); //$NON-NLS-1$
-			return new AsyncArgs(listener, args);
+		if (Future.class.isAssignableFrom(returnType) || IFuture.class.isAssignableFrom(returnType))
+			return new AsyncArgs(args, returnType);
+		// If the provided args do *not* include an IRemoteCallListener then we have a problem
+		if (args == null || args.length == 0)
+			throw new IllegalArgumentException("Async calls must include a IRemoteCallListener instance as the last argument"); //$NON-NLS-1$
+		// Get the last arg
+		Object lastArg = args[args.length - 1];
+		// If it's an IRemoteCallListener implementer directly, then just cast and return
+		if (lastArg instanceof IRemoteCallListener) {
+			listener = (IRemoteCallListener) lastArg;
 		}
+		// If it's an implementation of IAsyncCallback, then create a new listener based upon 
+		// callback and return
+		if (lastArg instanceof IAsyncCallback) {
+			listener = new CallbackRemoteCallListener((IAsyncCallback) lastArg);
+		}
+		// If the last are is not an instance of IRemoteCallListener then there is a problem
+		if (listener == null)
+			throw new IllegalArgumentException("Last argument must be an instance of IRemoteCallListener"); //$NON-NLS-1$
+		return new AsyncArgs(listener, args);
 	}
 
 	/**
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java
index 2ac0a3d..7ae7fbd 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java
@@ -13,6 +13,8 @@
 
 /**
  * Remote service API constants.
+ * 
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface Constants {
 
@@ -161,6 +163,11 @@
 	public static final String SERVICE_ASYNC_RSPROXY_CLASS_ = "ecf.rsvc.async.proxy_"; //$NON-NLS-1$
 
 	/**
+	 * @since 8.3
+	 */
+	public static final String SERVICE_PREVENT_ASYNCPROXY = "ecf.rsvc.async.noproxy"; //$NON-NLS-1$
+
+	/**
 	 * @deprecated
 	 */
 	public static final String SERVICE_CONNECT_ID = "ecf.rsvc.cnct.id"; //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java
index 7a2ca6f..a438cb1 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java
@@ -11,11 +11,12 @@
 
 import java.util.Arrays;
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.ecf.remoteservice.asyncproxy.AbstractAsyncProxyRemoteCall;
 
 /**
  * @since 4.0
  */
-public class RemoteCall implements IRemoteCall {
+public class RemoteCall extends AbstractAsyncProxyRemoteCall implements IRemoteCall {
 
 	protected String method;
 	protected Object[] parameters;
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistration.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistration.java
index f4ea5e9..e483ff4 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistration.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistration.java
@@ -114,6 +114,8 @@
 			for (int j = 0; j < subArray.length; j++) {
 				IRemoteCallable def = subArray[j];
 				String defMethod = def.getMethod();
+				if (defMethod != null && defMethod.equals(methodToFind))
+					return def;
 				String fqDefMethod = getFQMethod(className, defMethod);
 				if (fqDefMethod.equals(methodToFind))
 					return def;
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java
index 38963c2..b6906d8 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java
@@ -12,6 +12,8 @@
 package org.eclipse.ecf.remoteservice.util;
 
 import java.util.*;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.ecf.internal.remoteservice.Activator;
 import org.eclipse.ecf.remoteservice.IRemoteFilter;
 import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
@@ -23,8 +25,15 @@
  */
 public class RemoteFilterImpl implements IRemoteFilter {
 
+	/**
+	 * @since 8.4
+	 */
+	public static final String REMOTE_SERVICEID_PREFIX = "(&(" + org.eclipse.ecf.remoteservice.Constants.SERVICE_ID + "="; //$NON-NLS-1$ //$NON-NLS-2$
+
 	Filter filter;
 
+	long rsId = 0;
+
 	/**
 	 * @param createFilter
 	 */
@@ -32,6 +41,30 @@
 		this(Activator.getDefault().getContext(), createFilter);
 	}
 
+	private void parseForRsId(String createFilter) {
+		if (createFilter == null)
+			return;
+		if (createFilter.startsWith(REMOTE_SERVICEID_PREFIX)) {
+			String f = createFilter.substring(REMOTE_SERVICEID_PREFIX.length());
+			int rightParenIndex = f.indexOf(')');
+			if (rightParenIndex == -1)
+				return;
+			f = f.substring(0, rightParenIndex);
+			try {
+				this.rsId = Long.parseLong(f);
+			} catch (NumberFormatException e) {
+				Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Exception parsing remote service filter=" + filter, e)); //$NON-NLS-1$
+			}
+		}
+	}
+
+	/**
+	 * @since 8.4
+	 */
+	public long getRsId() {
+		return rsId;
+	}
+
 	/**
 	 * @param createFilter
 	 * @since 6.0
@@ -39,6 +72,7 @@
 	public RemoteFilterImpl(BundleContext context, String createFilter) throws InvalidSyntaxException {
 		if (createFilter == null)
 			throw new InvalidSyntaxException("Filter cannot be null", createFilter); //$NON-NLS-1$
+		parseForRsId(createFilter);
 		this.filter = context.createFilter(createFilter);
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.sharedobject/META-INF/MANIFEST.MF
index 20d73c2..d8e1e22 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.sharedobject;singleton:=true
-Bundle-Version: 2.4.0.qualifier
+Bundle-Version: 2.5.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.sharedobject.Activator
 Bundle-Localization: plugin
 Bundle-Vendor: %plugin.provider
@@ -17,8 +17,8 @@
 Bundle-ManifestVersion: 2
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Require-Bundle: org.eclipse.equinox.common,
- org.eclipse.equinox.registry,
- org.eclipse.ecf
+ org.eclipse.equinox.registry;resolution:=optional,
+ org.eclipse.ecf;bundle-version="3.4.0"
 Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework,
  org.osgi.service.log,
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/build.properties b/framework/bundles/org.eclipse.ecf.sharedobject/build.properties
index 85d76d2..6d5e0f0 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/build.properties
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/build.properties
@@ -9,5 +9,4 @@
                schema/
 jars.compile.order = .
 source.. = src/
-jre.compilation.profile = J2SE-1.4
 javacErrors.. = -assertIdentifier,-enumIdentifier
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties b/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties
index a88cffb..6042958 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties
@@ -6,6 +6,6 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF Sharedobject API
+plugin.name=ECF SharedObject API
 plugin.provider=Eclipse.org - ECF
 
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
index 33c628e..0c8e0c1 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
@@ -14,8 +14,7 @@
 import java.util.*;
 
 /**
- * @since 2.2
- *
+ * @since 3.3
  */
 @SuppressWarnings("unchecked")
 public class ClassUtil {
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/internal/core/sharedobject/Activator.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/internal/core/sharedobject/Activator.java
index 877613b..bb32f47 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/internal/core/sharedobject/Activator.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/internal/core/sharedobject/Activator.java
@@ -40,15 +40,11 @@
 	// The shared instance
 	private static Activator plugin;
 
-	private BundleContext context = null;
-
-	private IRegistryChangeListener registryManager = null;
-
-	private ServiceTracker extensionRegistryTracker = null;
+	BundleContext context = null;
 
 	private ServiceTracker logServiceTracker = null;
 
-	private ServiceTracker adapterManagerTracker = null;
+	private AdapterManagerTracker adapterManagerTracker = null;
 
 	/**
 	 * The constructor
@@ -57,27 +53,24 @@
 		// null constructor
 	}
 
-	public IExtensionRegistry getExtensionRegistry() {
-		return (IExtensionRegistry) extensionRegistryTracker.getService();
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
 	 */
-	@SuppressWarnings("unchecked")
 	public void start(BundleContext ctxt) throws Exception {
 		this.context = ctxt;
 		plugin = this;
-		this.extensionRegistryTracker = new ServiceTracker(ctxt, IExtensionRegistry.class.getName(), null);
-		this.extensionRegistryTracker.open();
-		IExtensionRegistry registry = getExtensionRegistry();
-		if (registry != null) {
-			this.registryManager = new SharedObjectRegistryManager();
-			registry.addRegistryChangeListener(registryManager);
-		}
-		setupSharedObjectExtensionPoint(ctxt);
+
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			protected void runWithRegistry(IExtensionRegistry registry) throws Exception {
+				if (registry != null) {
+					IExtensionPoint extensionPoint = registry.getExtensionPoint(SHAREDOBJECT_FACTORY_EPOINT);
+					if (extensionPoint != null)
+						addSharedObjectExtensions(extensionPoint.getConfigurationElements());
+				}
+			}
+		});
 		Trace.exiting(Activator.PLUGIN_ID, SharedObjectDebugOptions.METHODS_ENTERING, Activator.class, "start"); //$NON-NLS-1$
 	}
 
@@ -88,14 +81,6 @@
 	 */
 	public void stop(BundleContext ctxt) throws Exception {
 		Trace.entering(Activator.PLUGIN_ID, SharedObjectDebugOptions.METHODS_EXITING, Activator.class, "stop"); //$NON-NLS-1$
-		IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null)
-			reg.removeRegistryChangeListener(registryManager);
-		this.registryManager = null;
-		if (extensionRegistryTracker != null) {
-			extensionRegistryTracker.close();
-			extensionRegistryTracker = null;
-		}
 		if (adapterManagerTracker != null) {
 			adapterManagerTracker.close();
 			adapterManagerTracker = null;
@@ -124,7 +109,6 @@
 
 	private LogService systemLogService = null;
 
-	@SuppressWarnings("unchecked")
 	protected LogService getLogService() {
 		if (context == null) {
 			if (systemLogService == null)
@@ -145,23 +129,15 @@
 		}
 	}
 
-	@SuppressWarnings("unchecked")
 	public IAdapterManager getAdapterManager() {
 		if (context == null)
 			return null;
 		// First, try to get the adapter manager via
 		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
+			adapterManagerTracker = new AdapterManagerTracker(this.context);
 			adapterManagerTracker.open();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		if (adapterManager == null)
-			getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$
-		return adapterManager;
+		return adapterManagerTracker.getAdapterManager();
 	}
 
 	/**
@@ -170,7 +146,7 @@
 	 * @param members
 	 *            the members to remove
 	 */
-	protected void removeSharedObjectExtensions(IConfigurationElement[] members) {
+	void removeSharedObjectExtensions(IConfigurationElement[] members) {
 		for (int m = 0; m < members.length; m++) {
 			IConfigurationElement member = members[m];
 			String name = null;
@@ -203,7 +179,7 @@
 	 * @param members
 	 *            to add
 	 */
-	protected void addSharedObjectExtensions(IConfigurationElement[] members) {
+	void addSharedObjectExtensions(IConfigurationElement[] members) {
 		String bundleName = getDefault().getBundle().getSymbolicName();
 		// For each configuration element
 		for (int m = 0; m < members.length; m++) {
@@ -224,8 +200,22 @@
 				if (description == null) {
 					description = ""; //$NON-NLS-1$
 				}
+				IConfigurationElement[] propertyElements = member.getChildren(PROPERTY_ELEMENT_NAME);
+				Properties props = new Properties();
+				if (propertyElements != null) {
+					if (propertyElements.length > 0) {
+						for (int i = 0; i < propertyElements.length; i++) {
+							String name1 = propertyElements[i].getAttribute(NAME_ATTRIBUTE);
+							String value = propertyElements[i].getAttribute(VALUE_ATTRIBUTE);
+							if (name1 != null && !name1.equals("") && value != null //$NON-NLS-1$
+									&& !value.equals("")) { //$NON-NLS-1$
+								props.setProperty(name1, value);
+							}
+						}
+					}
+				}
 				// Get any property elements
-				Map properties = getProperties(member.getChildren(PROPERTY_ELEMENT_NAME));
+				Map properties = props;
 				// Now make description instance
 				SharedObjectTypeDescription scd = new SharedObjectTypeDescription(name, exten, description, properties);
 				org.eclipse.ecf.core.util.Trace.trace(Activator.PLUGIN_ID, SharedObjectDebugOptions.DEBUG, "setupSharedObjectExtensionPoint:createdDescription(" //$NON-NLS-1$
@@ -252,54 +242,4 @@
 		}
 	}
 
-	/**
-	 * Setup shared object extension point
-	 * 
-	 * @param bc
-	 *            the BundleContext for this bundle
-	 */
-	protected void setupSharedObjectExtensionPoint(BundleContext bc) {
-		IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null) {
-			IExtensionPoint extensionPoint = reg.getExtensionPoint(SHAREDOBJECT_FACTORY_EPOINT);
-			if (extensionPoint == null) {
-				return;
-			}
-			addSharedObjectExtensions(extensionPoint.getConfigurationElements());
-		}
-	}
-
-	protected Map getProperties(IConfigurationElement[] propertyElements) {
-		Properties props = new Properties();
-		if (propertyElements != null) {
-			if (propertyElements.length > 0) {
-				for (int i = 0; i < propertyElements.length; i++) {
-					String name = propertyElements[i].getAttribute(NAME_ATTRIBUTE);
-					String value = propertyElements[i].getAttribute(VALUE_ATTRIBUTE);
-					if (name != null && !name.equals("") && value != null //$NON-NLS-1$
-							&& !value.equals("")) { //$NON-NLS-1$
-						props.setProperty(name, value);
-					}
-				}
-			}
-		}
-		return props;
-	}
-
-	protected class SharedObjectRegistryManager implements IRegistryChangeListener {
-		public void registryChanged(IRegistryChangeEvent event) {
-			IExtensionDelta delta[] = event.getExtensionDeltas(PLUGIN_ID, NAMESPACE_NAME);
-			for (int i = 0; i < delta.length; i++) {
-				switch (delta[i].getKind()) {
-					case IExtensionDelta.ADDED :
-						addSharedObjectExtensions(delta[i].getExtension().getConfigurationElements());
-						break;
-					case IExtensionDelta.REMOVED :
-						removeSharedObjectExtensions(delta[i].getExtension().getConfigurationElements());
-						break;
-				}
-			}
-		}
-	}
-
 }
diff --git a/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF
index 3b53dd4..2859734 100644
--- a/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.sync
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.sync.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
diff --git a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java
index dea9abb..7bd069f 100644
--- a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java
+++ b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java
@@ -13,7 +13,6 @@
 
 import java.util.LinkedList;
 import java.util.List;
-
 import org.eclipse.ecf.core.util.Trace;
 import org.eclipse.ecf.internal.sync.Activator;
 import org.eclipse.ecf.internal.sync.SyncDebugOptions;
@@ -23,16 +22,21 @@
 
 	private static final long serialVersionUID = 2038025022180647210L;
 
+	public static final int TRANSFORM_TYPE_NOT_REPLACE_OR_DELETE = 0;
+	public static final int TRANSFORM_TYPE_DELETE = 1;
+	public static final int TRANSFORM_TYPE_REPLACE = 2;
+
 	// TODO encapsulate in a new ColaOpOriginationState and re-implement equals,
 	// hashCode, i.e. make comparable
 	private final long localOperationsCount;
 	private final long remoteOperationsCount;
 	private final int transformType;
-	
+
 	private boolean splitUp;
 	private List splitUpRepresentation;
 
-	public ColaDocumentChangeMessage(DocumentChangeMessage msg, long localOperationsCount, long remoteOperationsCount) {
+	public ColaDocumentChangeMessage(DocumentChangeMessage msg,
+			long localOperationsCount, long remoteOperationsCount) {
 		super(msg.getOffset(), msg.getLengthOfReplacedText(), msg.getText());
 		this.localOperationsCount = localOperationsCount;
 		this.remoteOperationsCount = remoteOperationsCount;
@@ -40,32 +44,33 @@
 		this.splitUpRepresentation = new LinkedList();
 		if (super.getLengthOfReplacedText() == 0) {
 			// this is neither a replacement, nor a deletion
-			transformType = 0;
+			transformType = TRANSFORM_TYPE_NOT_REPLACE_OR_DELETE;
 		} else {
 			if (super.getText().length() == 0) {
 				// something has been replaced, nothing inserted, must be a
 				// deletion
-				transformType = 1;
+				transformType = TRANSFORM_TYPE_DELETE;
 			} else {
 				// something has been replaced with some new input, has to be a
 				// replacement op
-				transformType = 2;
-				//TODO this has not been implemented yet
-				//throw new IllegalArgumentException("Replacement Handling not implemented yet! Known Bug.");
+				transformType = TRANSFORM_TYPE_REPLACE;
+				// TODO this has not been implemented yet
+				// throw new
+				// IllegalArgumentException("Replacement Handling not implemented yet! Known Bug.");
 			}
 		}
 	}
 
 	public boolean isInsertion() {
-		return (transformType == 0);
+		return (transformType == TRANSFORM_TYPE_NOT_REPLACE_OR_DELETE);
 	}
 
 	public boolean isDeletion() {
-		return (transformType == 1);
+		return (transformType == TRANSFORM_TYPE_DELETE);
 	}
 
 	public boolean isReplacement() {
-		return (transformType == 2);
+		return (transformType == TRANSFORM_TYPE_REPLACE);
 	}
 
 	public long getLocalOperationsCount() {
@@ -77,15 +82,21 @@
 	}
 
 	private ColaTransformationStrategy getTransformationStrategy() {
-		if (isInsertion()) return ColaInsertionTransformationStategy.getInstance();
-		if (isDeletion()) return ColaDeletionTransformationStrategy.getInstance();
+		if (isInsertion())
+			return ColaInsertionTransformationStategy.getInstance();
+		if (isDeletion())
+			return ColaDeletionTransformationStrategy.getInstance();
 		return ColaReplacementTransformationStategy.getInstance();
 	}
-	
-	public ColaDocumentChangeMessage transformAgainst(ColaDocumentChangeMessage localMsg, boolean localMsgHighPrio) {
-		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING, this.getClass(), "transformAgainst", localMsg); //$NON-NLS-1$
-		final ColaDocumentChangeMessage transformedMsg = getTransformationStrategy().getOperationalTransform(this, localMsg, localMsgHighPrio);
-		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING, this.getClass(), "transformAgainst", transformedMsg); //$NON-NLS-1$
+
+	public ColaDocumentChangeMessage transformAgainst(
+			ColaDocumentChangeMessage localMsg, boolean localMsgHighPrio) {
+		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING,
+				this.getClass(), "transformAgainst", localMsg); //$NON-NLS-1$
+		final ColaDocumentChangeMessage transformedMsg = getTransformationStrategy()
+				.getOperationalTransform(this, localMsg, localMsgHighPrio);
+		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING,
+				this.getClass(), "transformAgainst", transformedMsg); //$NON-NLS-1$
 		return transformedMsg;
 	}
 
@@ -99,7 +110,7 @@
 		} else if (transformType == 2) {
 			tType = "replace";
 		}
-		buf.append("transformType="+tType);
+		buf.append("transformType=" + tType);
 		buf.append(";offset=").append(getOffset()); //$NON-NLS-1$ //$NON-NLS-2$
 		buf.append(";length=").append(getLengthOfReplacedText()).append(";text=").append(getText()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
 		buf.append(";operationsCount[local=").append(getLocalOperationsCount()); //$NON-NLS-1$
@@ -123,7 +134,8 @@
 		return splitUpRepresentation;
 	}
 
-	public void addToSplitUpRepresentation(ColaDocumentChangeMessage splitUpRepresentationPart) {
+	public void addToSplitUpRepresentation(
+			ColaDocumentChangeMessage splitUpRepresentationPart) {
 		this.splitUpRepresentation.add(splitUpRepresentationPart);
 	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java
index cd5f236..fe3656c 100644
--- a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java
+++ b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java
@@ -11,29 +11,20 @@
 
 package org.eclipse.ecf.internal.sync.doc.cola;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
+import java.util.*;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IAdapterManager;
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.util.Trace;
 import org.eclipse.ecf.internal.sync.Activator;
 import org.eclipse.ecf.internal.sync.SyncDebugOptions;
-import org.eclipse.ecf.sync.IModelChange;
-import org.eclipse.ecf.sync.IModelChangeMessage;
-import org.eclipse.ecf.sync.IModelSynchronizationStrategy;
-import org.eclipse.ecf.sync.SerializationException;
+import org.eclipse.ecf.sync.*;
 import org.eclipse.ecf.sync.doc.DocumentChangeMessage;
 import org.eclipse.ecf.sync.doc.IDocumentChange;
 import org.eclipse.osgi.util.NLS;
 
-public class ColaSynchronizationStrategy implements IModelSynchronizationStrategy {
+public class ColaSynchronizationStrategy implements
+		IModelSynchronizationStrategy {
 
 	// <ColaDocumentChangeMessage>
 	private final List unacknowledgedLocalOperations;
@@ -51,14 +42,13 @@
 		remoteOperationsCount = 0;
 	}
 
-	public static ColaSynchronizationStrategy getInstanceFor(ID client, boolean isInitiator) {
-		ColaSynchronizationStrategy existingStrategy = (ColaSynchronizationStrategy) sessionStrategies.get(client);
-		if (existingStrategy != null) {
-			Boolean existingStrategyIsInitiator = new Boolean(existingStrategy.isInitiator);
-			if (existingStrategyIsInitiator.equals(new Boolean(isInitiator))) {
-				return existingStrategy;
-			}
-		}
+	public static ColaSynchronizationStrategy getInstanceFor(ID client,
+			boolean isInitiator) {
+		ColaSynchronizationStrategy existingStrategy = (ColaSynchronizationStrategy) sessionStrategies
+				.get(client);
+		if (existingStrategy != null
+				&& existingStrategy.isInitiator == isInitiator)
+			return existingStrategy;
 		existingStrategy = new ColaSynchronizationStrategy(isInitiator);
 		sessionStrategies.put(client, existingStrategy);
 		return existingStrategy;
@@ -71,35 +61,51 @@
 	public static void dispose() {
 		sessionStrategies.clear();
 	}
+
 	/**
-	 * Handles proper transformation of incoming <code>ColaDocumentChangeMessage</code>s.
-	 * Returned <code>DocumentChangeMessage</code>s can be applied directly to the
-	 * shared document. The method implements the concurrency algorithm described
-	 * in <code>http://wiki.eclipse.org/RT_Shared_Editing</code>
-	 * @param remoteMsg 
-	 * @return List contains <code>DocumentChangeMessage</code>s ready for sequential application to document
+	 * Handles proper transformation of incoming
+	 * <code>ColaDocumentChangeMessage</code>s. Returned
+	 * <code>DocumentChangeMessage</code>s can be applied directly to the shared
+	 * document. The method implements the concurrency algorithm described in
+	 * <code>http://wiki.eclipse.org/RT_Shared_Editing</code>
+	 * 
+	 * @param remoteMsg
+	 * @return List contains <code>DocumentChangeMessage</code>s ready for
+	 *         sequential application to document
 	 */
 	public List transformIncomingMessage(final DocumentChangeMessage remoteMsg) {
 		if (!(remoteMsg instanceof ColaDocumentChangeMessage)) {
-			throw new IllegalArgumentException("DocumentChangeMessage is incompatible with Cola SynchronizationStrategy"); //$NON-NLS-1$
+			throw new IllegalArgumentException(
+					"DocumentChangeMessage is incompatible with Cola SynchronizationStrategy"); //$NON-NLS-1$
 		}
-		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING, this.getClass(), "transformIncomingMessage", remoteMsg); //$NON-NLS-1$
+		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING,
+				this.getClass(), "transformIncomingMessage", remoteMsg); //$NON-NLS-1$
 		ColaDocumentChangeMessage transformedRemote = (ColaDocumentChangeMessage) remoteMsg;
 
 		final List transformedRemotes = new LinkedList();
 		transformedRemotes.add(transformedRemote);
 
 		remoteOperationsCount++;
-		Trace.trace(Activator.PLUGIN_ID, "unacknowledgedLocalOperations="+unacknowledgedLocalOperations);
-		//this is where the concurrency algorithm is executed
-		if (!unacknowledgedLocalOperations.isEmpty()) {//Do not remove this. It is necessary. The following iterator does not suffice.
+		Trace.trace(Activator.PLUGIN_ID, "unacknowledgedLocalOperations="
+				+ unacknowledgedLocalOperations);
+		// this is where the concurrency algorithm is executed
+		if (!unacknowledgedLocalOperations.isEmpty()) {// Do not remove this. It
+														// is necessary. The
+														// following iterator
+														// does not suffice.
 			// remove operations from queue that have been implicitly
 			// acknowledged as received on the remote site by the reception of
 			// this message
-			for (final Iterator it = unacknowledgedLocalOperations.iterator(); it.hasNext();) {
-				final ColaDocumentChangeMessage unackedLocalOp = (ColaDocumentChangeMessage) it.next();
-				if (transformedRemote.getRemoteOperationsCount() > unackedLocalOp.getLocalOperationsCount()) {
-					Trace.trace(Activator.PLUGIN_ID, NLS.bind("transformIncomingMessage.removing {0}", unackedLocalOp)); //$NON-NLS-1$
+			for (final Iterator it = unacknowledgedLocalOperations.iterator(); it
+					.hasNext();) {
+				final ColaDocumentChangeMessage unackedLocalOp = (ColaDocumentChangeMessage) it
+						.next();
+				if (transformedRemote.getRemoteOperationsCount() > unackedLocalOp
+						.getLocalOperationsCount()) {
+					Trace.trace(
+							Activator.PLUGIN_ID,
+							NLS.bind(
+									"transformIncomingMessage.removing {0}", unackedLocalOp)); //$NON-NLS-1$
 					it.remove();
 				} else {
 					// the unackowledgedLocalOperations queue is ordered and
@@ -110,7 +116,8 @@
 					// remote operation's view)
 					// is reached, we can abandon the check for the remaining
 					// queue items
-					Trace.trace(Activator.PLUGIN_ID, "breaking out of unackedLocalOperations loop"); //$NON-NLS-1$
+					Trace.trace(Activator.PLUGIN_ID,
+							"breaking out of unackedLocalOperations loop"); //$NON-NLS-1$
 					break;// exits for-loop
 				}
 			}
@@ -119,62 +126,106 @@
 			// don't require to be transformed against
 
 			if (!unacknowledgedLocalOperations.isEmpty()) {
-				ColaDocumentChangeMessage localOp = (ColaDocumentChangeMessage) unacknowledgedLocalOperations.get(0);
-				Assert.isTrue(transformedRemote.getRemoteOperationsCount() == localOp.getLocalOperationsCount());
+				ColaDocumentChangeMessage localOp = (ColaDocumentChangeMessage) unacknowledgedLocalOperations
+						.get(0);
+				Assert.isTrue(transformedRemote.getRemoteOperationsCount() == localOp
+						.getLocalOperationsCount());
 
-				for (final ListIterator unackOpsListIt = unacknowledgedLocalOperations.listIterator(); unackOpsListIt.hasNext();) {
-					for (final ListIterator trafoRemotesIt = transformedRemotes.listIterator(); trafoRemotesIt.hasNext();) {
+				for (final ListIterator unackOpsListIt = unacknowledgedLocalOperations
+						.listIterator(); unackOpsListIt.hasNext();) {
+					for (final ListIterator trafoRemotesIt = transformedRemotes
+							.listIterator(); trafoRemotesIt.hasNext();) {
 						// returns new instance
-						// clarify operation preference, owner/docshare initiator
+						// clarify operation preference, owner/docshare
+						// initiator
 						// consistently comes first
-						localOp = (ColaDocumentChangeMessage) unackOpsListIt.next();
-						transformedRemote = (ColaDocumentChangeMessage) trafoRemotesIt.next();
-						transformedRemote = transformedRemote.transformAgainst(localOp, isInitiator);
+						localOp = (ColaDocumentChangeMessage) unackOpsListIt
+								.next();
+						transformedRemote = (ColaDocumentChangeMessage) trafoRemotesIt
+								.next();
+						transformedRemote = transformedRemote.transformAgainst(
+								localOp, isInitiator);
 
 						if (transformedRemote.isSplitUp()) {
-							//currently this only happens for a remote deletion that needs to be transformed against a locally applied insertion
-							//attention: before applying a list of deletions to docshare, the indices need to be updated/finalized one last time
-							//since deletions can only be applied sequentially and every deletion is going to change the underlying document and the
-							//respective indices!
+							// currently this only happens for a remote deletion
+							// that needs to be transformed against a locally
+							// applied insertion
+							// attention: before applying a list of deletions to
+							// docshare, the indices need to be
+							// updated/finalized one last time
+							// since deletions can only be applied sequentially
+							// and every deletion is going to change the
+							// underlying document and the
+							// respective indices!
 							trafoRemotesIt.remove();
-							for (final Iterator splitUpIterator = transformedRemote.getSplitUpRepresentation().iterator(); splitUpIterator.hasNext();) {
+							for (final Iterator splitUpIterator = transformedRemote
+									.getSplitUpRepresentation().iterator(); splitUpIterator
+									.hasNext();) {
 								trafoRemotesIt.add(splitUpIterator.next());
 							}
-							//according to the ListIterator documentation it seems so as if the following line is unnecessary, 
-							//as a call to next() after the last removal and additions will return what it would have returned anyway 
-							//trafoRemotesIt.next();//TODO not sure about the need for this - I want to jump over the two inserted ops and reach the end of this iterator
+							// according to the ListIterator documentation it
+							// seems so as if the following line is unnecessary,
+							// as a call to next() after the last removal and
+							// additions will return what it would have returned
+							// anyway
+							// trafoRemotesIt.next();//TODO not sure about the
+							// need for this - I want to jump over the two
+							// inserted ops and reach the end of this iterator
 						}
 
-						//TODO check whether or not this collection shuffling does what it is supposed to, i.e. remove current localop in unack list and add split up representation instead
+						// TODO check whether or not this collection shuffling
+						// does what it is supposed to, i.e. remove current
+						// localop in unack list and add split up representation
+						// instead
 						if (localOp.isSplitUp()) {
-							//local operation has been split up during operational transform --> remove current version and add new versions plus jump over those
+							// local operation has been split up during
+							// operational transform --> remove current version
+							// and add new versions plus jump over those
 							unackOpsListIt.remove();
-							for (final Iterator splitUpOpIterator = localOp.getSplitUpRepresentation().iterator(); splitUpOpIterator.hasNext();) {
+							for (final Iterator splitUpOpIterator = localOp
+									.getSplitUpRepresentation().iterator(); splitUpOpIterator
+									.hasNext();) {
 								unackOpsListIt.add(splitUpOpIterator.next());
 							}
-							//according to the ListIterator documentation it seems so as if the following line is unnecessary, 
-							//as a call to next() after the last removal and additions will return what it would have returned anyway
-							//unackOpsListIt.next();//TODO check whether or not this does jump over both inserted operations that replaced the current unack op
-						}//end split up localop handling
-					}//transformedRemotes List iteration	
+							// according to the ListIterator documentation it
+							// seems so as if the following line is unnecessary,
+							// as a call to next() after the last removal and
+							// additions will return what it would have returned
+							// anyway
+							// unackOpsListIt.next();//TODO check whether or not
+							// this does jump over both inserted operations that
+							// replaced the current unack op
+						}// end split up localop handling
+					}// transformedRemotes List iteration
 				}
 			}
 
 		}
-		Trace.exiting(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING, this.getClass(), "transformIncomingMessage", transformedRemote); //$NON-NLS-1$
+		Trace.exiting(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING,
+				this.getClass(), "transformIncomingMessage", transformedRemote); //$NON-NLS-1$
 
-		//TODO find a cleaner and more OO way of cleaning up the list if it contains multiple deletions:
+		// TODO find a cleaner and more OO way of cleaning up the list if it
+		// contains multiple deletions:
 		if (transformedRemotes.size() > 1) {
-			final ColaDocumentChangeMessage firstOp = (ColaDocumentChangeMessage) transformedRemotes.get(0);
+			final ColaDocumentChangeMessage firstOp = (ColaDocumentChangeMessage) transformedRemotes
+					.get(0);
 			if (firstOp.isDeletion()) {
-				//this means all operations in the return list must also be deletions, i.e. modify virtual/optimistic offset for sequential application to document
-				final ListIterator deletionFinalizerIt = transformedRemotes.listIterator();
-				ColaDocumentChangeMessage previousDel = (ColaDocumentChangeMessage) deletionFinalizerIt.next();//jump over first del-op does not need modification, we know this is OK because of previous size check;
+				// this means all operations in the return list must also be
+				// deletions, i.e. modify virtual/optimistic offset for
+				// sequential application to document
+				final ListIterator deletionFinalizerIt = transformedRemotes
+						.listIterator();
+				ColaDocumentChangeMessage previousDel = (ColaDocumentChangeMessage) deletionFinalizerIt
+						.next();// jump over first del-op does not need
+								// modification, we know this is OK because of
+								// previous size check;
 				ColaDocumentChangeMessage currentDel;
 
 				for (; deletionFinalizerIt.hasNext();) {
-					currentDel = (ColaDocumentChangeMessage) deletionFinalizerIt.next();
-					currentDel.setOffset(currentDel.getOffset() - previousDel.getLengthOfReplacedText());
+					currentDel = (ColaDocumentChangeMessage) deletionFinalizerIt
+							.next();
+					currentDel.setOffset(currentDel.getOffset()
+							- previousDel.getLengthOfReplacedText());
 					previousDel = currentDel;
 				}
 			}
@@ -188,48 +239,75 @@
 		return buf.toString();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#registerLocalChange(org.eclipse.ecf.sync.doc.IModelChange)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#registerLocalChange
+	 * (org.eclipse.ecf.sync.doc.IModelChange)
 	 */
 	public IModelChangeMessage[] registerLocalChange(IModelChange localChange) {
 		List results = new ArrayList();
-		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING, this.getClass(), "registerLocalChange", localChange); //$NON-NLS-1$
+		Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING,
+				this.getClass(), "registerLocalChange", localChange); //$NON-NLS-1$
 		if (localChange instanceof IDocumentChange) {
 			final IDocumentChange docChange = (IDocumentChange) localChange;
-			final ColaDocumentChangeMessage colaMsg = new ColaDocumentChangeMessage(new DocumentChangeMessage(docChange.getOffset(), docChange.getLengthOfReplacedText(), docChange.getText()), localOperationsCount, remoteOperationsCount);
-			// If not replacement, we simply add to unacknowledgedLocalOperations and add message
+			final ColaDocumentChangeMessage colaMsg = new ColaDocumentChangeMessage(
+					new DocumentChangeMessage(docChange.getOffset(),
+							docChange.getLengthOfReplacedText(),
+							docChange.getText()), localOperationsCount,
+					remoteOperationsCount);
+			// If not replacement, we simply add to
+			// unacknowledgedLocalOperations and add message
 			// to results
 			if (!colaMsg.isReplacement()) {
 				unacknowledgedLocalOperations.add(colaMsg);
 				localOperationsCount++;
 				results.add(colaMsg);
 			} else {
-				// It *is a replacement message, so we add both a delete and an insert message
+				// It *is a replacement message, so we add both a delete and an
+				// insert message
 				// First create/add a delete message (text set to "")...
-				ColaDocumentChangeMessage delMsg = new ColaDocumentChangeMessage(new DocumentChangeMessage(docChange.getOffset(),docChange.getLengthOfReplacedText(),""), localOperationsCount, remoteOperationsCount);
+				ColaDocumentChangeMessage delMsg = new ColaDocumentChangeMessage(
+						new DocumentChangeMessage(docChange.getOffset(),
+								docChange.getLengthOfReplacedText(), ""),
+						localOperationsCount, remoteOperationsCount);
 				unacknowledgedLocalOperations.add(delMsg);
 				localOperationsCount++;
 				results.add(delMsg);
 				// Then create/add the insert message (length set to 0)
-				ColaDocumentChangeMessage insMsg = new ColaDocumentChangeMessage(new DocumentChangeMessage(docChange.getOffset(),0,docChange.getText()), localOperationsCount, remoteOperationsCount);
+				ColaDocumentChangeMessage insMsg = new ColaDocumentChangeMessage(
+						new DocumentChangeMessage(docChange.getOffset(), 0,
+								docChange.getText()), localOperationsCount,
+						remoteOperationsCount);
 				unacknowledgedLocalOperations.add(insMsg);
 				localOperationsCount++;
 				results.add(insMsg);
 			}
-			Trace.exiting(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING, this.getClass(), "registerLocalChange", colaMsg); //$NON-NLS-1$
+			Trace.exiting(Activator.PLUGIN_ID,
+					SyncDebugOptions.METHODS_EXITING, this.getClass(),
+					"registerLocalChange", colaMsg); //$NON-NLS-1$
 		}
-		return (IModelChangeMessage[]) results.toArray(new IModelChangeMessage[] {});
+		return (IModelChangeMessage[]) results
+				.toArray(new IModelChangeMessage[] {});
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#toDocumentChangeMessage(byte[])
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#
+	 * toDocumentChangeMessage(byte[])
 	 */
-	public IModelChange deserializeRemoteChange(byte[] bytes) throws SerializationException {
+	public IModelChange deserializeRemoteChange(byte[] bytes)
+			throws SerializationException {
 		return DocumentChangeMessage.deserialize(bytes);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#transformRemoteChange(org.eclipse.ecf.sync.doc.IModelChangeMessage)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#
+	 * transformRemoteChange(org.eclipse.ecf.sync.doc.IModelChangeMessage)
 	 */
 	public IModelChange[] transformRemoteChange(IModelChange remoteChange) {
 		if (!(remoteChange instanceof DocumentChangeMessage))
@@ -239,13 +317,17 @@
 		return (IDocumentChange[]) l.toArray(new IDocumentChange[] {});
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
 	 */
 	public Object getAdapter(Class adapter) {
-		if (adapter == null) return null;
+		if (adapter == null)
+			return null;
 		IAdapterManager manager = Activator.getDefault().getAdapterManager();
-		if (manager == null) return null;
+		if (manager == null)
+			return null;
 		return manager.loadAdapter(this, adapter.getName());
 	}
 }
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
index 45fb08b..b201fbc 100644
--- a/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf;singleton:=true
-Bundle-Version: 3.2.0.qualifier
+Bundle-Version: 3.4.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.ECFPlugin
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
@@ -17,7 +17,8 @@
  org.eclipse.ecf.core.start;version="3.1.0",
  org.eclipse.ecf.core.status;version="1.1.0",
  org.eclipse.ecf.core.user;version="3.1.0",
- org.eclipse.ecf.core.util;version="3.2.0",
+ org.eclipse.ecf.core.util;version="3.4.0",
+ org.eclipse.ecf.core.util.reflection;version="2.3.0",
  org.eclipse.ecf.internal.core;x-internal:=true
 Import-Package: org.eclipse.core.runtime.jobs,
  org.eclipse.equinox.concurrent.future;version="1.0.0";resolution:=optional;x-installation:=greedy,
@@ -25,6 +26,7 @@
  org.osgi.service.log;version="1.3.0",
  org.osgi.util.tracker;version="1.3.2"
 Require-Bundle: org.eclipse.equinox.common,
- org.eclipse.equinox.registry,
+ org.eclipse.equinox.registry;resolution:=optional,
  org.eclipse.ecf.identity;visibility:=reexport
 Bundle-ActivationPolicy: lazy
+Provide-Capability: ecf.containertype;names:List<String>=”ecf.base”; version:Version=3.3
diff --git a/framework/bundles/org.eclipse.ecf/javadoc.xml b/framework/bundles/org.eclipse.ecf/javadoc.xml
index 2ec2987..d511599 100644
--- a/framework/bundles/org.eclipse.ecf/javadoc.xml
+++ b/framework/bundles/org.eclipse.ecf/javadoc.xml
@@ -15,7 +15,7 @@
         	author="false" 
         	classpathref="files.classpath" 
         	destdir="${output}" 
-        	doctitle="Eclipse Communication Framework (ECF) 3.7.0" 
+        	doctitle="Eclipse Communication Framework (ECF) 3.8.1" 
         	nodeprecated="false" 
         	nodeprecatedlist="false" 
         	noindex="false" 
@@ -43,6 +43,7 @@
 	        	<exclude name="**/collab/**"/>
 	        	<exclude name="**/osgi/services/discovery/**"/>
 	        	<exclude name="**/com/mycorp/examples/timeservice/**"/>
+	        	<exclude name="**/org.eclipse.ecf.remoteservice.asyncproxy.j8/**"/>
 	        	<exclude name="**/org.eclipse.ecf.remoteservices.tooling.pde/templates/**"/>
         	</fileset>
     	</javadoc>
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/BaseContainer.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/BaseContainer.java
index bf004c7..e35c41a 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/BaseContainer.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/BaseContainer.java
@@ -25,6 +25,12 @@
 public class BaseContainer extends AbstractContainer {
 
 	public static class Instantiator extends BaseContainerInstantiator {
+
+		/**
+		 * @since 3.4
+		 */
+		public static final String NAME = "ecf.base"; //$NON-NLS-1$
+
 		private static long nextBaseContainerID = 0L;
 
 		public IContainer createInstance(ContainerTypeDescription description, Object[] parameters) throws ContainerCreateException {
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java
index c8cd256..96555812 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java
@@ -53,6 +53,13 @@
 		this.hidden = hidden;
 	}
 
+	/**
+	 * @since 3.4
+	 */
+	public ContainerTypeDescription(String name, IContainerInstantiator instantiator) {
+		this(name, instantiator, null);
+	}
+
 	public ContainerTypeDescription(String name, IContainerInstantiator instantiator, String description) {
 		this(name, instantiator, description, false, false);
 	}
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
new file mode 100644
index 0000000..128ade1
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Markus Alexander Kuppe.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Markus Alexander Kuppe (ecf-dev_eclipse.org <at> lemmster <dot> de) - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.core.util.reflection;
+
+import java.lang.reflect.Method;
+import java.util.*;
+
+/**
+ * @since 3.3
+ */
+public class ClassUtil {
+
+	private static Map convertor = new HashMap();
+
+	static {
+		convertor.put(boolean.class, Boolean.class);
+		convertor.put(byte.class, Byte.class);
+		convertor.put(char.class, Character.class);
+		convertor.put(double.class, Double.class);
+		convertor.put(float.class, Float.class);
+		convertor.put(int.class, Integer.class);
+		convertor.put(long.class, Long.class);
+		convertor.put(short.class, Short.class);
+	}
+
+	/**
+	 * @param aClass The Class providing method under question (Must not be null)
+	 * @param aMethodName The method name to search for (Must not be null)
+	 * @param someParameterTypes Method arguments (May be null or parameters)
+	 * @return A match. If more than one method matched (due to overloading) an arbitrary match is taken
+	 * @throws NoSuchMethodException If a match cannot be found
+	 */
+	public static Method getMethod(final Class aClass, String aMethodName, final Class[] someParameterTypes) throws NoSuchMethodException {
+		// no args makes matching simple
+		if (someParameterTypes == null || someParameterTypes.length == 0) {
+			return aClass.getMethod(aMethodName, (Class[]) null);
+		}
+		return getMethod(aClass.getMethods(), aMethodName, someParameterTypes);
+	}
+
+	/**
+	 * @param aClass The Class providing method under question (Must not be null)
+	 * @param aMethodName The method name to search for (Must not be null)
+	 * @param someParameterTypes Method arguments (May be null or parameters)
+	 * @return A match. If more than one method matched (due to overloading) an arbitrary match is taken
+	 * @throws NoSuchMethodException If a match cannot be found
+	 */
+	public static Method getDeclaredMethod(final Class aClass, String aMethodName, final Class[] someParameterTypes) throws NoSuchMethodException {
+		// no args makes matching simple
+		if (someParameterTypes == null || someParameterTypes.length == 0) {
+			return aClass.getDeclaredMethod(aMethodName, (Class[]) null);
+		}
+		return getMethod(aClass.getDeclaredMethods(), aMethodName, someParameterTypes);
+	}
+
+	private static Method getMethod(final Method[] candidates, String aMethodName, final Class[] someParameterTypes) throws NoSuchMethodException {
+		// match parameters to determine callee
+		final int parameterCount = someParameterTypes.length;
+		aMethodName = aMethodName.intern();
+
+		final TreeSet matches = new TreeSet(new MethodComparator(someParameterTypes));
+		OUTER: for (int i = 0; i < candidates.length; i++) {
+			final Method candidate = candidates[i];
+			final String candidateMethodName = candidate.getName().intern();
+			final Class[] candidateParameterTypes = candidate.getParameterTypes();
+			final int candidateParameterCount = candidateParameterTypes.length;
+			if (candidateParameterCount == parameterCount && aMethodName == candidateMethodName) {
+				for (int j = 0; j < candidateParameterCount; j++) {
+					final Class clazzA = candidateParameterTypes[j];
+					final Class clazzB = someParameterTypes[j];
+					if (clazzB != null && !isAssignableFrom(clazzA, clazzB)) {
+						continue OUTER;
+					}
+				}
+				matches.add(candidate);
+			}
+		}
+
+		// if no match has been found, fail with NSME
+		if (matches.size() == 0) {
+			throw new NoSuchMethodException("No such method: " + aMethodName + "(" + Arrays.asList(someParameterTypes) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
+		return (Method) matches.first();
+	}
+
+	// extends Class.isAssingable(Class) with autoboxing
+	private static boolean isAssignableFrom(Class clazzA, Class clazzB) {
+		if (!(clazzA.isPrimitive() ^ clazzB.isPrimitive())) {
+			return clazzA.isAssignableFrom(clazzB);
+		} else if (clazzA.isPrimitive()) {
+			final Class oClazzA = (Class) convertor.get(clazzA);
+			return oClazzA.isAssignableFrom(clazzB);
+		} else {
+			final Class oClazzB = (Class) convertor.get(clazzB);
+			return clazzA.isAssignableFrom(oClazzB);
+		}
+	}
+
+	private static class MethodComparator implements Comparator {
+
+		private final Class[] parameterTypes;
+
+		public MethodComparator(Class[] someParameterTypes) {
+			parameterTypes = someParameterTypes;
+		}
+
+		public int compare(Object object1, Object object2) {
+			final Class[] pt1 = ((Method) object1).getParameterTypes();
+			final Class[] pt2 = ((Method) object2).getParameterTypes();
+
+			if (Arrays.equals(pt1, pt2)) {
+				return 0;
+			} else if (Arrays.equals(parameterTypes, pt1)) {
+				return -1;
+			} else {
+				return 1;
+			}
+		}
+	}
+}
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java
index c36c030..151df0d 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/internal/core/ECFPlugin.java
@@ -19,6 +19,7 @@
 import org.osgi.framework.*;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
 public class ECFPlugin implements BundleActivator {
 
@@ -67,13 +68,13 @@
 	// The shared instance.
 	private static ECFPlugin plugin;
 
-	private BundleContext context = null;
-
-	private ServiceTracker extensionRegistryTracker = null;
+	BundleContext context = null;
 
 	private Map disposables = new WeakHashMap();
 
-	private IRegistryChangeListener registryManager = null;
+	// This is Object rather than IExtensionRegistryManager to avoid loading 
+	// IRegistryChangeListener class (optional)
+	Object registryManager = null;
 
 	private ServiceRegistration containerFactoryServiceRegistration;
 
@@ -83,7 +84,7 @@
 
 	private LogService logService = null;
 
-	private ServiceTracker adapterManagerTracker = null;
+	private AdapterManagerTracker adapterManagerTracker = null;
 
 	private BundleActivator ecfTrustManager;
 
@@ -92,9 +93,8 @@
 	 * @return ECFPlugin
 	 */
 	public synchronized static ECFPlugin getDefault() {
-		if (plugin == null) {
+		if (plugin == null)
 			plugin = new ECFPlugin();
-		}
 		return plugin;
 	}
 
@@ -117,14 +117,62 @@
 			log(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), "Unexpected Error in ECFPlugin.start", t)); //$NON-NLS-1$
 		}
 
-		this.extensionRegistryTracker = new ServiceTracker(ctxt, IExtensionRegistry.class.getName(), null);
-		this.extensionRegistryTracker.open();
-		final IExtensionRegistry registry = getExtensionRegistry();
-		if (registry != null) {
-			this.registryManager = new ECFRegistryManager();
-			registry.addRegistryChangeListener(registryManager);
+		// initialize from ContainerTypeDescription services
+		if (containerTypeDescriptionTracker == null) {
+			containerTypeDescriptionTracker = new ServiceTracker(this.context, ContainerTypeDescription.class.getName(), new ServiceTrackerCustomizer() {
+				public Object addingService(ServiceReference reference) {
+					ContainerTypeDescription ctd = (ContainerTypeDescription) context.getService(reference);
+					if (ctd != null && ctd.getName() != null)
+						ContainerFactory.getDefault().addDescription(ctd);
+					return ctd;
+				}
+
+				public void modifiedService(ServiceReference reference, Object service) {
+					// nothing
+				}
+
+				public void removedService(ServiceReference reference, Object service) {
+					IContainerFactory cf = ContainerFactory.getDefault();
+					cf.removeDescription((ContainerTypeDescription) service);
+				}
+			});
+			containerTypeDescriptionTracker.open();
 		}
 
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithRegistry(IExtensionRegistry registry) throws Exception {
+				if (registry != null) {
+					registryManager = new IRegistryChangeListener() {
+						public void registryChanged(IRegistryChangeEvent event) {
+							final IExtensionDelta factoryDeltas[] = event.getExtensionDeltas(ECFNAMESPACE, CONTAINER_FACTORY_NAME);
+							for (int i = 0; i < factoryDeltas.length; i++) {
+								switch (factoryDeltas[i].getKind()) {
+									case IExtensionDelta.ADDED :
+										addContainerFactoryExtensions(factoryDeltas[i].getExtension().getConfigurationElements());
+										break;
+									case IExtensionDelta.REMOVED :
+										removeContainerFactoryExtensions(factoryDeltas[i].getExtension().getConfigurationElements());
+										break;
+								}
+							}
+							final IExtensionDelta containerDeltas[] = event.getExtensionDeltas(ECFNAMESPACE, CONTAINER_NAME);
+							for (int i = 0; i < containerDeltas.length; i++) {
+								switch (containerDeltas[i].getKind()) {
+									case IExtensionDelta.ADDED :
+										addContainerExtensions(containerDeltas[i].getExtension().getConfigurationElements());
+										break;
+									case IExtensionDelta.REMOVED :
+										removeContainerExtensions(containerDeltas[i].getExtension().getConfigurationElements());
+										break;
+								}
+							}
+						}
+					};
+					registry.addRegistryChangeListener((IRegistryChangeListener) registryManager);
+				}
+			}
+		});
+
 		// defer extension execution until first consumer calls
 		final ServiceFactory sf = new ServiceFactory() {
 			public Object getService(Bundle bundle, ServiceRegistration registration) {
@@ -135,25 +183,91 @@
 				// NOP
 			}
 		};
+
 		containerFactoryServiceRegistration = ctxt.registerService(IContainerFactory.class.getName(), sf, null);
 		containerManagerServiceRegistration = ctxt.registerService(IContainerManager.class.getName(), sf, null);
 
-		// but eagerly start ECF startup extension
-		setupStartExtensionPoint(context);
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithRegistry(IExtensionRegistry registry) throws Exception {
+				if (registry != null) {
+					final IExtensionPoint extensionPoint = registry.getExtensionPoint(START_EPOINT);
+					if (extensionPoint == null) {
+						return;
+					}
+					IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements();
+					final String method = "runStartExtensions"; //$NON-NLS-1$
+					// For each configuration element
+					for (int m = 0; m < configurationElements.length; m++) {
+						final IConfigurationElement member = configurationElements[m];
+						try {
+							// The only required attribute is "class"
+							boolean sync = (member.getAttribute(ASYNCH_ATTRIBUTE) == null);
+							IECFStart clazz = (IECFStart) member.createExecutableExtension(CLASS_ATTRIBUTE);
+							// Create job to do start, and schedule
+							if (sync) {
+								IStatus result = null;
+								try {
+									result = clazz.run(new NullProgressMonitor());
+								} catch (final Throwable e) {
+									final String message = "startup extension error"; //$NON-NLS-1$
+									logException(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, message, e), message, e);
+								}
+								if (result != null && !result.isOK())
+									logException(result, result.getMessage(), result.getException());
+							} else {
+								final ECFStartJob job = new ECFStartJob(clazz.getClass().getName(), clazz);
+								job.schedule();
+							}
+						} catch (final CoreException e) {
+							logException(e.getStatus(), method, e);
+						} catch (final Exception e) {
+							logException(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), IStatus.ERROR, "Unknown start exception", e), method, e); //$NON-NLS-1$
+						}
+					}
+				}
+			}
+		});
+
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithoutRegistry() throws Exception {
+				ECFPlugin.this.context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(BaseContainer.Instantiator.NAME, new BaseContainer.Instantiator()), null);
+			}
+		});
 	}
 
+	private ServiceTracker containerTypeDescriptionTracker;
+
 	public void initializeExtensions() {
-		setupContainerFactoryExtensionPoint(context);
-		setupContainerExtensionPoint(context);
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithRegistry(IExtensionRegistry registry) throws Exception {
+				if (registry != null) {
+					IExtensionPoint extensionPoint = registry.getExtensionPoint(CONTAINER_FACTORY_EPOINT);
+					if (extensionPoint == null)
+						return;
+					addContainerFactoryExtensions(extensionPoint.getConfigurationElements());
+					extensionPoint = registry.getExtensionPoint(CONTAINER_EPOINT);
+					if (extensionPoint == null)
+						return;
+					addContainerExtensions(extensionPoint.getConfigurationElements());
+				}
+			}
+		});
 	}
 
 	public void stop(BundleContext ctxt) throws Exception {
 		fireDisposables();
 		this.disposables = null;
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null)
-			reg.removeRegistryChangeListener(registryManager);
+		SafeRunner.run(new ExtensionRegistryRunnable(ctxt) {
+			protected void runWithRegistry(IExtensionRegistry registry) throws Exception {
+				if (registry != null)
+					registry.removeRegistryChangeListener((IRegistryChangeListener) registryManager);
+			}
+		});
 		this.registryManager = null;
+		if (containerTypeDescriptionTracker != null) {
+			containerTypeDescriptionTracker.close();
+			containerTypeDescriptionTracker = null;
+		}
 		if (ecfTrustManager != null) {
 			ecfTrustManager.stop(ctxt);
 			ecfTrustManager = null;
@@ -163,10 +277,6 @@
 			logServiceTracker = null;
 			logService = null;
 		}
-		if (extensionRegistryTracker != null) {
-			extensionRegistryTracker.close();
-			extensionRegistryTracker = null;
-		}
 		if (containerFactoryServiceRegistration != null) {
 			containerFactoryServiceRegistration.unregister();
 			containerFactoryServiceRegistration = null;
@@ -411,136 +521,15 @@
 		return results;
 	}
 
-	/**
-	 * Setup container factory extension point
-	 * 
-	 * @param bc
-	 *            the BundleContext for this bundle
-	 */
-	protected void setupContainerFactoryExtensionPoint(BundleContext bc) {
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null) {
-			final IExtensionPoint extensionPoint = reg.getExtensionPoint(CONTAINER_FACTORY_EPOINT);
-			if (extensionPoint == null) {
-				return;
-			}
-			addContainerFactoryExtensions(extensionPoint.getConfigurationElements());
-		}
-	}
-
-	protected void setupContainerExtensionPoint(BundleContext bc) {
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null) {
-			final IExtensionPoint extensionPoint = reg.getExtensionPoint(CONTAINER_EPOINT);
-			if (extensionPoint == null) {
-				return;
-			}
-			addContainerExtensions(extensionPoint.getConfigurationElements());
-		}
-	}
-
-	public IExtensionRegistry getExtensionRegistry() {
-		if (context == null)
-			return null;
-		return (IExtensionRegistry) extensionRegistryTracker.getService();
-	}
-
-	/**
-	 * Setup start extension point
-	 * 
-	 * @param bc
-	 *            the BundleContext for this bundle
-	 */
-	protected void setupStartExtensionPoint(BundleContext bc) {
-		final IExtensionRegistry reg = getExtensionRegistry();
-		if (reg != null) {
-			final IExtensionPoint extensionPoint = reg.getExtensionPoint(START_EPOINT);
-			if (extensionPoint == null) {
-				return;
-			}
-			runStartExtensions(extensionPoint.getConfigurationElements());
-		}
-	}
-
-	protected void runStartExtensions(IConfigurationElement[] configurationElements) {
-		final String method = "runStartExtensions"; //$NON-NLS-1$
-		// For each configuration element
-		for (int m = 0; m < configurationElements.length; m++) {
-			final IConfigurationElement member = configurationElements[m];
-			try {
-				// The only required attribute is "class"
-				boolean sync = (member.getAttribute(ASYNCH_ATTRIBUTE) == null);
-				IECFStart clazz = (IECFStart) member.createExecutableExtension(CLASS_ATTRIBUTE);
-				startExtension(clazz.getClass().getName(), clazz, sync);
-			} catch (final CoreException e) {
-				logException(e.getStatus(), method, e);
-			} catch (final Exception e) {
-				logException(new Status(IStatus.ERROR, getDefault().getBundle().getSymbolicName(), IStatus.ERROR, "Unknown start exception", e), method, e); //$NON-NLS-1$
-			}
-		}
-	}
-
-	private void startExtension(String name, IECFStart exten, boolean synchronous) {
-		// Create job to do start, and schedule
-		if (synchronous) {
-			IStatus result = null;
-			try {
-				result = exten.run(new NullProgressMonitor());
-			} catch (final Throwable e) {
-				final String message = "startup extension error"; //$NON-NLS-1$
-				logException(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, message, e), message, e);
-			}
-			if (result != null && !result.isOK())
-				logException(result, result.getMessage(), result.getException());
-		} else {
-			final ECFStartJob job = new ECFStartJob(name, exten);
-			job.schedule();
-		}
-	}
-
-	protected class ECFRegistryManager implements IRegistryChangeListener {
-		public void registryChanged(IRegistryChangeEvent event) {
-			final IExtensionDelta factoryDeltas[] = event.getExtensionDeltas(ECFNAMESPACE, CONTAINER_FACTORY_NAME);
-			for (int i = 0; i < factoryDeltas.length; i++) {
-				switch (factoryDeltas[i].getKind()) {
-					case IExtensionDelta.ADDED :
-						addContainerFactoryExtensions(factoryDeltas[i].getExtension().getConfigurationElements());
-						break;
-					case IExtensionDelta.REMOVED :
-						removeContainerFactoryExtensions(factoryDeltas[i].getExtension().getConfigurationElements());
-						break;
-				}
-			}
-			final IExtensionDelta containerDeltas[] = event.getExtensionDeltas(ECFNAMESPACE, CONTAINER_NAME);
-			for (int i = 0; i < containerDeltas.length; i++) {
-				switch (containerDeltas[i].getKind()) {
-					case IExtensionDelta.ADDED :
-						addContainerExtensions(containerDeltas[i].getExtension().getConfigurationElements());
-						break;
-					case IExtensionDelta.REMOVED :
-						removeContainerExtensions(containerDeltas[i].getExtension().getConfigurationElements());
-						break;
-				}
-			}
-		}
-	}
-
 	public IAdapterManager getAdapterManager() {
 		if (context == null)
 			return null;
 		// First, try to get the adapter manager via
 		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
+			adapterManagerTracker = new AdapterManagerTracker(this.context);
 			adapterManagerTracker.open();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		if (adapterManager == null)
-			getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$
-		return adapterManager;
+		return adapterManagerTracker.getAdapterManager();
 	}
 
 }
\ No newline at end of file
diff --git a/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF b/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF
index 6e41c80..078398f 100644
--- a/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF
+++ b/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF
@@ -19,4 +19,4 @@
  org.osgi.service.remoteserviceadmin;version="1.0",
  org.osgi.util.tracker
 Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
diff --git a/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF b/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF
index 7ba8ad8..49d9651 100644
--- a/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF
+++ b/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF
@@ -7,5 +7,5 @@
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.200"
+Require-Bundle: org.eclipse.equinox.common
 Bundle-ClassPath: .
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF
index 46e42a4..af0491c 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ECF Remote Service Admin Proxy
+Bundle-Name: ECF RemoteServiceAdmin Proxy
 Bundle-SymbolicName: org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy
 Bundle-Version: 1.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index 89aa375..51e4650 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -9,7 +9,7 @@
 Bundle-Localization: bundle
 Export-Package: org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;x-internal:=true,
  org.eclipse.ecf.osgi.services.remoteserviceadmin;version="1.0.0"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
+Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy;bundle-version="1.0.0"
 Import-Package: javax.xml.parsers,
  org.eclipse.ecf.core;version="3.0.0",
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
index 390af02..51410bb 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
@@ -6,5 +6,5 @@
 # Contributors:
 #   Composent, Inc. - initial API and implementation
 #################################################################################
-bundle.name=ECF OSGi R4.2 Remote Service Admin
+bundle.name=ECF RemoteServiceAdmin Implementation
 bundle.provider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
index d27853a..4307791 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
@@ -43,6 +43,7 @@
 import org.osgi.framework.Version;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
 public class Activator implements BundleActivator {
 
@@ -64,7 +65,9 @@
 	}
 
 	private ServiceRegistration remoteServiceAdminRegistration;
-
+	private Dictionary rsaProps;
+	private ServiceTracker<ContainerTypeDescription,ContainerTypeDescription> ctdTracker;
+	
 	private EndpointDescriptionLocator endpointDescriptionLocator;
 	private ServiceRegistration<?> iServiceInfoFactoryRegistration;
 
@@ -115,35 +118,65 @@
 	private Map<Bundle, RemoteServiceAdmin> remoteServiceAdmins = new HashMap<Bundle, RemoteServiceAdmin>(
 			1);
 
-	private String[][] getSupportedConfigsAndIntents() {
-		IContainerManager containerManager = getContainerManager();
-		Assert.isNotNull(containerManager,
-				"Container manager must be present to start ECF Remote Service Admin"); //$NON-NLS-1$
-		ContainerTypeDescription[] remoteServiceDescriptions = containerManager
-				.getContainerFactory().getDescriptionsForContainerAdapter(
-						IRemoteServiceContainerAdapter.class);
-		List<String> supportedConfigs = new ArrayList<String>();
-		List<String> supportedIntents = new ArrayList<String>();
-		for (int i = 0; i < remoteServiceDescriptions.length; i++) {
-			String[] descSupportedConfigs = remoteServiceDescriptions[i]
-					.getSupportedConfigs();
-			if (descSupportedConfigs != null) {
-				for (int j = 0; j < descSupportedConfigs.length; j++)
-					supportedConfigs.add(descSupportedConfigs[j]);
-				String[] descSupportedIntents = remoteServiceDescriptions[i]
-						.getSupportedIntents();
-				for (int j = 0; j < descSupportedIntents.length; j++)
-					supportedIntents.add(descSupportedIntents[j]);
-			}
-		}
-		String[][] result = new String[2][];
-		result[0] = supportedConfigs
-				.toArray(new String[supportedConfigs.size()]);
-		result[1] = supportedIntents
-				.toArray(new String[supportedIntents.size()]);
-		return result;
-	}
+	private void removeSupportedConfigsAndIntents(ContainerTypeDescription ctd) {
+		String[] remoteConfigsSupported = (String[]) rsaProps.get(
+				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);
+		List<String> rcs = new ArrayList<String>();
+		if (remoteConfigsSupported != null) 
+			for(int i=0; i < remoteConfigsSupported.length; i++) rcs.add(remoteConfigsSupported[i]);
+		String[] remoteIntentsSupported = (String[]) rsaProps.get(
+				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED);
+		List<String> ris = new ArrayList<String>();
+		if (remoteIntentsSupported != null) 
+			for(int i=0; i < remoteIntentsSupported.length; i++) ris.add(remoteIntentsSupported[i]);
 
+		String[] descSupportedConfigs = ctd.getSupportedConfigs();
+		if (descSupportedConfigs != null) {
+			for (int j = 0; j < descSupportedConfigs.length; j++)
+				rcs.remove(descSupportedConfigs[j]);
+			String[] descSupportedIntents = ctd.getSupportedIntents();
+			for (int j = 0; j < descSupportedIntents.length; j++)
+				ris.remove(descSupportedIntents);
+		}
+		// set rsaProps to new values
+		rsaProps.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED, rcs.toArray(new String[rcs.size()]));
+		rsaProps.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED, ris.toArray(new String[ris.size()]));
+	}
+	
+	void addSupportedConfigsAndIntents(ContainerTypeDescription desc) {
+		// Get the existing remoteConfigsSupported from rsaProps
+		String[] remoteConfigsSupported = (String[]) rsaProps.get(
+				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);
+		// Add all the existing to rcs list
+		List<String> rcs = new ArrayList<String>();
+		if (remoteConfigsSupported != null) 
+			for(int i=0; i < remoteConfigsSupported.length; i++) rcs.add(remoteConfigsSupported[i]);
+		// Get the existing remoteIntentsSupported from rsaProps
+		String[] remoteIntentsSupported = (String[]) rsaProps.get(
+				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED);
+		// Add all the existing to ris list
+		List<String> ris = new ArrayList<String>();
+		if (remoteIntentsSupported != null) 
+			for(int i=0; i < remoteIntentsSupported.length; i++) ris.add(remoteIntentsSupported[i]);
+
+		// Get the supported configs from the given description
+		String[] descSupportedConfigs = desc.getSupportedConfigs();
+		
+		if (descSupportedConfigs != null) {
+			// Add all supported configs...as long as they are not already present
+			for (int j = 0; j < descSupportedConfigs.length; j++)
+				if (!rcs.contains(descSupportedConfigs[j])) rcs.add(descSupportedConfigs[j]);
+			// Get supported intents
+			String[] descSupportedIntents = desc.getSupportedIntents();
+			// Add them all
+			for (int j = 0; j < descSupportedIntents.length; j++)
+				ris.add(descSupportedIntents[j]);
+		}
+		// set rsaProps to new values
+		rsaProps.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED, rcs.toArray(new String[rcs.size()]));
+		rsaProps.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED, ris.toArray(new String[ris.size()]));
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -163,16 +196,22 @@
 		initializeProxyServiceFactoryBundle();
 
 		// make remote service admin available
-		Properties rsaProps = new Properties();
+		rsaProps = new Properties();
 		rsaProps.put(RemoteServiceAdmin.SERVICE_PROP, new Boolean(true));
-		String[][] supportedConfigsAndIntents = getSupportedConfigsAndIntents();
-		rsaProps.put(
-				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,
-				supportedConfigsAndIntents[0]);
-		rsaProps.put(
-				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED,
-				supportedConfigsAndIntents[1]);
+		
+		IContainerManager containerManager = getContainerManager();
+		Assert.isNotNull(containerManager,
+				"Container manager service must be present to start ECF Remote Service Admin"); //$NON-NLS-1$
+		
+		ContainerTypeDescription[] remoteServiceDescriptions = containerManager
+				.getContainerFactory().getDescriptionsForContainerAdapter(
+						IRemoteServiceContainerAdapter.class);
+		// The following adds the standard supported configs and supported intents
+		// values for all remote service descriptions to rsaProps
+		for (int i = 0; i < remoteServiceDescriptions.length; i++) 
+			addSupportedConfigsAndIntents(remoteServiceDescriptions[i]);
 
+		// Register Remote Service Admin factory, with rsaProps
 		remoteServiceAdminRegistration = context.registerService(
 				org.osgi.service.remoteserviceadmin.RemoteServiceAdmin.class
 						.getName(), new ServiceFactory() {
@@ -202,6 +241,41 @@
 					}
 				}, (Dictionary) rsaProps);
 
+		ctdTracker = new ServiceTracker<ContainerTypeDescription,ContainerTypeDescription>(context,ContainerTypeDescription.class,new ServiceTrackerCustomizer<ContainerTypeDescription,ContainerTypeDescription>() {
+			public ContainerTypeDescription addingService(
+					ServiceReference<ContainerTypeDescription> reference) {
+				ContainerTypeDescription ctd = null;
+				if (reference != null && context != null) {
+					ctd = context.getService(reference);
+					if (ctd != null) {
+						// Add any new supported configs to rsaProps
+						addSupportedConfigsAndIntents(ctd);
+						if (remoteServiceAdminRegistration != null) 
+							// Set the new properties for remoteServiceRegistration
+							remoteServiceAdminRegistration.setProperties(rsaProps);
+					}
+				} 
+				return ctd;
+			}
+
+			public void modifiedService(
+					ServiceReference<ContainerTypeDescription> reference,
+					ContainerTypeDescription service) {
+			}
+
+			public void removedService(
+					ServiceReference<ContainerTypeDescription> reference,
+					ContainerTypeDescription service) {
+				if (remoteServiceAdminRegistration != null && service != null) {
+					// Remove supported configs and intents from rsaProps
+					removeSupportedConfigsAndIntents(service);
+					// Reset properties for remoteServiceAdmin
+					remoteServiceAdminRegistration.setProperties(rsaProps);
+				}
+			}
+});
+		ctdTracker.open();
+		
 		// create endpoint description locator
 		endpointDescriptionLocator = new EndpointDescriptionLocator(context);
 		// create and register endpoint description advertiser
@@ -239,6 +313,10 @@
 			endpointDescriptionLocator.close();
 			endpointDescriptionLocator = null;
 		}
+		if (ctdTracker != null) {
+			ctdTracker.close();
+			ctdTracker = null;
+		}
 		if (remoteServiceAdminRegistration != null) {
 			remoteServiceAdminRegistration.unregister();
 			remoteServiceAdminRegistration = null;
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
index 486c30c..e0fc1b6 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
@@ -36,6 +36,11 @@
 					// OSGi properties
 					org.osgi.framework.Constants.OBJECTCLASS,
 					org.osgi.framework.Constants.SERVICE_ID,
+					// Adding these for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=433799
+					// Adding them as strings because old version of Constants class (pre R6)
+					// Don't have them
+					"service.bundleid", //$NON-NLS-1$ 
+					"service.scope", //$NON-NLS-1$
 					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID,
 					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
 					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,
@@ -59,7 +64,9 @@
 			RemoteConstants.DISCOVERY_SCOPE,
 			RemoteConstants.DISCOVERY_SERVICE_NAME,
 			RemoteConstants.ENDPOINT_CONNECTTARGET_ID,
+			RemoteConstants.ENDPOINT_ID,
 			RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
+			RemoteConstants.ENDPOINT_TIMESTAMP,
 			RemoteConstants.ENDPOINT_IDFILTER_IDS,
 			RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
 			RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT,
@@ -117,15 +124,11 @@
 		return getExportedInterfaces(serviceReference);
 	}
 
-	private static String[] getExportedInterfaces(
-			ServiceReference serviceReference, Object propValue) {
-		if (propValue == null)
-			return null;
-		String[] objectClass = (String[]) serviceReference
-				.getProperty(org.osgi.framework.Constants.OBJECTCLASS);
+	public static String[] getMatchingInterfaces(String[] origin, Object propValue) {
+		if (propValue == null || origin == null) return null;
 		boolean wildcard = propValue.equals("*"); //$NON-NLS-1$
 		if (wildcard)
-			return objectClass;
+			return origin;
 		else {
 			final String[] stringArrayValue = getStringArrayFromPropertyValue(propValue);
 			if (stringArrayValue == null)
@@ -133,11 +136,20 @@
 			else if (stringArrayValue.length == 1
 					&& stringArrayValue[0].equals("*")) { //$NON-NLS-1$
 				// this will support the idiom: new String[] { "*" }
-				return objectClass;
+				return origin;
 			} else
 				return stringArrayValue;
 		}
 	}
+	
+	private static String[] getExportedInterfaces(
+			ServiceReference serviceReference, Object propValue) {
+		if (propValue == null)
+			return null;
+		String[] objectClass = (String[]) serviceReference
+				.getProperty(org.osgi.framework.Constants.OBJECTCLASS);
+		return getMatchingInterfaces(objectClass,propValue);
+	}
 
 	public static String[] getExportedInterfaces(
 			ServiceReference serviceReference) {
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
index 90c19e6..f016298 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
@@ -187,19 +187,36 @@
 				endpointDescriptionProperties);
 
 		// remote service id
-		Long remoteServiceId = decodeLong(discoveredServiceProperties,
-				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
-		endpointDescriptionProperties.put(
-				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
-				remoteServiceId);
 		String containerIDNamespace = decodeString(discoveredServiceProperties,
 				RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
 		if (containerIDNamespace != null) {
+			// remote service id
+			Long remoteServiceId = decodeLong(discoveredServiceProperties,
+					org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
+			if (remoteServiceId != null)
+				endpointDescriptionProperties.put(
+					org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
+					remoteServiceId);
+			
 			// container id namespace
 			endpointDescriptionProperties.put(
 					RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
 					containerIDNamespace);
 
+			// ecf endpoint id
+			String ecfEndpointId = decodeString(discoveredServiceProperties,
+					RemoteConstants.ENDPOINT_ID);
+			if (ecfEndpointId != null)
+				endpointDescriptionProperties.put(RemoteConstants.ENDPOINT_ID,
+						ecfEndpointId);			
+			
+			// timestamp
+			Long timestamp = decodeLong(discoveredServiceProperties,
+					RemoteConstants.ENDPOINT_TIMESTAMP);
+			if (timestamp != null)
+				endpointDescriptionProperties.put(
+						RemoteConstants.ENDPOINT_TIMESTAMP, timestamp);
+			
 			// connect target ID
 			String connectTargetIDName = decodeString(
 					discoveredServiceProperties,
@@ -229,6 +246,15 @@
 						RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
 						remoteServiceFilter);
 
+			List<String> asyncInterfaces = decodeList(
+					discoveredServiceProperties,
+					RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES);
+			if (asyncInterfaces != null && asyncInterfaces.size() > 0)
+				endpointDescriptionProperties.put(
+						RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES,
+						asyncInterfaces.toArray(new String[asyncInterfaces
+								.size()]));
+			
 		}
 		// Finally, fill out other properties
 		decodeNonStandardServiceProperties(discoveredServiceProperties,
@@ -353,6 +379,11 @@
 						org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
 						rsId);
 
+			String ecfEndpointId = (String) ecfEd.getProperties().get(
+					RemoteConstants.ENDPOINT_ID);
+			if (ecfEndpointId != null)
+				encodeString(result, RemoteConstants.ENDPOINT_ID, ecfEndpointId);
+			
 			// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE
 			String containerIDNamespace = ecfEd.getIdNamespace();
 			if (containerIDNamespace != null)
@@ -360,6 +391,12 @@
 						RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
 						containerIDNamespace);
 
+			Long timestamp = (Long) ecfEd.getProperties().get(
+					RemoteConstants.ENDPOINT_TIMESTAMP);
+			if (timestamp != null)
+				encodeLong(result, RemoteConstants.ENDPOINT_TIMESTAMP,
+						timestamp);
+			
 			// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_CONNECTTARGET_ID
 			ID connectTargetID = ecfEd.getConnectTargetID();
 			if (connectTargetID != null)
@@ -382,6 +419,10 @@
 				encodeString(result,
 						RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
 						remoteFilter);
+			
+			List<String> asyncTypes = ecfEd.getAsyncInterfaces();
+			if (asyncTypes != null && asyncTypes.size() > 0)
+				encodeList(result, RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES, asyncTypes);
 		}
 		// encode non standard properties
 		encodeNonStandardServiceProperties(endpointDescription.getProperties(),
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
index 074f976..e77f8c7 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
@@ -9,6 +9,7 @@
  ******************************************************************************/
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -58,9 +59,14 @@
 			new HashMap<org.osgi.service.remoteserviceadmin.EndpointDescription, ServiceRegistration<IServiceInfo>>();
 	private final ReentrantLock registrationLock;
 	
+	private boolean requireServiceExportedConfigs = new Boolean(
+			System.getProperty(
+					"org.eclipse.ecf.osgi.services.remoteserviceadmin.AbstractTopologyManager.requireServiceExportedConfigs", //$NON-NLS-1$
+					"false")).booleanValue(); //$NON-NLS-1$
+	
 	public AbstractTopologyManager(BundleContext context) {
 		serviceInfoFactoryTracker = new ServiceTracker(
-				Activator.getContext(), createISIFFilter(Activator.getContext()), null);
+				context, createISIFFilter(context), null);
 		serviceInfoFactoryTracker.open();
 		this.context = context;
 		// Use a FAIR lock here to guarantee that an endpoint removed operation
@@ -393,14 +399,25 @@
 	}
 
 	protected void handleServiceRegistering(ServiceReference serviceReference) {
-		// Using OSGI 4.2 Chap 13 Remote Services spec, get the specified remote
+		// Using OSGI 5 Chap 13 Remote Services spec, get the specified remote
 		// interfaces for the given service reference
 		String[] exportedInterfaces = PropertiesUtil
 				.getExportedInterfaces(serviceReference);
 		// If no remote interfaces set, then we don't do anything with it
 		if (exportedInterfaces == null)
 			return;
-
+		
+		// Get serviceExportedConfigs property
+		String[] serviceExportedConfigs = PropertiesUtil
+				.getStringArrayFromPropertyValue(serviceReference
+						.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS));
+		// If requireServiceExportedConfigs is set to true (default is false) then if serviceExportedConfigs 
+		// is null/not set, then we don't do anything with this service registration
+		if (requireServiceExportedConfigs
+				&& (serviceExportedConfigs == null || Arrays.asList(
+						serviceExportedConfigs).size() == 0))
+			return;
+		// If we get this far, then we are going to export it
 		// prepare export properties
 		Map<String, Object> exportProperties = new TreeMap<String, Object>(
 				String.CASE_INSENSITIVE_ORDER);
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
index efca0b0..9dc0c45 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
@@ -10,6 +10,7 @@
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -17,8 +18,12 @@
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDCreateException;
 import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;
+import org.eclipse.ecf.remoteservice.Constants;
+import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.Version;
 
@@ -43,8 +48,13 @@
 public class EndpointDescription extends
 		org.osgi.service.remoteserviceadmin.EndpointDescription {
 
+	private String ecfid;
+	private Long timestamp;
 	private String idNamespace;
 	private ID containerID;
+	private Long rsId;
+	private List<String> asyncInterfaces;
+	
 	private ID connectTargetID;
 	private ID[] idFilter;
 	private String rsFilter;
@@ -92,11 +102,72 @@
 	}
 
 	private void verifyECFProperties() {
+		this.ecfid = verifyStringProperty(RemoteConstants.ENDPOINT_ID);
+		if (this.ecfid == null) {
+			LogUtility
+					.logWarning(
+							"verifyECFProperties", DebugOptions.ENDPOINT_DESCRIPTION_READER, EndpointDescription.class, "ECFEndpointDescription property " + RemoteConstants.ENDPOINT_ID + " not set.  Using OSGI endpoint.id value"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+			this.ecfid = getId();
+		}
+		this.timestamp = verifyLongProperty(RemoteConstants.ENDPOINT_TIMESTAMP);
+		if (this.timestamp == null) {
+			LogUtility
+					.logWarning(
+							"verifyECFProperties", DebugOptions.ENDPOINT_DESCRIPTION_READER, EndpointDescription.class, "ECFEndpointDescription property " + RemoteConstants.ENDPOINT_TIMESTAMP + " not set.  Using OSGI endpoint.service.id"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+			this.timestamp = getServiceId();
+		}
 		this.idNamespace = verifyStringProperty(RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
-		this.containerID = verifyIDProperty(idNamespace, getId());
+		this.containerID = verifyIDProperty(idNamespace, this.ecfid);
+		this.rsId = verifyLongProperty(Constants.SERVICE_ID);
+			// if null, then set to service.id
+		if (this.rsId == null) 
+				this.rsId = getServiceId();
+		
 		this.connectTargetID = verifyIDProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
 		this.idFilter = verifyIDFilter();
 		this.rsFilter = verifyStringProperty(RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER);
+		
+		this.asyncInterfaces = verifyAsyncInterfaces();
+	}
+
+	private List<String> verifyAsyncInterfaces() {
+		// Check to see that async proxy has not been disabled
+		List<String> resultInterfaces = new ArrayList<String>();
+		Object noAsyncProxy = getProperties().get(Constants.SERVICE_PREVENT_ASYNCPROXY);
+		if (noAsyncProxy == null) {
+			// Get service.exported.async.objectClass property value
+			Object asyncObjectClass = getProperties().get(
+					RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES);
+			// If present
+			if (asyncObjectClass != null) {
+				List<String> originalInterfaces = getInterfaces();
+				String[] matchingInterfaces = PropertiesUtil
+						.getMatchingInterfaces(
+								originalInterfaces
+										.toArray(new String[originalInterfaces
+												.size()]), asyncObjectClass);
+				if (matchingInterfaces != null)
+					for (int i = 0; i < matchingInterfaces.length; i++) {
+						String asyncInterface = convertInterfaceToAsync(matchingInterfaces[i]);
+						if (asyncInterface != null
+								&& !resultInterfaces.contains(asyncInterface))
+							resultInterfaces.add(asyncInterface);
+					}
+			}
+		}
+		return Collections.unmodifiableList(resultInterfaces);
+	}
+	
+	private Long verifyLongProperty(String propName) {
+		Object r = getProperties().get(propName);
+		try {
+			return (Long) r;
+		} catch (ClassCastException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(
+					"property value is not a Long: " + propName); //$NON-NLS-1$
+			iae.initCause(e);
+			throw iae;
+		}
 	}
 
 	private String verifyStringProperty(String propName) {
@@ -146,6 +217,15 @@
 		return (ID[]) results.toArray(new ID[results.size()]);
 	}
 
+	private void addInterfaceVersions(List<String> interfaces, Map<String,Version> result) {
+		if (interfaces == null) return;
+		for (String intf : interfaces) {
+			int index = intf.lastIndexOf('.');
+			if (index == -1) continue;
+			String packageName = intf.substring(0, index);
+			result.put(intf, getPackageVersion(packageName));
+		}
+	}
 	/**
 	 * Get a map of the service interface name -> Version information for all
 	 * the service interfaces exposed by this endpoint description (i.e. those
@@ -157,19 +237,33 @@
 	 *         may have value {@value Version#emptyVersion}
 	 */
 	public Map<String, Version> getInterfaceVersions() {
-		List<String> interfaces = getInterfaces();
 		Map<String, Version> result = new HashMap<String, Version>();
-		for (String intf : interfaces) {
-			int index = intf.lastIndexOf('.');
-			if (index == -1) {
-				continue;
-			}
-			String packageName = intf.substring(0, index);
-			result.put(intf, getPackageVersion(packageName));
-		}
+		addInterfaceVersions(getInterfaces(),result);
+		addInterfaceVersions(getAsyncInterfaces(),result);
 		return result;
 	}
 
+	/**
+	 * @since 4.0
+	 */
+	public String getEndpointId() {
+		return ecfid;
+	}
+	
+	/**
+	 * @since 4.0
+	 */
+	public Long getTimestamp() {
+		return this.timestamp;
+	}
+	
+	/**
+	 * @since 4.0
+	 */
+	public Long getRemoteServiceId() {
+		return this.rsId;
+	}
+	
 	public ID getContainerID() {
 		return containerID;
 	}
@@ -225,11 +319,27 @@
 		return super.getProperties();
 	}
 
+	private String convertInterfaceToAsync(String interfaceName) {
+		if (interfaceName == null)
+			return null;
+		String asyncProxyName = (String) getProperties().get(Constants.SERVICE_ASYNC_RSPROXY_CLASS_ + interfaceName);
+		if (asyncProxyName != null)
+			return asyncProxyName;
+		if (interfaceName.endsWith(IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX))
+			return interfaceName;
+		return interfaceName + IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX;
+	}
+	
+	/**
+	 * @since 4.0
+	 */
+	public List<String> getAsyncInterfaces() {
+		return asyncInterfaces;
+	}
+	
 	public String toString() {
 		StringBuffer sb = new StringBuffer("ECFEndpointDescription["); //$NON-NLS-1$
-		sb.append("id=").append(getId()); //$NON-NLS-1$
-		sb.append(";endpoint.service.id=").append(getServiceId()); //$NON-NLS-1$
-		sb.append(";frameworkid=").append(getFrameworkUUID()).append("]"); //$NON-NLS-1$//$NON-NLS-2$
+		sb.append(getProperties()).append("]"); //$NON-NLS-1$
 		return sb.toString();
 	}
 }
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
index 10fe81c..314b860 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
@@ -22,8 +22,11 @@
  * {@link org.osgi.service.remoteserviceadmin.RemoteConstants} and the <a
  * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGI 4.2 Remote
  * Service Admin specification (chap 122)</a>.
+ * 
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
  */
-public class RemoteConstants {
+public final class RemoteConstants {
 
 	private RemoteConstants() {
 		// not instantiable
@@ -81,9 +84,8 @@
 	 * <b>not</b> set, this prefix will be the precede the unique identifier.
 	 */
 	public static final String DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX = "osgirsvc_"; //$NON-NLS-1$
-
 	/**
-	 * Optional ECF {@link EndpointDescription} property (with value of type
+	 * ECF {@link EndpointDescription} property (with value of type
 	 * String) that defines the unique
 	 * {@link org.eclipse.ecf.core.identity.Namespace} name. If present in the
 	 * {@link EndpointDescription}, the value will be used to create the
@@ -95,6 +97,18 @@
 	 */
 	public static final String ENDPOINT_CONTAINER_ID_NAMESPACE = "ecf.endpoint.id.ns"; //$NON-NLS-1$
 	/**
+	 * ECF {@link EndpointDescription} property (with value of type String)
+	 * that defines the ecf endpoint id (typically the container id).
+	 * @since 4.0
+	 */
+	public static final String ENDPOINT_ID = "ecf.endpoint.id";  //$NON-NLS-1$
+	/**
+	 * ECF {@link EndpointDescription} property (with value of type Long)
+	 * that defines a service timestamp set upon initial export of the remote service.
+	 * @since 4.0
+	 */
+	public static final String ENDPOINT_TIMESTAMP = "ecf.endpoint.ts";  //$NON-NLS-1$
+	/**
 	 * Optional ECF {@link EndpointDescription} property (with value of type
 	 * String) that defines a connect target ID. If set/non-<code>null</code>,
 	 * this property can be used by remote service consumers to connect to a
@@ -153,6 +167,34 @@
 	public static final String SERVICE_EXPORTED_CONTAINER_ID = "ecf.exported.containerid"; //$NON-NLS-1$
 
 	/**
+	 * Service property marking the service for async proxy export. It defines the
+	 * async interfaces under which this service will be exported on the remote
+	 * proxy. This list must be a
+	 * subset of the types service was exported (i.e. subset of interfaces specified 
+	 * by #{@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES}. The single
+	 * value of an asterisk (&quot;*&quot;, &#92;u002A) indicates all the
+	 * interface types under which the service was exported. 
+	 * <p>
+	 * The interfaces in the String[] can either be 
+	 * <ol>
+	 * <li>The same fully qualified name as an interface
+	 * in the #{@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES} property</li>
+	 * <li>The fully qualified name of an interface that follows the asynchronous proxy conventions to
+	 * match with one of the existing exported types.
+	 * </li>
+	 * 
+	 * <p>
+	 * This property may be supplied in the {@code properties}
+	 * {@code Dictionary} object passed to the
+	 * {@code BundleContext.registerService} method. The value of this property
+	 * must be of type {@code String}, {@code String[]}, or {@code Collection}
+	 * of {@code String}.
+	 * 
+	 * @since 4.0
+	 */
+	public static final String SERVICE_EXPORTED_ASYNC_INTERFACES = "ecf.exported.async.interfaces"; //$NON-NLS-1$
+
+	/**
 	 * Allows exporting ECF containers to determine the type of value associated
 	 * with the
 	 * {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_IMPORTED}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
index 58211d7..9567048 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
@@ -229,12 +229,14 @@
 	// RemoteServiceAdmin service interface impl methods
 	public Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> exportService(
 			final ServiceReference serviceReference, Map<String, ?> op) {
+		
 		trace("exportService", "serviceReference=" + serviceReference //$NON-NLS-1$ //$NON-NLS-2$
 				+ ",properties=" + op); //$NON-NLS-1$
+		
 		final Map<String, ?> overridingProperties = PropertiesUtil
 				.mergeProperties(serviceReference,
 						op == null ? Collections.EMPTY_MAP : op);
-		// First get exported interfaces
+		// get exported interfaces
 		final String[] exportedInterfaces = PropertiesUtil
 				.getExportedInterfaces(serviceReference, overridingProperties);
 		if (exportedInterfaces == null)
@@ -259,99 +261,124 @@
 		final String[] serviceIntents = PropertiesUtil.getServiceIntents(
 				serviceReference, overridingProperties);
 
-		// Get a host container selector, and use it to
-		final IHostContainerSelector hostContainerSelector = getHostContainerSelector();
-		// select ECF remote service containers that match given exported
-		// interfaces, configs, and intents
-		IRemoteServiceContainer[] rsContainers = null;
-		try {
-			rsContainers = AccessController
-					.doPrivileged(new PrivilegedExceptionAction() {
-						public Object run() throws SelectContainerException {
-							return hostContainerSelector.selectHostContainers(
+		// Create result registrations.  This collection will be returned
+		Collection<ExportRegistration> resultRegistrations = new ArrayList<ExportRegistration>();
+		
+		// check for previously exported registration for the serviceReference
+		synchronized (exportedRegistrations) {
+			ExportEndpoint exportEndpoint = findExistingExportEndpoint(
+					serviceReference, null);
+			// If found then create a second ExportRegistration from endpoint
+			if (exportEndpoint != null) {
+				trace("exportService", "serviceReference=" + serviceReference + " export endpoint already exists=" + exportEndpoint + ".  Returning new ExportRegistration for existing endpoint"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+				ExportRegistration reg = new ExportRegistration(exportEndpoint);
+				addExportRegistration(reg);
+				resultRegistrations.add(reg);
+			}
+		}
+		// If the serviceReference hasn't already been exported before (above)
+		if (resultRegistrations.size() == 0) {
+			// Get a host container selector
+			final IHostContainerSelector hostContainerSelector = getHostContainerSelector();
+			// and use it to select ECF remote service containers that match given exported
+			// interfaces, configs, and intents
+			IRemoteServiceContainer[] rsContainers = null;
+			try {
+				rsContainers = AccessController
+						.doPrivileged(new PrivilegedExceptionAction() {
+							public Object run() throws SelectContainerException {
+								return hostContainerSelector
+										.selectHostContainers(
+												serviceReference,
+												(Map<String, Object>) overridingProperties,
+												exportedInterfaces,
+												exportedConfigs, serviceIntents);
+							}
+						});
+			} catch (PrivilegedActionException e) {
+				// If exception, create error export registration
+				ExportRegistration errorRegistration = createErrorExportRegistration(
+						serviceReference,
+						(Map<String, Object>) overridingProperties,
+						"Error selecting or creating host container for serviceReference=" //$NON-NLS-1$
+								+ serviceReference + " properties=" //$NON-NLS-1$
+								+ overridingProperties,
+						(SelectContainerException) e.getException());
+				
+				addExportRegistration(errorRegistration);
+				resultRegistrations.add(errorRegistration);
+			}
+			// If no registration exist (no errorRegistration added above)
+			if (resultRegistrations.size() == 0) {
+				// If no containers found above, log warning and return
+				if (rsContainers == null || rsContainers.length == 0) {
+					String errorMessage = "No containers found for serviceReference=" //$NON-NLS-1$ 
+							+ serviceReference
+							+ " properties=" + overridingProperties + ". Remote service NOT EXPORTED"; //$NON-NLS-1$//$NON-NLS-2$
+					logWarning("exportService", errorMessage); //$NON-NLS-1$
+					return Collections.EMPTY_LIST;
+				}
+				// actually do the export
+				synchronized (exportedRegistrations) {
+					// For all selected containers
+					for (int i = 0; i < rsContainers.length; i++) {
+						ExportRegistration exportRegistration = null;
+						// If we've already got an export endpoint
+						// for this service reference/containerID combination,
+						// then create an ExportRegistration that uses the
+						// endpoint
+						ExportEndpoint exportEndpoint = findExistingExportEndpoint(
+								serviceReference, rsContainers[i]
+										.getContainer().getID());
+						// If we've already got one, then create a new
+						// ExportRegistration for it and we're done
+						if (exportEndpoint != null)
+							exportRegistration = new ExportRegistration(
+									exportEndpoint);
+						else {
+							Map endpointDescriptionProperties = createExportEndpointDescriptionProperties(
 									serviceReference,
 									(Map<String, Object>) overridingProperties,
-									exportedInterfaces, exportedConfigs,
-									serviceIntents);
-						}
-					});
-		} catch (PrivilegedActionException e) {
-			// If exception, create error export registration
-			ExportRegistration errorRegistration = createErrorExportRegistration(
-					serviceReference,
-					(Map<String, Object>) overridingProperties,
-					"Error selecting or creating host container for serviceReference=" //$NON-NLS-1$
-							+ serviceReference + " properties=" //$NON-NLS-1$
-							+ overridingProperties,
-					(SelectContainerException) e.getException());
-			// Add to exportedRegistrations
-			synchronized (exportedRegistrations) {
-				exportedRegistrations.add(errorRegistration);
-			}
-			// Publish export event
-			publishExportEvent(errorRegistration);
-			// Return collection
-			Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> result = new ArrayList<org.osgi.service.remoteserviceadmin.ExportRegistration>();
-			result.add(errorRegistration);
-			return result;
-		}
-		// If none found, log warning and return
-		if (rsContainers == null || rsContainers.length == 0) {
-			String errorMessage = "No containers found for serviceReference=" //$NON-NLS-1$ 
-					+ serviceReference
-					+ " properties=" + overridingProperties + ". Remote service NOT EXPORTED"; //$NON-NLS-1$//$NON-NLS-2$
-			logWarning("exportService", errorMessage); //$NON-NLS-1$
-			return Collections.EMPTY_LIST;
-		}
-		Collection<ExportRegistration> exportRegistrations = new ArrayList<ExportRegistration>();
-		synchronized (exportedRegistrations) {
-			for (int i = 0; i < rsContainers.length; i++) {
-				ExportRegistration exportRegistration = null;
-				// If we've already got an export endpoint
-				// for this service reference/containerID combination,
-				// then create an ExportRegistration that uses the endpoint
-				ExportEndpoint exportEndpoint = findExistingExportEndpoint(
-						serviceReference, rsContainers[i].getContainer()
-								.getID());
-				// If we've already got one, then create a new
-				// ExportRegistration for it and we're done
-				if (exportEndpoint != null)
-					exportRegistration = new ExportRegistration(exportEndpoint);
-				else {
-					Map endpointDescriptionProperties = createExportEndpointDescriptionProperties(
-							serviceReference,
-							(Map<String, Object>) overridingProperties,
-							exportedInterfaces, serviceIntents, rsContainers[i]);
-					// otherwise, actually export the service to create a new
-					// ExportEndpoint and use it to create a new
-					// ExportRegistration
-					EndpointDescription endpointDescription = new EndpointDescription(
-							serviceReference, endpointDescriptionProperties);
+									exportedInterfaces, serviceIntents,
+									rsContainers[i]);
+							// otherwise, actually export the service to create
+							// a
+							// new
+							// ExportEndpoint and use it to create a new
+							// ExportRegistration
+							EndpointDescription endpointDescription = new EndpointDescription(
+									serviceReference,
+									endpointDescriptionProperties);
 
-					checkEndpointPermission(endpointDescription,
-							EndpointPermission.EXPORT);
-					try {
-						// Check security access for export
-						// Actually do the export and return export registration
-						exportRegistration = exportService(serviceReference,
-								overridingProperties, exportedInterfaces,
-								rsContainers[i], endpointDescriptionProperties);
-					} catch (Exception e) {
-						exportRegistration = new ExportRegistration(e,
-								endpointDescription);
+							checkEndpointPermission(endpointDescription,
+									EndpointPermission.EXPORT);
+							try {
+								// Check security access for export
+								// Actually do the export and return export
+								// registration
+								exportRegistration = exportService(
+										serviceReference, overridingProperties,
+										exportedInterfaces, rsContainers[i],
+										endpointDescriptionProperties);
+							} catch (Exception e) {
+								exportRegistration = new ExportRegistration(e,
+										endpointDescription);
+							}
+						}
+						addExportRegistration(exportRegistration);
+						// We add it to the results in either case
+						resultRegistrations.add(exportRegistration);
 					}
 				}
-				addExportRegistration(exportRegistration);
-				// We add it to the results in either case
-				exportRegistrations.add(exportRegistration);
 			}
 		}
+		
 		// publish all activeExportRegistrations
-		for (ExportRegistration exportReg : exportRegistrations)
+		for (ExportRegistration exportReg : resultRegistrations)
 			publishExportEvent(exportReg);
 		// and return
 		return new ArrayList<org.osgi.service.remoteserviceadmin.ExportRegistration>(
-				exportRegistrations);
+				resultRegistrations);
 	}
 
 	private ExportRegistration createErrorExportRegistration(
@@ -768,6 +795,13 @@
 
 	class ImportEndpoint {
 
+		@SuppressWarnings("unused")  
+		// XXX this will be used when ImportRegistration.update(EndpointDescription)
+		// is added in RSA 1.1/RFC 203
+		private ID importContainerID;
+		@SuppressWarnings("unused")
+		private IRemoteService rs;
+		
 		private IRemoteServiceContainerAdapter rsContainerAdapter;
 		private EndpointDescription endpointDescription;
 		private IRemoteServiceListener rsListener;
@@ -775,14 +809,17 @@
 		private ServiceRegistration proxyRegistration;
 		private Set<ImportRegistration> activeImportRegistrations = new HashSet<ImportRegistration>();
 
-		ImportEndpoint(IRemoteServiceContainerAdapter rsContainerAdapter,
+		ImportEndpoint(ID importContainerID, IRemoteServiceContainerAdapter rsContainerAdapter,
 				IRemoteServiceReference rsReference,
+				IRemoteService rs,
 				IRemoteServiceListener rsListener,
 				ServiceRegistration proxyRegistration,
 				EndpointDescription endpointDescription) {
+			this.importContainerID = importContainerID;
 			this.rsContainerAdapter = rsContainerAdapter;
 			this.endpointDescription = endpointDescription;
 			this.rsReference = rsReference;
+			this.rs = rs;
 			this.rsListener = rsListener;
 			this.proxyRegistration = proxyRegistration;
 			// Add the remoteservice listener to the container adapter, so that
@@ -829,6 +866,7 @@
 								.removeRemoteServiceListener(rsListener);
 						rsListener = null;
 					}
+					rs = null;
 					rsContainerAdapter = null;
 				}
 				endpointDescription = null;
@@ -1257,14 +1295,13 @@
 				});
 	}
 
-	private ContainerTypeDescription getContainerTypeDescription(
-			IContainer container) {
+	private ContainerTypeDescription getContainerTypeDescription(ID containerID) {
 		return Activator.getDefault().getContainerManager()
-				.getContainerTypeDescription(container.getID());
+				.getContainerTypeDescription(containerID);
 	}
-
+	
 	private boolean isClient(IContainer container) {
-		ContainerTypeDescription ctd = getContainerTypeDescription(container);
+		ContainerTypeDescription ctd = getContainerTypeDescription(container.getID());
 		if (ctd == null)
 			return false;
 		else
@@ -1341,11 +1378,20 @@
 						overridingProperties,
 						org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);
 		if (endpointId == null)
-			endpointId = containerID.getName();
+			endpointId = UUID.randomUUID().toString();
 		endpointDescriptionProperties
 				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
 						endpointId);
 
+		// ECF ENDPOINT ID
+		String ecfEndpointId = (String) PropertiesUtil.getPropertyValue(
+				serviceReference, overridingProperties,
+				RemoteConstants.ENDPOINT_ID);
+		if (ecfEndpointId == null)
+			ecfEndpointId = containerID.getName();
+		endpointDescriptionProperties.put(RemoteConstants.ENDPOINT_ID,
+				ecfEndpointId);
+				
 		// ENDPOINT_SERVICE_ID
 		// This is always set to the value from serviceReference as per 122.5.1
 		Long serviceId = (Long) serviceReference
@@ -1366,7 +1412,7 @@
 						frameworkId);
 
 		// REMOTE_CONFIGS_SUPPORTED
-		String[] remoteConfigsSupported = getSupportedConfigs(container);
+		String[] remoteConfigsSupported = getSupportedConfigs(container.getID());
 		if (remoteConfigsSupported != null)
 			endpointDescriptionProperties
 					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,
@@ -1393,7 +1439,7 @@
 							intents);
 
 		// REMOTE_INTENTS_SUPPORTED
-		String[] remoteIntentsSupported = getSupportedIntents(container);
+		String[] remoteIntentsSupported = getSupportedIntents(container.getID());
 		if (remoteIntentsSupported != null)
 			endpointDescriptionProperties
 					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED,
@@ -1404,7 +1450,10 @@
 		String idNamespace = containerID.getNamespace().getName();
 		endpointDescriptionProperties.put(
 				RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE, idNamespace);
-
+		
+		// timestamp
+		endpointDescriptionProperties.put(RemoteConstants.ENDPOINT_TIMESTAMP, System.currentTimeMillis());
+		
 		// ENDPOINT_CONNECTTARGET_ID
 		String connectTarget = (String) PropertiesUtil.getPropertyValue(
 				serviceReference, overridingProperties,
@@ -1449,20 +1498,20 @@
 		return target;
 	}
 
-	private String[] getSupportedConfigs(IContainer container) {
-		ContainerTypeDescription ctd = getContainerTypeDescription(container);
+	private String[] getSupportedConfigs(ID containerID) {
+		ContainerTypeDescription ctd = getContainerTypeDescription(containerID);
 		return (ctd == null) ? null : ctd.getSupportedConfigs();
 	}
 
-	private String[] getImportedConfigs(IContainer container,
+	private String[] getImportedConfigs(ID containerID,
 			String[] exporterSupportedConfigs) {
-		ContainerTypeDescription ctd = getContainerTypeDescription(container);
+		ContainerTypeDescription ctd = getContainerTypeDescription(containerID);
 		return (ctd == null) ? null : ctd
 				.getImportedConfigs(exporterSupportedConfigs);
 	}
 
-	private String[] getSupportedIntents(IContainer container) {
-		ContainerTypeDescription ctd = getContainerTypeDescription(container);
+	private String[] getSupportedIntents(ID containerID) {
+		ContainerTypeDescription ctd = getContainerTypeDescription(containerID);
 		return (ctd == null) ? null : ctd.getSupportedIntents();
 	}
 
@@ -1479,8 +1528,7 @@
 		long rsId = 0;
 		// if the ECF remote service id is present in properties, allow it to
 		// override
-		Long l = (Long) endpointDescription.getProperties().get(
-				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
+		Long l = endpointDescription.getRemoteServiceId();
 		if (l != null)
 			rsId = l.longValue();
 		// if rsId is still zero, use the endpoint.service.id from
@@ -1527,14 +1575,21 @@
 							+ selectedRsReference + ",rsContainerID=" //$NON-NLS-1$
 							+ rsContainerID);
 
-		final Map proxyProperties = createProxyProperties(endpointDescription,
-				rsContainer, selectedRsReference, rs);
+		final Map proxyProperties = createProxyProperties(rsContainerID, endpointDescription,
+				selectedRsReference, rs);
 
 		// sync sref props with endpoint props
 		endpointDescription.setPropertiesOverrides(proxyProperties);
 
-		final List<String> serviceTypes = endpointDescription.getInterfaces();
-
+		final List<String> originalTypes = endpointDescription.getInterfaces();
+		final List<String> asyncServiceTypes = endpointDescription.getAsyncInterfaces();
+		
+		final List<String> serviceTypes = new ArrayList<String>(originalTypes);
+		
+		if (asyncServiceTypes != null)
+			for(String ast: asyncServiceTypes) 
+				if (ast != null && !serviceTypes.contains(ast)) serviceTypes.add(ast);
+		
 		ServiceRegistration proxyRegistration = AccessController
 				.doPrivileged(new PrivilegedAction<ServiceRegistration>() {
 					public ServiceRegistration run() {
@@ -1548,7 +1603,7 @@
 					}
 				});
 
-		return new ImportEndpoint(containerAdapter, selectedRsReference,
+		return new ImportEndpoint(rsContainerID, containerAdapter, selectedRsReference, rs,
 				new RemoteServiceListener(), proxyRegistration,
 				endpointDescription);
 	}
@@ -1925,8 +1980,7 @@
 		return rsRefs.iterator().next();
 	}
 
-	private Map createProxyProperties(EndpointDescription endpointDescription,
-			IRemoteServiceContainer rsContainer,
+	private Map createProxyProperties(ID importContainerID, EndpointDescription endpointDescription,
 			IRemoteServiceReference rsReference, IRemoteService remoteService) {
 
 		Map resultProperties = new TreeMap<String, Object>(
@@ -1967,8 +2021,7 @@
 		String[] exporterSupportedConfigs = (String[]) endpointDescription
 				.getProperties()
 				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);
-		String[] importedConfigs = getImportedConfigs(
-				rsContainer.getContainer(), exporterSupportedConfigs);
+		String[] importedConfigs = getImportedConfigs(importContainerID, exporterSupportedConfigs);
 		// Set service.imported.configs
 		resultProperties
 				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,
@@ -2021,10 +2074,10 @@
 					exportedInterfaces, service, PropertiesUtil
 							.createDictionaryFromMap(remoteServiceProperties));
 		}
-		endpointDescriptionProperties
-				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,
-						remoteRegistration
-								.getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));
+		
+		endpointDescriptionProperties.put(
+				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
+				remoteRegistration.getID().getContainerRelativeID());
 
 		if (remoteRegistration instanceof IExtendedRemoteServiceRegistration) {
 			IExtendedRemoteServiceRegistration iersr = (IExtendedRemoteServiceRegistration) remoteRegistration;
@@ -2032,11 +2085,10 @@
 			endpointDescriptionProperties = PropertiesUtil.mergeProperties(endpointDescriptionProperties, extraProperties);
 		}
 		
-		EndpointDescription endpointDescription = new EndpointDescription(
-				serviceReference, endpointDescriptionProperties);
 		// Create ExportEndpoint/ExportRegistration
 		return new ExportRegistration(new ExportEndpoint(serviceReference,
-				endpointDescription, remoteRegistration));
+				new EndpointDescription(serviceReference,
+						endpointDescriptionProperties), remoteRegistration));
 	}
 
 	private ImportRegistration importService(
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath
index 80407c8..64c5e31 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry path="" kind="lib" exported="true" sourcepath="src.zip"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.gitignore b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index 79196c2..19c617b 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.osgi.services.remoteserviceadmin
-Bundle-Version: 1.5.0.qualifier
+Bundle-Version: 1.5.100.qualifier
 Bundle-Vendor: %bundle.provider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Localization: bundle
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties
index 038305b..3dc25dd 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties
@@ -1,12 +1,13 @@
-bin.includes = bundle.properties,\
+source.. = src/
+output.. = bin/
+bin.includes = .,\
+               bundle.properties,\
                about.html,\
                META-INF/,\
-               org/,\
-               about_files/
+               about_files/,\
+               src.zip
 src.includes = src.zip,\
                about.html,\
                about_files/,\
-               org/,\
                bundle.properties
-output.. = /
                
\ No newline at end of file
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties
index 0fbbb64..55e7882 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-bundle.name=OSGi Release 5.0 Remote Service Admin
+bundle.name=OSGi R5 RemoteServiceAdmin API
 bundle.provider=Eclipse.org - ECF
 bundle.description=OSGi Service Platform Release 5.0 Remote Service Admin Service Interfaces and Classes
 bundle.copyright=Copyright (c) 2010 Composent Inc., and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$1.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$1.class
deleted file mode 100644
index ef52905..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$1.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$UnmodifiableDictionary.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$UnmodifiableDictionary.class
deleted file mode 100644
index 49d3542..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$UnmodifiableDictionary.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription.class
deleted file mode 100644
index 569c4f9..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointListener.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointListener.class
deleted file mode 100644
index ed2ccd1..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointListener.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermission.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermission.class
deleted file mode 100644
index 7384a57..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermission.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermissionCollection.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermissionCollection.class
deleted file mode 100644
index 7e52243..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermissionCollection.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ExportReference.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ExportReference.class
deleted file mode 100644
index c987b80..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ExportReference.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ExportRegistration.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ExportRegistration.class
deleted file mode 100644
index 585a983..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ExportRegistration.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ImportReference.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ImportReference.class
deleted file mode 100644
index 0242a67..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ImportReference.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ImportRegistration.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ImportRegistration.class
deleted file mode 100644
index 914a3da..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/ImportRegistration.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteConstants.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteConstants.class
deleted file mode 100644
index 7248b89..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteConstants.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.class
deleted file mode 100644
index b5d804f..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.class
deleted file mode 100644
index e26726f..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.class
deleted file mode 100644
index 7e5ae69..0000000
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.class
+++ /dev/null
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointDescription.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointDescription.java
new file mode 100644
index 0000000..76fea77
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointDescription.java
@@ -0,0 +1,711 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS;
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.osgi.framework.Constants;
+import org.osgi.framework.Filter;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.Version;
+
+/**
+ * A description of an endpoint that provides sufficient information for a
+ * compatible distribution provider to create a connection to this endpoint
+ * 
+ * An Endpoint Description is easy to transfer between different systems because
+ * it is property based where the property keys are strings and the values are
+ * simple types. This allows it to be used as a communications device to convey
+ * available endpoint information to nodes in a network.
+ * 
+ * An Endpoint Description reflects the perspective of an <i>importer</i>. That
+ * is, the property keys have been chosen to match filters that are created by
+ * client bundles that need a service. Therefore the map must not contain any
+ * {@code service.exported.*} property and must contain the corresponding
+ * {@code service.imported.*} ones.
+ * 
+ * The {@code service.intents} property must contain the intents provided
+ * by the service itself combined with the intents added by the exporting
+ * distribution provider. Qualified intents appear fully expanded on this
+ * property.
+ * 
+ * @Immutable
+ * @version $Id: 5eee827d56c59f61ee7c7b2e07601e20e97813b5 $
+ */
+
+public class EndpointDescription {
+	private final Map<String, Object>	properties;
+	private final List<String>			interfaces;
+	private final long					serviceId;
+	private final String				frameworkUUID;
+	private final String				id;
+
+	/**
+	 * Create an Endpoint Description from a Map.
+	 * 
+	 * <p>
+	 * The {@link RemoteConstants#ENDPOINT_ID endpoint.id},
+	 * {@link RemoteConstants#SERVICE_IMPORTED_CONFIGS service.imported.configs}
+	 * and {@code objectClass} properties must be set.
+	 * 
+	 * @param properties The map from which to create the Endpoint Description.
+	 *        The keys in the map must be type {@code String} and, since
+	 *        the keys are case insensitive, there must be no duplicates with
+	 *        case variation.
+	 * @throws IllegalArgumentException When the properties are not proper for
+	 *         an Endpoint Description.
+	 */
+
+	public EndpointDescription(Map<String, ? > properties) {
+		Map<String, Object> props = new TreeMap<String, Object>(
+				String.CASE_INSENSITIVE_ORDER);
+		try {
+			props.putAll(properties);
+		}
+		catch (ClassCastException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(
+					"non-String key in properties");
+			iae.initCause(e);
+			throw iae;
+		}
+		if (props.size() < properties.size()) {
+			throw new IllegalArgumentException(
+					"duplicate keys with different cases in properties: "
+							+ new ArrayList<String>(props.keySet())
+									.removeAll(properties.keySet()));
+		}
+
+		conditionProperties(props);
+		this.properties = Collections.unmodifiableMap(props);
+		/* properties must be initialized before calling the following methods */
+		interfaces = verifyObjectClassProperty();
+		serviceId = verifyLongProperty(ENDPOINT_SERVICE_ID);
+		frameworkUUID = verifyStringProperty(ENDPOINT_FRAMEWORK_UUID);
+		id = verifyStringProperty(ENDPOINT_ID).trim();
+		if (id == null) {
+			throw new IllegalArgumentException(ENDPOINT_ID
+					+ " property must be set");
+		}
+		if (getConfigurationTypes().isEmpty()) {
+			throw new IllegalArgumentException(SERVICE_IMPORTED_CONFIGS
+					+ " property must be set and non-empty");
+		}
+	}
+
+	/**
+	 * Create an Endpoint Description based on a Service Reference and a Map of
+	 * properties. The properties in the map take precedence over the properties
+	 * in the Service Reference.
+	 * 
+	 * <p>
+	 * This method will automatically set the
+	 * {@link RemoteConstants#ENDPOINT_FRAMEWORK_UUID endpoint.framework.uuid}
+	 * and {@link RemoteConstants#ENDPOINT_SERVICE_ID endpoint.service.id}
+	 * properties based on the specified Service Reference as well as the
+	 * {@link RemoteConstants#SERVICE_IMPORTED service.imported} property if
+	 * they are not specified as properties.
+	 * <p>
+	 * The {@link RemoteConstants#ENDPOINT_ID endpoint.id},
+	 * {@link RemoteConstants#SERVICE_IMPORTED_CONFIGS service.imported.configs}
+	 * and {@code objectClass} properties must be set.
+	 * 
+	 * @param reference A service reference that can be exported.
+	 * @param properties Map of properties. This argument can be
+	 *        {@code null}. The keys in the map must be type
+	 *        {@code String} and, since the keys are case insensitive,
+	 *        there must be no duplicates with case variation.
+	 * @throws IllegalArgumentException When the properties are not proper for
+	 *         an Endpoint Description
+	 */
+	public EndpointDescription(final ServiceReference reference,
+			final Map<String, ? > properties) {
+		Map<String, Object> props = new TreeMap<String, Object>(
+				String.CASE_INSENSITIVE_ORDER);
+
+		if (properties != null) {
+			try {
+				props.putAll(properties);
+			}
+			catch (ClassCastException e) {
+				IllegalArgumentException iae = new IllegalArgumentException(
+						"non-String key in properties");
+				iae.initCause(e);
+				throw iae;
+			}
+			if (props.size() < properties.size()) {
+				throw new IllegalArgumentException(
+						"duplicate keys with different cases in properties: "
+								+ new ArrayList<String>(props.keySet())
+										.removeAll(properties.keySet()));
+			}
+		}
+
+		for (String key : reference.getPropertyKeys()) {
+			if (!props.containsKey(key)) {
+				props.put(key, reference.getProperty(key));
+			}
+		}
+
+		if (!props.containsKey(ENDPOINT_SERVICE_ID)) {
+			props.put(ENDPOINT_SERVICE_ID, reference.getProperty(Constants.SERVICE_ID));
+		}
+		if (!props.containsKey(ENDPOINT_FRAMEWORK_UUID)) {
+			String uuid = null;
+			try {
+				uuid = AccessController
+						.doPrivileged(new PrivilegedAction<String>() {
+							public String run() {
+								return reference.getBundle().getBundleContext()
+										.getProperty("org.osgi.framework.uuid");
+							}
+						});
+			}
+			catch (SecurityException e) {
+				// if we don't have permission, we can't get the property
+			}
+			if (uuid != null) {
+				props.put(ENDPOINT_FRAMEWORK_UUID, uuid);
+			}
+		}
+		conditionProperties(props);
+		this.properties = Collections.unmodifiableMap(props);
+		/* properties must be initialized before calling the following methods */
+		interfaces = verifyObjectClassProperty();
+		serviceId = verifyLongProperty(ENDPOINT_SERVICE_ID);
+		frameworkUUID = verifyStringProperty(ENDPOINT_FRAMEWORK_UUID);
+		id = verifyStringProperty(ENDPOINT_ID).trim();
+		if (id == null) {
+			throw new IllegalArgumentException(ENDPOINT_ID
+					+ " property must be set");
+		}
+		if (getConfigurationTypes().isEmpty()) {
+			throw new IllegalArgumentException(SERVICE_IMPORTED_CONFIGS
+					+ " property must be set and non-empty");
+		}
+	}
+
+	private static final String	SERVICE_EXPORTED_	= "service.exported.";
+	private static final int	SERVICE_EXPORTED_length	= SERVICE_EXPORTED_
+																.length();
+
+	/**
+	 * Condition the properties.
+	 * 
+	 * @param props Property map to condition.
+	 */
+	private void conditionProperties(Map<String, Object> props) {
+		// ensure service.imported is set
+		if (!props.containsKey(SERVICE_IMPORTED)) {
+			props.put(SERVICE_IMPORTED, Boolean.toString(true));
+		}
+
+		// remove service.exported.* properties
+		for (Iterator<String> iter = props.keySet().iterator(); iter.hasNext();) {
+			String key = iter.next();
+			if (SERVICE_EXPORTED_.regionMatches(true, 0, key, 0,
+					SERVICE_EXPORTED_length)) {
+				iter.remove();
+			}
+		}
+	}
+
+	/**
+	 * Verify and obtain the interface list from the properties.
+	 * 
+	 * @return A list with the interface names.
+	 * @throws IllegalArgumentException If the objectClass property is not set
+	 *         or is empty or if the package version property values are
+	 *         malformed.
+	 */
+	private List<String> verifyObjectClassProperty() {
+		Object o = properties.get(Constants.OBJECTCLASS);
+		if (!(o instanceof String[])) {
+			throw new IllegalArgumentException(
+					"objectClass value must be of type String[]");
+		}
+		String[] objectClass = (String[]) o;
+		if (objectClass.length < 1) {
+			throw new IllegalArgumentException("objectClass is empty");
+		}
+		for (String interf : objectClass) {
+			int index = interf.lastIndexOf('.');
+			if (index == -1) {
+				continue;
+			}
+			String packageName = interf.substring(0, index);
+			try {
+				/* Make sure any package version properties are well formed */
+				getPackageVersion(packageName);
+			}
+			catch (IllegalArgumentException e) {
+				IllegalArgumentException iae = new IllegalArgumentException(
+						"Improper version for package " + packageName);
+				iae.initCause(e);
+				throw iae;
+			}
+		}
+		return Collections.unmodifiableList(Arrays.asList(objectClass));
+	}
+
+	/**
+	 * Verify and obtain a required String property.
+	 * 
+	 * @param propName The name of the property
+	 * @return The value of the property or {@code null} if the property is
+	 *         not set.
+	 * @throws IllegalArgumentException when the property doesn't have the
+	 *         correct data type.
+	 */
+	private String verifyStringProperty(String propName) {
+		Object r = properties.get(propName);
+		try {
+			return (String) r;
+		}
+		catch (ClassCastException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(
+					"property value is not a String: " + propName);
+			iae.initCause(e);
+			throw iae;
+		}
+	}
+
+	/**
+	 * Verify and obtain a required long property.
+	 * 
+	 * @param propName The name of the property
+	 * @return The value of the property or 0 if the property is not set.
+	 * @throws IllegalArgumentException when the property doesn't have the
+	 *         correct data type.
+	 */
+	private long verifyLongProperty(String propName) {
+		Object r = properties.get(propName);
+		if (r == null) {
+			return 0l;
+		}
+		try {
+			return ((Long) r).longValue();
+		}
+		catch (ClassCastException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(
+					"property value is not a Long: " + propName);
+			iae.initCause(e);
+			throw iae;
+		}
+	}
+
+	/**
+	 * Returns the endpoint's id.
+	 * 
+	 * The id is an opaque id for an endpoint. No two different endpoints must
+	 * have the same id. Two Endpoint Descriptions with the same id must
+	 * represent the same endpoint.
+	 * 
+	 * The value of the id is stored in the {@link RemoteConstants#ENDPOINT_ID}
+	 * property.
+	 * 
+	 * @return The id of the endpoint, never {@code null}. The returned
+	 *         value has leading and trailing whitespace removed.
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * Provide the list of interfaces implemented by the exported service.
+	 * 
+	 * The value of the interfaces is derived from the {@code objectClass}
+	 * property.
+	 * 
+	 * @return An unmodifiable list of Java interface names implemented by this
+	 *         endpoint.
+	 */
+	public List<String> getInterfaces() {
+		return interfaces;
+	}
+
+	/**
+	 * Provide the version of the given package name.
+	 * 
+	 * The version is encoded by prefixing the given package name with
+	 * {@link RemoteConstants#ENDPOINT_PACKAGE_VERSION_
+	 * endpoint.package.version.}, and then using this as an endpoint property
+	 * key. For example:
+	 * 
+	 * <pre>
+	 * endpoint.package.version.com.acme
+	 * </pre>
+	 * 
+	 * The value of this property is in String format and will be converted to a
+	 * {@code Version} object by this method.
+	 * 
+	 * @param packageName The name of the package for which a version is
+	 *        requested.
+	 * @return The version of the specified package or
+	 *         {@code Version.emptyVersion} if the package has no version
+	 *         in this Endpoint Description.
+	 * @throws IllegalArgumentException If the version property value is not
+	 *         String.
+	 */
+	public Version getPackageVersion(String packageName) {
+		String key = ENDPOINT_PACKAGE_VERSION_ + packageName;
+		Object value = properties.get(key);
+		String version;
+		try {
+			version = (String) value;
+		}
+		catch (ClassCastException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(key
+					+ " property value is not a String");
+			iae.initCause(e);
+			throw iae;
+		}
+		return Version.parseVersion(version);
+	}
+
+	/**
+	 * Returns the service id for the service exported through this endpoint.
+	 * 
+	 * This is the service id under which the framework has registered the
+	 * service. This field together with the Framework UUID is a globally unique
+	 * id for a service.
+	 * 
+	 * The value of the remote service id is stored in the
+	 * {@link RemoteConstants#ENDPOINT_SERVICE_ID} endpoint property.
+	 * 
+	 * @return Service id of a service or 0 if this Endpoint Description does
+	 *         not relate to an OSGi service.
+	 * 
+	 */
+	public long getServiceId() {
+		return serviceId;
+	}
+
+	/**
+	 * Returns the configuration types.
+	 * 
+	 * A distribution provider exports a service with an endpoint. This endpoint
+	 * uses some kind of communications protocol with a set of configuration
+	 * parameters. There are many different types but each endpoint is
+	 * configured by only one configuration type. However, a distribution
+	 * provider can be aware of different configuration types and provide
+	 * synonyms to increase the change a receiving distribution provider can
+	 * create a connection to this endpoint.
+	 * 
+	 * This value of the configuration types is stored in the
+	 * {@link RemoteConstants#SERVICE_IMPORTED_CONFIGS} service property.
+	 * 
+	 * @return An unmodifiable list of the configuration types used for the
+	 *         associated endpoint and optionally synonyms.
+	 */
+	public List<String> getConfigurationTypes() {
+		return getStringPlusProperty(SERVICE_IMPORTED_CONFIGS);
+	}
+
+	/**
+	 * Return the list of intents implemented by this endpoint.
+	 * 
+	 * The intents are based on the service.intents on an imported service,
+	 * except for any intents that are additionally provided by the importing
+	 * distribution provider. All qualified intents must have been expanded.
+	 * 
+	 * This value of the intents is stored in the
+	 * {@link RemoteConstants#SERVICE_INTENTS} service property.
+	 * 
+	 * @return An unmodifiable list of expanded intents that are provided by
+	 *         this endpoint.
+	 */
+	public List<String> getIntents() {
+		return getStringPlusProperty(SERVICE_INTENTS);
+	}
+
+	/**
+	 * Reads a 'String+' property from the properties map, which may be of type
+	 * String, String[] or Collection&lt;String&gt; and returns it as an
+	 * unmodifiable List.
+	 * 
+	 * @param key The property
+	 * @return An unmodifiable list
+	 */
+	private List<String> getStringPlusProperty(String key) {
+		Object value = properties.get(key);
+		if (value == null) {
+			return Collections.EMPTY_LIST;
+		}
+
+		if (value instanceof String) {
+			return Collections.singletonList((String) value);
+		}
+
+		if (value instanceof String[]) {
+			String[] values = (String[]) value;
+			List<String> result = new ArrayList<String>(values.length);
+			for (String v : values) {
+				if (v != null) {
+					result.add(v);
+				}
+			}
+			return Collections.unmodifiableList(result);
+		}
+
+		if (value instanceof Collection< ? >) {
+			Collection< ? > values = (Collection< ? >) value;
+			List<String> result = new ArrayList<String>(values.size());
+			for (Iterator< ? > iter = values.iterator(); iter.hasNext();) {
+				Object v = iter.next();
+				if (v instanceof String) {
+					result.add((String) v);
+				}
+			}
+			return Collections.unmodifiableList(result);
+		}
+
+		return Collections.EMPTY_LIST;
+	}
+
+	/**
+	 * Return the framework UUID for the remote service, if present.
+	 * 
+	 * The value of the remote framework uuid is stored in the
+	 * {@link RemoteConstants#ENDPOINT_FRAMEWORK_UUID} endpoint property.
+	 * 
+	 * @return Remote Framework UUID, or {@code null} if this endpoint is
+	 *         not associated with an OSGi framework having a framework uuid.
+	 */
+	public String getFrameworkUUID() {
+		return frameworkUUID;
+	}
+
+	/**
+	 * Returns all endpoint properties.
+	 * 
+	 * @return An unmodifiable map referring to the properties of this Endpoint
+	 *         Description.
+	 */
+	public Map<String, Object> getProperties() {
+		return properties;
+	}
+
+	/**
+	 * Answers if this Endpoint Description refers to the same service instance
+	 * as the given Endpoint Description.
+	 * 
+	 * Two Endpoint Descriptions point to the same service if they have the same
+	 * id or their framework UUIDs and remote service ids are equal.
+	 * 
+	 * @param other The Endpoint Description to look at
+	 * @return True if this endpoint description points to the same service as
+	 *         the other
+	 */
+	public boolean isSameService(EndpointDescription other) {
+		if (this.equals(other)) {
+			return true;
+		}
+
+		if (this.getFrameworkUUID() == null) {
+			return false;
+		}
+
+		return (this.getServiceId() == other.getServiceId())
+				&& this.getFrameworkUUID().equals(
+						other.getFrameworkUUID());
+	}
+
+	/**
+	 * Returns a hash code value for the object.
+	 * 
+	 * @return An integer which is a hash code value for this object.
+	 */
+	public int hashCode() {
+		return getId().hashCode();
+	}
+
+	/**
+	 * Compares this {@code EndpointDescription} object to another object.
+	 * 
+	 * <p>
+	 * An Endpoint Description is considered to be <b>equal to</b> another
+	 * Endpoint Description if their ids are equal.
+	 * 
+	 * @param other The {@code EndpointDescription} object to be compared.
+	 * @return {@code true} if {@code object} is a
+	 *         {@code EndpointDescription} and is equal to this object;
+	 *         {@code false} otherwise.
+	 */
+	public boolean equals(Object other) {
+		if (this == other) {
+			return true;
+		}
+		if (!(other instanceof EndpointDescription)) {
+			return false;
+		}
+		return getId().equals(
+				((EndpointDescription) other).getId());
+	}
+
+	/**
+	 * Tests the properties of this {@code EndpointDescription} against
+	 * the given filter using a case insensitive match.
+	 * 
+	 * @param filter The filter to test.
+	 * @return {@code true} If the properties of this
+	 *         {@code EndpointDescription} match the filter,
+	 *         {@code false} otherwise.
+	 * @throws IllegalArgumentException If {@code filter} contains an
+	 *         invalid filter string that cannot be parsed.
+	 */
+	public boolean matches(String filter) {
+		Filter f;
+		try {
+			f = FrameworkUtil.createFilter(filter);
+		}
+		catch (InvalidSyntaxException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(e
+					.getMessage());
+			iae.initCause(e);
+			throw iae;
+		}
+		Dictionary<String, Object> d = new UnmodifiableDictionary<String, Object>(
+				properties);
+		/*
+		 * we can use matchCase here since properties already supports case
+		 * insensitive key lookup.
+		 */
+		return f.matchCase(d);
+	}
+
+	/**
+	 * Returns the string representation of this EndpointDescription.
+	 * 
+	 * @return String form of this EndpointDescription.
+	 */
+	public String toString() {
+		StringBuffer sb = new StringBuffer();
+		sb.append('{');
+		Iterator<Map.Entry<String, Object>> iter = properties.entrySet()
+				.iterator();
+		boolean comma = false;
+		while (iter.hasNext()) {
+			Map.Entry<String, Object> entry = iter.next();
+			if (comma) {
+				sb.append(", ");
+			}
+			else {
+				comma = true;
+			}
+			sb.append(entry.getKey());
+			sb.append('=');
+			Object value = entry.getValue();
+			if (value != null) {
+				Class< ? > valueType = value.getClass();
+				if (Object[].class.isAssignableFrom(valueType)) {
+					append(sb, (Object[]) value);
+					continue;
+				}
+			}
+			sb.append(value);
+		}
+		sb.append('}');
+		return sb.toString();
+	}
+
+	/**
+	 * Append the specified Object array to the specified StringBuffer.
+	 * 
+	 * @param sb Receiving StringBuffer.
+	 * @param value Object array to append to the specified StringBuffer.
+	 */
+	private static void append(StringBuffer sb, Object[] value) {
+		sb.append('[');
+		boolean comma = false;
+		final int length = value.length;
+		for (int i = 0; i < length; i++) {
+			if (comma) {
+				sb.append(", ");
+			}
+			else {
+				comma = true;
+			}
+			sb.append(String.valueOf(value[i]));
+		}
+		sb.append(']');
+	}
+
+	/**
+	 * Unmodifiable Dictionary wrapper for a Map. This class is also used by
+	 * EndpointPermission.
+	 */
+	static final class UnmodifiableDictionary<K, V> extends Dictionary<K, V> {
+		private final Map<K, V>	wrapped;
+
+		UnmodifiableDictionary(Map<K, V> wrapped) {
+			this.wrapped = wrapped;
+		}
+
+		public Enumeration<V> elements() {
+			return Collections.enumeration(wrapped.values());
+		}
+
+		public V get(Object key) {
+			return wrapped.get(key);
+		}
+
+		public boolean isEmpty() {
+			return wrapped.isEmpty();
+		}
+
+		public Enumeration<K> keys() {
+			return Collections.enumeration(wrapped.keySet());
+		}
+
+		public V put(K key, V value) {
+			throw new UnsupportedOperationException();
+		}
+
+		public V remove(Object key) {
+			throw new UnsupportedOperationException();
+		}
+
+		public int size() {
+			return wrapped.size();
+		}
+
+		public String toString() {
+			return wrapped.toString();
+		}
+	}
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointListener.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointListener.java
new file mode 100644
index 0000000..35dc904
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointListener.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+/**
+ * A white board service that represents a listener for endpoints.
+ * 
+ * An Endpoint Listener represents a participant in the distributed model that
+ * is interested in Endpoint Descriptions.
+ * 
+ * This white board service can be used in many different scenarios. However,
+ * the primary use case is to allow a remote manager to be informed of Endpoint
+ * Descriptions available in the network and inform the network about available
+ * Endpoint Descriptions.
+ * 
+ * Both the network bundle and the manager bundle register an Endpoint Listener
+ * service. The manager informs the network bundle about Endpoints that it
+ * creates. The network bundles then uses a protocol like SLP to announce these
+ * local end-points to the network.
+ * 
+ * If the network bundle discovers a new Endpoint through its discovery
+ * protocol, then it sends an Endpoint Description to all the Endpoint Listener
+ * services that are registered (except its own) that have specified an interest
+ * in that endpoint.
+ * 
+ * Endpoint Listener services can express their <i>scope</i> with the service
+ * property {@link #ENDPOINT_LISTENER_SCOPE}. This service property is a list of
+ * filters. An Endpoint Description should only be given to a Endpoint Listener
+ * when there is at least one filter that matches the Endpoint Description
+ * properties.
+ * 
+ * This filter model is quite flexible. For example, a discovery bundle is only
+ * interested in locally originating Endpoint Descriptions. The following filter
+ * ensure that it only sees local endpoints.
+ * 
+ * <pre>
+ *   (org.osgi.framework.uuid=72dc5fd9-5f8f-4f8f-9821-9ebb433a5b72)
+ * </pre>
+ * 
+ * In the same vein, a manager that is only interested in remote Endpoint
+ * Descriptions can use a filter like:
+ * 
+ * <pre>
+ *   (!(org.osgi.framework.uuid=72dc5fd9-5f8f-4f8f-9821-9ebb433a5b72))
+ * </pre>
+ * 
+ * Where in both cases, the given UUID is the UUID of the local framework that
+ * can be found in the Framework properties.
+ * 
+ * The Endpoint Listener's scope maps very well to the service hooks. A manager
+ * can just register all filters found from the Listener Hook as its scope. This
+ * will automatically provide it with all known endpoints that match the given
+ * scope, without having to inspect the filter string.
+ * 
+ * In general, when an Endpoint Description is discovered, it should be
+ * dispatched to all registered Endpoint Listener services. If a new Endpoint
+ * Listener is registered, it should be informed about all currently known
+ * Endpoints that match its scope. If a getter of the Endpoint Listener service
+ * is unregistered, then all its registered Endpoint Description objects must be
+ * removed.
+ * 
+ * The Endpoint Listener models a <i>best effort</i> approach. Participating
+ * bundles should do their utmost to keep the listeners up to date, but
+ * implementers should realize that many endpoints come through unreliable
+ * discovery processes.
+ * 
+ * @ThreadSafe
+ * @version $Id: 8feaa377aecc7db74348c2c1b26ce7cd9fe64fea $
+ */
+public interface EndpointListener {
+	/**
+	 * Specifies the interest of this listener with filters. This listener is
+	 * only interested in Endpoint Descriptions where its properties match the
+	 * given filter. The type of this property must be {@code String+}.
+	 */
+	String	ENDPOINT_LISTENER_SCOPE	= "endpoint.listener.scope";
+
+	/**
+	 * Register an endpoint with this listener.
+	 * 
+	 * If the endpoint matches one of the filters registered with the
+	 * {@link #ENDPOINT_LISTENER_SCOPE} service property then this filter should
+	 * be given as the {@code matchedFilter} parameter.
+	 * 
+	 * When this service is first registered or it is modified, it should
+	 * receive all known endpoints matching the filter.
+	 * 
+	 * @param endpoint The Endpoint Description to be published
+	 * @param matchedFilter The filter from the {@link #ENDPOINT_LISTENER_SCOPE}
+	 *        that matched the endpoint, must not be {@code null}.
+	 */
+	void endpointAdded(EndpointDescription endpoint, String matchedFilter);
+
+	/**
+	 * Remove the registration of an endpoint.
+	 * 
+	 * If an endpoint that was registered with the
+	 * {@link #endpointAdded(EndpointDescription, String)} method is no longer
+	 * available then this method should be called. This will remove the
+	 * endpoint from the listener.
+	 * 
+	 * It is not necessary to remove endpoints when the service is unregistered
+	 * or modified in such a way that not all endpoints match the interest
+	 * filter anymore.
+	 * 
+	 * @param endpoint The Endpoint Description that is no longer valid.
+	 * @param matchedFilter The filter from the {@link #ENDPOINT_LISTENER_SCOPE}
+	 *        that matched the endpoint, must not be {@code null}.
+	 */
+	void endpointRemoved(EndpointDescription endpoint, String matchedFilter);
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointPermission.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointPermission.java
new file mode 100644
index 0000000..5ddaf67
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/EndpointPermission.java
@@ -0,0 +1,692 @@
+/*
+ * Copyright (c) OSGi Alliance (2000, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import static org.osgi.service.remoteserviceadmin.RemoteConstants.*;
+
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamField;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.osgi.framework.Filter;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+
+/**
+ * A bundle's authority to export, import or read an Endpoint.
+ * <ul>
+ * <li>The {@code export} action allows a bundle to export a service as an
+ * Endpoint.</li>
+ * <li>The {@code import} action allows a bundle to import a service from
+ * an Endpoint.</li>
+ * <li>The {@code read} action allows a bundle to read references to an
+ * Endpoint.</li>
+ * </ul>
+ * Permission to read an Endpoint is required in order to detect events
+ * regarding an Endpoint. Untrusted bundles should not be able to detect the
+ * presence of certain Endpoints unless they have the appropriate
+ * {@code EndpointPermission} to read the specific service.
+ * 
+ * @ThreadSafe
+ * @version $Id: a7565f494a3d68772eaca2707221f7c8eca88e20 $
+ */
+
+public final class EndpointPermission extends Permission {
+	static final long					serialVersionUID	= -7662148639076511574L;
+	/**
+	 * The action string {@code read}.
+	 */
+	public final static String			READ				= "read";
+	/**
+	 * The action string {@code import}. The {@code import} action
+	 * implies the {@code read} action.
+	 */
+	public final static String			IMPORT				= "import";
+	/**
+	 * The action string {@code export}. The {@code export} action
+	 * implies the {@code read} action.
+	 */
+	public final static String			EXPORT				= "export";
+
+	private final static int			ACTION_READ			= 0x00000001;
+	private final static int			ACTION_IMPORT		= 0x00000002;
+	private final static int			ACTION_EXPORT		= 0x00000004;
+	private final static int			ACTION_ALL			= ACTION_EXPORT
+																	| ACTION_IMPORT
+																	| ACTION_READ;
+	final static int					ACTION_NONE			= 0;
+
+	/**
+	 * The actions mask.
+	 */
+	transient int						action_mask;
+
+	/**
+	 * The actions in canonical form.
+	 * 
+	 * @serial
+	 */
+	private volatile String				actions				= null;
+
+	/**
+	 * The endpoint used by this EndpointPermission. Must be {@code null}
+	 * if not constructed with a endpoint.
+	 */
+	transient final EndpointDescription					endpoint;
+	
+	/**
+	 * This dictionary holds the properties of the permission, used to match a
+	 * filter in implies.
+	 */
+	private transient final Dictionary<String, Object>	properties;
+
+	/**
+	 * If this EndpointPermission was not constructed with an
+	 * EndpointDescription, this holds a Filter matching object used to evaluate
+	 * the filter in implies or {@code null} for wildcard.
+	 */
+	transient Filter					filter;
+
+	/**
+	 * Create a new EndpointPermission with the specified filter.
+	 * 
+	 * <p>
+	 * The filter will be evaluated against the endpoint properties of a
+	 * requested EndpointPermission.
+	 * 
+	 * <p>
+	 * There are three possible actions: {@code read}, {@code import}
+	 * and {@code export}. The {@code read} action allows the owner of
+	 * this permission to see the presence of distributed services. The
+	 * {@code import} action allows the owner of this permission to import
+	 * an endpoint. The {@code export} action allows the owner of this
+	 * permission to export a service.
+	 * 
+	 * @param filterString The filter string or &quot;*&quot; to match all
+	 *        endpoints.
+	 * @param actions The actions {@code read}, {@code import}, or
+	 *        {@code export}.
+	 * @throws IllegalArgumentException If the filter has an invalid syntax or
+	 *         the actions are not valid.
+	 */
+	public EndpointPermission(String filterString, String actions) {
+		this(filterString, parseActions(actions));
+	}
+
+	/**
+	 * Creates a new requested {@code EndpointPermission} object to be used
+	 * by code that must perform {@code checkPermission}.
+	 * {@code EndpointPermission} objects created with this constructor
+	 * cannot be added to an {@code EndpointPermission} permission
+	 * collection.
+	 * 
+	 * @param endpoint The requested endpoint.
+	 * @param localFrameworkUUID The UUID of the local framework. This is used
+	 *        to support matching the
+	 *        {@link RemoteConstants#ENDPOINT_FRAMEWORK_UUID
+	 *        endpoint.framework.uuid} endpoint property to the
+	 *        {@code &lt;&lt;LOCAL&gt;&gt;} value in the filter expression.
+	 * @param actions The actions {@code read}, {@code import}, or
+	 *        {@code export}.
+	 * @throws IllegalArgumentException If the endpoint is {@code null} or
+	 *         the actions are not valid.
+	 */
+	public EndpointPermission(EndpointDescription endpoint,
+			String localFrameworkUUID, String actions) {
+		super(createName(endpoint));
+		setTransients(null, parseActions(actions));
+		Map<String, Object> props;
+		if ((localFrameworkUUID != null)
+				&& localFrameworkUUID.equals(endpoint.getFrameworkUUID())) {
+			props = new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER);
+			props.putAll(endpoint.getProperties());
+			props.put(ENDPOINT_FRAMEWORK_UUID, new String[] {
+					endpoint.getFrameworkUUID(), "<<LOCAL>>"});
+		}
+		else {
+			props = endpoint.getProperties();
+		}
+		this.endpoint = endpoint;
+		this.properties = new EndpointDescription.UnmodifiableDictionary<String, Object>(
+				props);
+	}
+
+	/**
+	 * Create a permission name from a EndpointDescription.
+	 * 
+	 * @param endpoint EndpointDescription to use to create permission name.
+	 * @return permission name.
+	 */
+	private static String createName(EndpointDescription endpoint) {
+		if (endpoint == null) {
+			throw new IllegalArgumentException("invalid endpoint: null");
+		}
+		StringBuffer sb = new StringBuffer("(" + ENDPOINT_ID + "=");
+		sb.append(endpoint.getId());
+		sb.append(")");
+		return sb.toString();
+	}
+
+	/**
+	 * Package private constructor used by EndpointPermissionCollection.
+	 * 
+	 * @param name class name
+	 * @param mask action mask
+	 */
+	EndpointPermission(String name, int mask) {
+		super(name);
+		setTransients(parseFilter(name), mask);
+		this.endpoint = null;
+		this.properties = null;
+	}
+
+	/**
+	 * Called by constructors and when deserialized.
+	 * 
+	 * @param mask action mask
+	 */
+	private void setTransients(Filter f, int mask) {
+		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
+			throw new IllegalArgumentException("invalid action string");
+		}
+		action_mask = mask;
+		filter = f;
+	}
+
+	/**
+	 * Parse action string into action mask.
+	 * 
+	 * @param actions Action string.
+	 * @return action mask.
+	 */
+	private static int parseActions(String actions) {
+		boolean seencomma = false;
+
+		int mask = ACTION_NONE;
+
+		if (actions == null) {
+			return mask;
+		}
+
+		char[] a = actions.toCharArray();
+
+		int i = a.length - 1;
+		if (i < 0)
+			return mask;
+
+		while (i != -1) {
+			char c;
+
+			// skip whitespace
+			while ((i != -1)
+					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
+							|| c == '\f' || c == '\t'))
+				i--;
+
+			// check for the known strings
+			int matchlen;
+
+			if (i >= 5 && (a[i - 5] == 'i' || a[i - 5] == 'I')
+					&& (a[i - 4] == 'm' || a[i - 4] == 'M')
+					&& (a[i - 3] == 'p' || a[i - 3] == 'P')
+					&& (a[i - 2] == 'o' || a[i - 2] == 'O')
+					&& (a[i - 1] == 'r' || a[i - 1] == 'R')
+					&& (a[i] == 't' || a[i] == 'T')) {
+				matchlen = 6;
+				mask |= ACTION_IMPORT | ACTION_READ;
+
+			}
+			else
+				if (i >= 5 && (a[i - 5] == 'e' || a[i - 5] == 'E')
+						&& (a[i - 4] == 'x' || a[i - 4] == 'X')
+						&& (a[i - 3] == 'p' || a[i - 3] == 'P')
+						&& (a[i - 2] == 'o' || a[i - 2] == 'O')
+						&& (a[i - 1] == 'r' || a[i - 1] == 'R')
+						&& (a[i] == 't' || a[i] == 'T')) {
+					matchlen = 6;
+					mask |= ACTION_EXPORT | ACTION_READ;
+
+				}
+				else {
+					if (i >= 3 && (a[i - 3] == 'r' || a[i - 3] == 'R')
+							&& (a[i - 2] == 'e' || a[i - 2] == 'E')
+							&& (a[i - 1] == 'a' || a[i - 1] == 'A')
+							&& (a[i] == 'd' || a[i] == 'D')) {
+						matchlen = 4;
+						mask |= ACTION_READ;
+
+					}
+					else {
+						// parse error
+						throw new IllegalArgumentException(
+								"invalid permission: " + actions);
+					}
+				}
+
+			// make sure we didn't just match the tail of a word
+			// like "ackbarfread". Also, skip to the comma.
+			seencomma = false;
+			while (i >= matchlen && !seencomma) {
+				switch (a[i - matchlen]) {
+					case ',' :
+						seencomma = true;
+						/* FALLTHROUGH */
+					case ' ' :
+					case '\r' :
+					case '\n' :
+					case '\f' :
+					case '\t' :
+						break;
+					default :
+						throw new IllegalArgumentException(
+								"invalid permission: " + actions);
+				}
+				i--;
+			}
+
+			// point i at the location of the comma minus one (or -1).
+			i -= matchlen;
+		}
+
+		if (seencomma) {
+			throw new IllegalArgumentException("invalid permission: " + actions);
+		}
+
+		return mask;
+	}
+
+	/**
+	 * Parse filter string into a Filter object.
+	 * 
+	 * @param filterString The filter string to parse.
+	 * @return a Filter for this bundle.
+	 * @throws IllegalArgumentException If the filter syntax is invalid.
+	 */
+	private static Filter parseFilter(String filterString) {
+		if (filterString == null) {
+			throw new IllegalArgumentException("invalid filter: null");
+		}
+		filterString = filterString.trim();
+		if (filterString.equals("*")) {
+			return null; // wildcard
+		}
+		try {
+			return FrameworkUtil.createFilter(filterString);
+		}
+		catch (InvalidSyntaxException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(
+					"invalid filter");
+			iae.initCause(e);
+			throw iae;
+		}
+	}
+
+	/**
+	 * Determines if a {@code EndpointPermission} object "implies" the
+	 * specified permission.
+	 * 
+	 * @param p The target permission to check.
+	 * @return {@code true} if the specified permission is implied by this
+	 *         object; {@code false} otherwise.
+	 */
+	public boolean implies(Permission p) {
+		if (!(p instanceof EndpointPermission)) {
+			return false;
+		}
+		EndpointPermission requested = (EndpointPermission) p;
+		if (endpoint != null) {
+			return false;
+		}
+		// if requested permission has a filter, then it is an invalid argument
+		if (requested.filter != null) {
+			return false;
+		}
+		return implies0(requested, ACTION_NONE);
+	}
+
+	/**
+	 * Internal implies method. Used by the implies and the permission
+	 * collection implies methods.
+	 * 
+	 * @param requested The requested EndpointPermission which has already be
+	 *        validated as a proper argument. The requested EndpointPermission
+	 *        must not have a filter expression.
+	 * @param effective The effective actions with which to start.
+	 * @return {@code true} if the specified permission is implied by this
+	 *         object; {@code false} otherwise.
+	 */
+	boolean implies0(EndpointPermission requested, int effective) {
+		/* check actions first - much faster */
+		effective |= action_mask;
+		final int desired = requested.action_mask;
+		if ((effective & desired) != desired) {
+			return false;
+		}
+		/* if we have no filter */
+		Filter f = filter;
+		if (f == null) {
+			// it's "*"
+			return true;
+		}
+		return f.matchCase(requested.getProperties());
+	}
+
+	/**
+	 * Returns the canonical string representation of the actions. Always
+	 * returns present actions in the following canonical order:
+	 * {@code read}, {@code import}, {@code export}.
+	 * 
+	 * @return The canonical string representation of the actions.
+	 */
+	public String getActions() {
+		String result = actions;
+		if (result == null) {
+			StringBuffer sb = new StringBuffer();
+			boolean comma = false;
+
+			int mask = action_mask;
+			if ((mask & ACTION_READ) == ACTION_READ) {
+				sb.append(READ);
+				comma = true;
+			}
+
+			if ((mask & ACTION_IMPORT) == ACTION_IMPORT) {
+				if (comma)
+					sb.append(',');
+				sb.append(IMPORT);
+			}
+
+			if ((mask & ACTION_EXPORT) == ACTION_EXPORT) {
+				if (comma)
+					sb.append(',');
+				sb.append(EXPORT);
+			}
+
+			actions = result = sb.toString();
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns a new {@code PermissionCollection} object for storing
+	 * {@code EndpointPermission} objects.
+	 * 
+	 * @return A new {@code PermissionCollection} object suitable for storing
+	 *         {@code EndpointPermission} objects.
+	 */
+	public PermissionCollection newPermissionCollection() {
+		return new EndpointPermissionCollection();
+	}
+
+	/**
+	 * Determines the equality of two EndpointPermission objects.
+	 * 
+	 * Checks that specified object has the same name, actions and endpoint as
+	 * this {@code EndpointPermission}.
+	 * 
+	 * @param obj The object to test for equality.
+	 * @return true If obj is a {@code EndpointPermission}, and has the
+	 *         same name, actions and endpoint as this
+	 *         {@code EndpointPermission} object; {@code false}
+	 *         otherwise.
+	 */
+	public boolean equals(Object obj) {
+		if (obj == this) {
+			return true;
+		}
+
+		if (!(obj instanceof EndpointPermission)) {
+			return false;
+		}
+
+		EndpointPermission ep = (EndpointPermission) obj;
+
+		return (action_mask == ep.action_mask)
+				&& getName().equals(ep.getName())
+				&& ((endpoint == ep.endpoint) || ((endpoint != null)
+						&& (ep.endpoint != null) && endpoint
+						.equals(ep.endpoint)));
+	}
+
+	/**
+	 * Returns the hash code value for this object.
+	 * 
+	 * @return Hash code value for this object.
+	 */
+	public int hashCode() {
+		int h = 31 * 17 + getName().hashCode();
+		h = 31 * h + getActions().hashCode();
+		if (endpoint != null) {
+			h = 31 * h + endpoint.hashCode();
+		}
+		return h;
+	}
+
+	/**
+	 * WriteObject is called to save the state of this permission to a stream.
+	 * The actions are serialized, and the superclass takes care of the name.
+	 */
+	private synchronized void writeObject(java.io.ObjectOutputStream s)
+			throws IOException {
+		if (endpoint != null) {
+			throw new NotSerializableException("cannot serialize");
+		}
+		// Write out the actions. The superclass takes care of the name
+		// call getActions to make sure actions field is initialized
+		if (actions == null) {
+			getActions();
+		}
+		s.defaultWriteObject();
+	}
+
+	/**
+	 * readObject is called to restore the state of this permission from a
+	 * stream.
+	 */
+	private synchronized void readObject(java.io.ObjectInputStream s)
+			throws IOException, ClassNotFoundException {
+		// Read in the action, then initialize the rest
+		s.defaultReadObject();
+		setTransients(parseFilter(getName()), parseActions(actions));
+	}
+
+	/**
+	 * Called by {@code <@link EndpointPermission#implies(Permission)>}.
+	 * 
+	 * @return a dictionary of properties for this permission.
+	 */
+	private Dictionary<String, Object> getProperties() {
+		return properties;
+	}
+}
+
+/**
+ * Stores a set of EndpointPermission permissions.
+ * 
+ * @see java.security.Permission
+ * @see java.security.Permissions
+ * @see java.security.PermissionCollection
+ */
+final class EndpointPermissionCollection extends PermissionCollection {
+	static final long						serialVersionUID	= 662615640374640621L;
+	/**
+	 * Table of permissions.
+	 * 
+	 * @serial
+	 * @GuardedBy this
+	 */
+	private Map<String, EndpointPermission>	permissions;
+
+	/**
+	 * Boolean saying if "*" is in the collection.
+	 * 
+	 * @serial
+	 * @GuardedBy this
+	 */
+	private boolean							all_allowed;
+
+	/**
+	 * Creates an empty EndpointPermissions object.
+	 */
+	public EndpointPermissionCollection() {
+		permissions = new HashMap<String, EndpointPermission>();
+		all_allowed = false;
+	}
+
+	/**
+	 * Adds a permission to this permission collection.
+	 * 
+	 * @param permission The Permission object to add.
+	 * @throws IllegalArgumentException If the specified permission is not a
+	 *         EndpointPermission object.
+	 * @throws SecurityException If this
+	 *         {@code EndpointPermissionCollection} object has been marked
+	 *         read-only.
+	 */
+	public void add(final Permission permission) {
+		if (!(permission instanceof EndpointPermission)) {
+			throw new IllegalArgumentException("invalid permission: "
+					+ permission);
+		}
+		if (isReadOnly()) {
+			throw new SecurityException("attempt to add a Permission to a "
+					+ "readonly PermissionCollection");
+		}
+
+		final EndpointPermission ep = (EndpointPermission) permission;
+		if (ep.endpoint != null) {
+			throw new IllegalArgumentException("cannot add to collection: "
+					+ ep);
+		}
+
+		final String name = ep.getName();
+		synchronized (this) {
+			/* select the bucket for the permission */
+			Map<String, EndpointPermission> pc = permissions;
+			final EndpointPermission existing = pc.get(name);
+
+			if (existing != null) {
+				final int oldMask = existing.action_mask;
+				final int newMask = ep.action_mask;
+				if (oldMask != newMask) {
+					pc.put(name,
+							new EndpointPermission(name, oldMask | newMask));
+				}
+			}
+			else {
+				pc.put(name, ep);
+			}
+
+			if (!all_allowed) {
+				if (name.equals("*")) {
+					all_allowed = true;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Determines if a set of permissions implies the permissions expressed in
+	 * {@code permission}.
+	 * 
+	 * @param permission The Permission object to compare.
+	 * @return {@code true} if {@code permission} is a proper subset
+	 *         of a permission in the set; {@code false} otherwise.
+	 */
+	public boolean implies(final Permission permission) {
+		if (!(permission instanceof EndpointPermission)) {
+			return false;
+		}
+		final EndpointPermission requested = (EndpointPermission) permission;
+		/* if requested permission has a filter, then it is an invalid argument */
+		if (requested.filter != null) {
+			return false;
+		}
+		int effective = EndpointPermission.ACTION_NONE;
+		Collection<EndpointPermission> perms;
+		synchronized (this) {
+			final int desired = requested.action_mask;
+			/* short circuit if the "*" Permission was added */
+			if (all_allowed) {
+				EndpointPermission ep = permissions.get("*");
+				if (ep != null) {
+					effective |= ep.action_mask;
+					if ((effective & desired) == desired) {
+						return true;
+					}
+				}
+			}
+			perms = permissions.values();
+		}
+
+		/* iterate one by one over permissions */
+		for (Iterator<EndpointPermission> iter = perms.iterator(); iter
+				.hasNext();) {
+			if (iter.next().implies0(requested, effective)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Returns an enumeration of all the {@code EndpointPermission} objects
+	 * in the container.
+	 * 
+	 * @return Enumeration of all the EndpointPermission objects.
+	 */
+	public synchronized Enumeration<Permission> elements() {
+		List<Permission> all = new ArrayList<Permission>(permissions.values());
+		return Collections.enumeration(all);
+	}
+
+	/* serialization logic */
+	private static final ObjectStreamField[]	serialPersistentFields	= {
+			new ObjectStreamField("permissions", HashMap.class),
+			new ObjectStreamField("all_allowed", Boolean.TYPE)			};
+
+	private synchronized void writeObject(ObjectOutputStream out)
+			throws IOException {
+		ObjectOutputStream.PutField pfields = out.putFields();
+		pfields.put("permissions", permissions);
+		pfields.put("all_allowed", all_allowed);
+		out.writeFields();
+	}
+
+	private synchronized void readObject(java.io.ObjectInputStream in)
+			throws IOException, ClassNotFoundException {
+		ObjectInputStream.GetField gfields = in.readFields();
+		permissions = (HashMap<String, EndpointPermission>) gfields.get(
+				"permissions", new HashMap<String, EndpointPermission>());
+		all_allowed = gfields.get("all_allowed", false);
+	}
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ExportReference.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ExportReference.java
new file mode 100644
index 0000000..18b917b
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ExportReference.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * An Export Reference associates a service with a local endpoint.
+ * 
+ * The Export Reference can be used to reference an exported service. When the
+ * service is no longer exported, all methods must return {@code null}.
+ * 
+ * @ThreadSafe
+ * @noimplement
+ * @version $Id: 282839133c0934b5b636098f96994a95674e0f24 $
+ */
+public interface ExportReference {
+	/**
+	 * Return the service being exported.
+	 * 
+	 * @return The service being exported. Must be {@code null} when the
+	 *         service is no longer exported.
+	 */
+	ServiceReference getExportedService();
+
+	/**
+	 * Return the Endpoint Description for the local endpoint.
+	 * 
+	 * @return The Endpoint Description for the local endpoint. Must be
+	 *         {@code null} when the service is no longer exported.
+	 */
+	EndpointDescription getExportedEndpoint();
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ExportRegistration.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ExportRegistration.java
new file mode 100644
index 0000000..012e38d
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ExportRegistration.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import java.util.Map;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * An Export Registration associates a service to a local endpoint.
+ * 
+ * The Export Registration can be used to delete the endpoint associated with an
+ * this registration. It is created with the
+ * {@link RemoteServiceAdmin#exportService(ServiceReference,Map)} method.
+ * 
+ * When this Export Registration has been closed, all methods must return
+ * {@code null}.
+ * 
+ * @ThreadSafe
+ * @noimplement
+ * @version $Id: d215ae704a94dd944d2311c81fa32a4647351713 $
+ */
+public interface ExportRegistration {
+	/**
+	 * Return the Export Reference for the exported service.
+	 * 
+	 * @return The Export Reference for this registration.
+	 * @throws IllegalStateException When this registration was not properly
+	 *         initialized. See {@link #getException()}.
+	 */
+	ExportReference getExportReference();
+
+	/**
+	 * Delete the local endpoint and disconnect any remote distribution
+	 * providers. After this method returns, all methods must return
+	 * {@code null}.
+	 * 
+	 * This method has no effect when this registration has already been closed
+	 * or is being closed.
+	 */
+	void close();
+
+	/**
+	 * Return the exception for any error during the export process.
+	 * 
+	 * If the Remote Service Admin for some reasons is unable to properly
+	 * initialize this registration, then it must return an exception from this
+	 * method. If no error occurred, this method must return {@code null}.
+	 * 
+	 * The error must be set before this Export Registration is returned.
+	 * Asynchronously occurring errors must be reported to the log.
+	 * 
+	 * @return The exception that occurred during the initialization of this
+	 *         registration or {@code null} if no exception occurred.
+	 */
+	Throwable getException();
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ImportReference.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ImportReference.java
new file mode 100644
index 0000000..751b5ed
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ImportReference.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * An Import Reference associates an active proxy service to a remote endpoint.
+ * 
+ * The Import Reference can be used to reference an imported service. When the
+ * service is no longer imported, all methods must return {@code null}.
+ * 
+ * @ThreadSafe
+ * @noimplement
+ * @version $Id: 943a38c0869cbe8cb9e04af62d4ac8169ad807ce $
+ */
+public interface ImportReference {
+	/**
+	 * Return the Service Reference for the proxy for the endpoint.
+	 * 
+	 * @return The Service Reference to the proxy for the endpoint. Must be
+	 *         {@code null} when the service is no longer imported.
+	 */
+	ServiceReference getImportedService();
+
+	/**
+	 * Return the Endpoint Description for the remote endpoint.
+	 * 
+	 * @return The Endpoint Description for the remote endpoint. Must be
+	 *         {@code null} when the service is no longer imported.
+	 */
+	EndpointDescription getImportedEndpoint();
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ImportRegistration.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ImportRegistration.java
new file mode 100644
index 0000000..e387c4a
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/ImportRegistration.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+/**
+ * An Import Registration associates an active proxy service to a remote
+ * endpoint.
+ * 
+ * The Import Registration can be used to delete the proxy associated with an
+ * endpoint. It is created with the
+ * {@link RemoteServiceAdmin#importService(EndpointDescription)} method.
+ * 
+ * When this Import Registration has been closed, all methods must return
+ * {@code null}.
+ * 
+ * @ThreadSafe
+ * @noimplement
+ * @version $Id: e8a83aa65f535311cde90a8e7e1667540f887440 $
+ */
+public interface ImportRegistration {
+	/**
+	 * Return the Import Reference for the imported service.
+	 * 
+	 * @return The Import Reference for this registration.
+	 * @throws IllegalStateException When this registration was not properly
+	 *         initialized. See {@link #getException()}.
+	 */
+	ImportReference getImportReference();
+
+	/**
+	 * Close this Import Registration. This must close the connection to the
+	 * endpoint and unregister the proxy. After this method returns, all other
+	 * methods must return {@code null}.
+	 * 
+	 * This method has no effect when this registration has already been closed
+	 * or is being closed.
+	 */
+	void close();
+
+	/**
+	 * Return the exception for any error during the import process.
+	 * 
+	 * If the Remote Service Admin for some reasons is unable to properly
+	 * initialize this registration, then it must return an exception from this
+	 * method. If no error occurred, this method must return {@code null}.
+	 * 
+	 * The error must be set before this Import Registration is returned.
+	 * Asynchronously occurring errors must be reported to the log.
+	 * 
+	 * @return The exception that occurred during the initialization of this
+	 *         registration or {@code null} if no exception occurred.
+	 */
+	Throwable getException();
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteConstants.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteConstants.java
new file mode 100644
index 0000000..b768c4f
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteConstants.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import org.osgi.framework.Constants;
+
+/**
+ * Provide the definition of the constants used in the Remote Service Admin
+ * specification.
+ * 
+ * @Immutable
+ * @version $Id: 03766065c89cec9d6b51caf9617d024fd18e4bc4 $
+ */
+public class RemoteConstants {
+	private RemoteConstants() {
+		// non-instantiable
+	}
+
+	/**
+	 * Service property identifying the configuration types supported by a
+	 * distribution provider. Registered by the distribution provider on one of
+	 * its services to indicate the supported configuration types.
+	 * 
+	 * <p>
+	 * The value of this property must be of type {@code String},
+	 * {@code String[]}, or {@code Collection} of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	REMOTE_CONFIGS_SUPPORTED		= Constants.REMOTE_CONFIGS_SUPPORTED;
+
+	/**
+	 * Service property identifying the intents supported by a distribution
+	 * provider. Registered by the distribution provider on one of its services
+	 * to indicate the vocabulary of implemented intents.
+	 * 
+	 * <p>
+	 * The value of this property must be of type {@code String},
+	 * {@code String[]}, or {@code Collection} of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	REMOTE_INTENTS_SUPPORTED		= Constants.REMOTE_INTENTS_SUPPORTED;
+
+	/**
+	 * Service property identifying the configuration types that should be used
+	 * to export the service. Each configuration type represents the
+	 * configuration parameters for an endpoint. A distribution provider should
+	 * create an endpoint for each configuration type that it supports.
+	 * 
+	 * <p>
+	 * This property may be supplied in the {@code properties}
+	 * {@code Dictionary} object passed to the
+	 * {@code BundleContext.registerService} method. The value of this property
+	 * must be of type {@code String}, {@code String[]}, or {@code Collection}
+	 * of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	SERVICE_EXPORTED_CONFIGS		= Constants.SERVICE_EXPORTED_CONFIGS;
+
+	/**
+	 * Service property identifying the intents that the distribution provider
+	 * must implement to distribute the service. Intents listed in this property
+	 * are reserved for intents that are critical for the code to function
+	 * correctly, for example, ordering of messages. These intents should not be
+	 * configurable.
+	 * 
+	 * <p>
+	 * This property may be supplied in the {@code properties}
+	 * {@code Dictionary} object passed to the
+	 * {@code BundleContext.registerService} method. The value of this property
+	 * must be of type {@code String}, {@code String[]}, or {@code Collection}
+	 * of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	SERVICE_EXPORTED_INTENTS		= Constants.SERVICE_EXPORTED_INTENTS;
+
+	/**
+	 * Service property identifying the extra intents that the distribution
+	 * provider must implement to distribute the service. This property is
+	 * merged with the {@code service.exported.intents} property before the
+	 * distribution provider interprets the listed intents; it has therefore the
+	 * same semantics but the property should be configurable so the
+	 * administrator can choose the intents based on the topology. Bundles
+	 * should therefore make this property configurable, for example through the
+	 * Configuration Admin service.
+	 * 
+	 * <p>
+	 * This property may be supplied in the {@code properties}
+	 * {@code Dictionary} object passed to the
+	 * {@code BundleContext.registerService} method. The value of this property
+	 * must be of type {@code String}, {@code String[]}, or {@code Collection}
+	 * of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	SERVICE_EXPORTED_INTENTS_EXTRA	= Constants.SERVICE_EXPORTED_INTENTS_EXTRA;
+
+	/**
+	 * Service property marking the service for export. It defines the
+	 * interfaces under which this service can be exported. This list must be a
+	 * subset of the types under which the service was registered. The single
+	 * value of an asterisk (&quot;*&quot;, &#92;u002A) indicates all the
+	 * interface types under which the service was registered excluding the
+	 * non-interface types. It is strongly recommended to only export interface
+	 * types and not concrete classes due to the complexity of creating proxies
+	 * for some type of concrete classes.
+	 * 
+	 * <p>
+	 * This property may be supplied in the {@code properties}
+	 * {@code Dictionary} object passed to the
+	 * {@code BundleContext.registerService} method. The value of this property
+	 * must be of type {@code String}, {@code String[]}, or {@code Collection}
+	 * of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	SERVICE_EXPORTED_INTERFACES		= Constants.SERVICE_EXPORTED_INTERFACES;
+
+	/**
+	 * Service property identifying the service as imported. This service
+	 * property must be set by a distribution provider to any value when it
+	 * registers the endpoint proxy as an imported service. A bundle can use
+	 * this property to filter out imported services.
+	 * 
+	 * <p>
+	 * The value of this property may be of any type.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	SERVICE_IMPORTED				= Constants.SERVICE_IMPORTED;
+
+	/**
+	 * Service property identifying the configuration types used to import the
+	 * service. Any associated properties for this configuration types must be
+	 * properly mapped to the importing system. For example, a URL in these
+	 * properties must point to a valid resource when used in the importing
+	 * framework. If multiple configuration types are listed in this property,
+	 * then they must be synonyms for exactly the same remote endpoint that is
+	 * used to export this service.
+	 * 
+	 * <p>
+	 * The value of this property must be of type {@code String},
+	 * {@code String[]}, or {@code Collection} of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 * @see #SERVICE_EXPORTED_CONFIGS
+	 */
+	public static final String	SERVICE_IMPORTED_CONFIGS		= Constants.SERVICE_IMPORTED_CONFIGS;
+
+	/**
+	 * Service property identifying the intents that this service implement.
+	 * This property has a dual purpose:
+	 * <ul>
+	 * <li>A bundle can use this service property to notify the distribution
+	 * provider that these intents are already implemented by the exported
+	 * service object.</li>
+	 * <li>A distribution provider must use this property to convey the combined
+	 * intents of: The exporting service, and the intents that the exporting
+	 * distribution provider adds, and the intents that the importing
+	 * distribution provider adds.</li>
+	 * </ul>
+	 * 
+	 * To export a service, a distribution provider must expand any qualified
+	 * intents. Both the exporting and importing distribution providers must
+	 * recognize all intents before a service can be distributed.
+	 * 
+	 * The value of this property must be of type {@code String},
+	 * {@code String[]}, or {@code Collection} of {@code String}.
+	 * 
+	 * @see "Remote Services Specification"
+	 */
+	public static final String	SERVICE_INTENTS					= Constants.SERVICE_INTENTS;
+
+	/* The above are from Ch. 13 Remote Services specification. */
+
+	/**
+	 * Endpoint property identifying the id for this endpoint. This service
+	 * property must always be set.
+	 * 
+	 * <p>
+	 * The value of this property must be of type {@code String}.
+	 */
+	public final static String	ENDPOINT_ID						= "endpoint.id";
+
+	/**
+	 * Endpoint property identifying the service id of the exported service. Can
+	 * be absent or 0 if the corresponding endpoint is not for an OSGi service.
+	 * 
+	 * <p>
+	 * The value of this property must be of type {@code Long}.
+	 */
+	public final static String	ENDPOINT_SERVICE_ID				= "endpoint.service.id";
+
+	/**
+	 * Endpoint property identifying the universally unique id of the exporting
+	 * framework. Can be absent if the corresponding endpoint is not for an OSGi
+	 * service.
+	 * 
+	 * <p>
+	 * The value of this property must be of type {@code String}.
+	 */
+	public final static String	ENDPOINT_FRAMEWORK_UUID			= "endpoint.framework.uuid";
+
+	/**
+	 * Prefix for an endpoint property identifying the interface Java package
+	 * version for an interface. For example, the property
+	 * {@code endpoint.package.version.com.acme=1.3} describes the version
+	 * of the package for the {@code com.acme.Foo} interface. This endpoint
+	 * property for an interface package does not have to be set. If not set,
+	 * the value must be assumed to be 0.
+	 * 
+	 * <p>
+	 * Since endpoint properties are stored in a case insensitive map, case
+	 * variants of a package name are folded together.
+	 * 
+	 * <p>
+	 * The value of properties having this prefix must be of type
+	 * {@code String}.
+	 */
+	public final static String	ENDPOINT_PACKAGE_VERSION_		= "endpoint.package.version.";
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
new file mode 100644
index 0000000..919469d
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A Remote Service Admin manages the import and export of services.
+ * 
+ * A Distribution Provider can expose a control interface. This interface allows
+ * a Topology Manager to control the export and import of services.
+ * 
+ * The API allows a Topology Manager to export a service, to import a service,
+ * and find out about the current imports and exports.
+ * 
+ * @ThreadSafe
+ * @noimplement
+ * @version $Id: 7b2e01c324cc2d04a06f7d7addfe9ea1af1dc7ad $
+ */
+public interface RemoteServiceAdmin {
+
+	/**
+	 * Export a service to a given Endpoint. The Remote Service Admin must
+	 * create an Endpoint from the given description that can be used by other
+	 * Distribution Providers to connect to this Remote Service Admin and use
+	 * the exported service.
+	 * 
+	 * The property keys of a Service Reference are case insensitive while the
+	 * property keys of the specified {@code properties} map are case
+	 * sensitive. A property key in the specified {@code properties} map
+	 * must therefore override any case variant property key in the properties
+	 * of the specified Service Reference.
+	 * 
+	 * <p>
+	 * If the caller does not have the appropriate
+	 * {@code EndpointPermission[endpoint,EXPORT]} for an Endpoint, and the
+	 * Java Runtime Environment supports permissions, then the
+	 * {@link ExportRegistration#getException() getException} method on the
+	 * corresponding returned {@link ExportRegistration} will return a
+	 * {@code SecurityException}.
+	 * 
+	 * @param reference The Service Reference to export.
+	 * @param properties The properties to create a local Endpoint that can be
+	 *        implemented by this Remote Service Admin. If this is
+	 *        {@code null}, the Endpoint will be determined by the
+	 *        properties on the service. The properties are the same as given
+	 *        for an exported service. They override any properties in the
+	 *        specified Service Reference (case insensitive). The properties
+	 *        {@code objectClass} and {@code service.id}, in any case
+	 *        variant, are ignored. Those properties in the Service Reference
+	 *        cannot be overridden. This parameter can be {@code null},
+	 *        this should be treated as an empty map.
+	 * @return A {@code Collection} of {@link ExportRegistration}s for the
+	 *         specified Service Reference and properties. Multiple Export
+	 *         Registrations may be returned because a single service can be
+	 *         exported to multiple Endpoints depending on the available
+	 *         configuration type properties. The result is never
+	 *         {@code null} but may be empty if this Remove Service Admin
+	 *         does not recognize any of the configuration types.
+	 * @throws IllegalArgumentException If any of the properties has a value
+	 *         that is not syntactically correct or if the service properties
+	 *         and the overlaid properties do not contain a
+	 *         {@link RemoteConstants#SERVICE_EXPORTED_INTERFACES} entry.
+	 * @throws UnsupportedOperationException If any of the intents expressed
+	 *         through the properties is not supported by the distribution
+	 *         provider.
+	 */
+	Collection<ExportRegistration> exportService(ServiceReference reference,
+			Map<String, ? > properties);
+
+	/**
+	 * Import a service from an Endpoint. The Remote Service Admin must use the
+	 * given Endpoint to create a proxy. This method can return
+	 * {@code null} if the service could not be imported.
+	 * 
+	 * @param endpoint The Endpoint Description to be used for import.
+	 * @return An Import Registration that combines the Endpoint Description and
+	 *         the Service Reference or {@code null} if the Endpoint could
+	 *         not be imported.
+	 * @throws SecurityException If the caller does not have the appropriate
+	 *         {@code EndpointPermission[endpoint,IMPORT]} for the
+	 *         Endpoint, and the Java Runtime Environment supports permissions.
+	 */
+	ImportRegistration importService(EndpointDescription endpoint);
+
+	/**
+	 * Return the currently active Export References.
+	 * 
+	 * <p>
+	 * If the caller does not have the appropriate
+	 * {@code EndpointPermission[endpoint,READ]} for an Endpoint, and the
+	 * Java Runtime Environment supports permissions, then returned collection
+	 * will not contain a reference to the exported Endpoint.
+	 * 
+	 * @return A {@code Collection} of {@link ExportReference}s that are
+	 *         currently active.
+	 */
+	Collection<ExportReference> getExportedServices();
+
+	/**
+	 * Return the currently active Import References.
+	 * 
+	 * <p>
+	 * If the caller does not have the appropriate
+	 * {@code EndpointPermission[endpoint,READ]} for an Endpoint, and the
+	 * Java Runtime Environment supports permissions, then returned collection
+	 * will not contain a reference to the imported Endpoint.
+	 * 
+	 * @return A {@code Collection} of {@link ImportReference}s that are
+	 *         currently active.
+	 */
+	Collection<ImportReference> getImportedEndpoints();
+
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
new file mode 100644
index 0000000..22c0b2f
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+import org.osgi.framework.Bundle;
+
+/**
+ * Provides the event information for a Remote Service Admin event.
+ * 
+ * @Immutable
+ * @version $Id: 3b212dcbb7822a3312e20cd967f46bf49b3bb82a $
+ */
+public class RemoteServiceAdminEvent {
+	/**
+	 * Add an import registration. The Remote Service Admin will call this
+	 * method when it imports a service. When this service is registered, the
+	 * Remote Service Admin must notify the listener of all existing Import
+	 * Registrations.
+	 * 
+	 */
+	public static final int			IMPORT_REGISTRATION		= 1;
+
+	/**
+	 * Add an export registration. The Remote Service Admin will call this
+	 * method when it exports a service. When this service is registered, the
+	 * Remote Service Admin must notify the listener of all existing Export
+	 * Registrations.
+	 */
+	public static final int			EXPORT_REGISTRATION		= 2;
+
+	/**
+	 * Remove an export registration. The Remote Service Admin will call this
+	 * method when it removes the export of a service.
+	 * 
+	 */
+	public static final int			EXPORT_UNREGISTRATION	= 3;
+
+	/**
+	 * Remove an import registration. The Remote Service Admin will call this
+	 * method when it removes the import of a service.
+	 * 
+	 */
+	public static final int			IMPORT_UNREGISTRATION	= 4;
+
+	/**
+	 * A fatal importing error occurred. The Import Registration has been
+	 * closed.
+	 */
+	public static final int			IMPORT_ERROR			= 5;
+
+	/**
+	 * A fatal exporting error occurred. The Export Registration has been
+	 * closed.
+	 */
+	public static final int			EXPORT_ERROR			= 6;
+
+	/**
+	 * A problematic situation occurred, the export is still active.
+	 */
+	public static final int			EXPORT_WARNING			= 7;
+	/**
+	 * A problematic situation occurred, the import is still active.
+	 */
+	public static final int			IMPORT_WARNING			= 8;
+
+	private final ImportReference	importReference;
+	private final ExportReference	exportReference;
+	private final Throwable			exception;
+	private final int				type;
+	private final Bundle			source;
+
+	/**
+	 * Private constructor.
+	 * 
+	 * @param type The event type
+	 * @param source The source bundle, must not be {@code null}.
+	 * @param importReference The importReference, can be {@code null}.
+	 * @param exportReference The exportReference, can be {@code null}.
+	 * @param exception Any exceptions encountered, can be {@code null}
+	 */
+	private RemoteServiceAdminEvent(int type, Bundle source,
+			ImportReference importReference, ExportReference exportReference,
+			Throwable exception) {
+		if (source == null) {
+			throw new NullPointerException("source must not be null");
+		}
+		this.type = type;
+		this.source = source;
+		this.importReference = importReference;
+		this.exportReference = exportReference;
+		this.exception = exception;
+	}
+
+	/**
+	 * Create a Remote Service Admin Event for an export notification.
+	 * 
+	 * @param type The event type.
+	 * @param source The source bundle, must not be {@code null}.
+	 * @param exportReference The exportReference, can not be {@code null}.
+	 * @param exception Any exceptions encountered, can be {@code null}.
+	 */
+	public RemoteServiceAdminEvent(int type, Bundle source,
+			ExportReference exportReference, Throwable exception) {
+		this(type, source, null, exportReference, exception);
+	}
+
+	/**
+	 * Create a Remote Service Admin Event for an import notification.
+	 * 
+	 * @param type The event type.
+	 * @param source The source bundle, must not be {@code null}.
+	 * @param importReference The importReference, can not be {@code null}.
+	 * @param exception Any exceptions encountered, can be {@code null}.
+	 */
+	public RemoteServiceAdminEvent(int type, Bundle source,
+			ImportReference importReference, Throwable exception) {
+		this(type, source, importReference, null, exception);
+	}
+
+	/**
+	 * Return the Import Reference for this event.
+	 * 
+	 * @return The Import Reference or {@code null}.
+	 */
+	public ImportReference getImportReference() {
+		return importReference;
+	}
+
+	/**
+	 * Return the Export Reference for this event.
+	 * 
+	 * @return The Export Reference or {@code null}.
+	 */
+	public ExportReference getExportReference() {
+		return exportReference;
+	}
+
+	/**
+	 * Return the exception for this event.
+	 * 
+	 * @return The exception or {@code null}.
+	 */
+	public Throwable getException() {
+		return exception;
+	}
+
+	/**
+	 * Return the type of this event.
+	 * 
+	 * @return The type of this event.
+	 */
+	public int getType() {
+		return type;
+	}
+
+	/**
+	 * Return the bundle source of this event.
+	 * 
+	 * @return The bundle source of this event.
+	 */
+	public Bundle getSource() {
+		return source;
+	}
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
new file mode 100644
index 0000000..7691b72
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) OSGi Alliance (2009, 2010). All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.osgi.service.remoteserviceadmin;
+
+/**
+ * A {@link RemoteServiceAdminEvent} listener is notified synchronously of any
+ * export or import registrations and unregistrations.
+ * 
+ * <p>
+ * If the Java Runtime Environment supports permissions, then filtering is done.
+ * {@code RemoteServiceAdminEvent} objects are only delivered to the
+ * listener if the bundle which defines the listener object's class has the
+ * appropriate {@code EndpointPermission[endpoint,READ]} for the endpoint
+ * referenced by the event.
+ * 
+ * 
+ * @see RemoteServiceAdminEvent
+ * @ThreadSafe
+ * @version $Id: 824fb19364804de5ecd00695547134044847600d $
+ */
+
+public interface RemoteServiceAdminListener {
+	/**
+	 * Receive notification of any export or import registrations and
+	 * unregistrations as well as errors and warnings.
+	 * 
+	 * @param event The {@link RemoteServiceAdminEvent} object.
+	 */
+	void remoteAdminEvent(RemoteServiceAdminEvent event);
+}
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/package-info.java b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/package-info.java
new file mode 100644
index 0000000..8687a9a
--- /dev/null
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src/org/osgi/service/remoteserviceadmin/package-info.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) OSGi Alliance (2010). All Rights Reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Remote Service Admin Package Version 1.0.
+ * 
+ * <p>
+ * Bundles wishing to use this package must list the package in the
+ * Import-Package header of the bundle's manifest. This package has two types of
+ * users: the consumers that use the API in this package and the providers that
+ * implement the API in this package.
+ * 
+ * <p>
+ * Example import for consumers using the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.remoteserviceadmin; version="[1.0,2.0)"}
+ * <p>
+ * Example import for providers implementing the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.remoteserviceadmin; version="[1.0,1.1)"}
+ * 
+ * @version $Id: 2df93207eb7823d0b80b99275312519a7cb635e8 $
+ */
+
+package org.osgi.service.remoteserviceadmin;
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/META-INF/MANIFEST.MF b/protocols/bundles/ch.ethz.iks.r_osgi.remote/META-INF/MANIFEST.MF
index c28658b..b999a71 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/META-INF/MANIFEST.MF
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/META-INF/MANIFEST.MF
@@ -2,9 +2,9 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: ch.ethz.iks.r_osgi.remote
-Bundle-Version: 1.0.0.RC4_qualifier
+Bundle-Version: 1.0.1.RC1_qualifier
 Bundle-Vendor: %plugin.provider
-Import-Package: org.objectweb.asm;version="[3.1.0,4.0.0)",
+Import-Package: org.objectweb.asm;version="[5.0.1,6.0.0)",
  org.osgi.framework,
  org.osgi.service.event,
  org.osgi.service.log,
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/pom.xml b/protocols/bundles/ch.ethz.iks.r_osgi.remote/pom.xml
index 0ee6cf3..d13cf65 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/pom.xml
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/pom.xml
@@ -58,9 +58,9 @@
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>asm</groupId>
+			<groupId>org.ow2.asm</groupId>
 			<artifactId>asm</artifactId>
-			<version>3.0</version>
+			<version>5.0.1</version>
 		</dependency>
 		<dependency>
         	<groupId>junit</groupId>
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
index 85acd85..b88d717 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
@@ -44,7 +44,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.StringTokenizer;
 
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
@@ -85,6 +84,7 @@
 import ch.ethz.iks.r_osgi.streams.OutputStreamHandle;
 import ch.ethz.iks.r_osgi.streams.OutputStreamProxy;
 import ch.ethz.iks.util.CollectionUtils;
+import ch.ethz.iks.util.StringUtils;
 
 /**
  * <p>
@@ -819,10 +819,10 @@
 				// store the bundle for state updates and cleanup
 				proxyBundles.put(ref.getURI().getFragment(), bundle);
 			}
-
+			
 			// start the bundle
-			bundle.start();
-
+			bundle.start();			
+			
 		} catch (final BundleException e) {
 			final Throwable nested = e.getNestedException() == null ? e : e
 					.getNestedException();
@@ -866,13 +866,14 @@
 	 */
 	private String[] getTokens(final String str) {
 		final ArrayList result = new ArrayList();
-		final StringTokenizer tokenizer = new StringTokenizer(str, ",");
-		while (tokenizer.hasMoreTokens()) {
-			final String token = tokenizer.nextToken();
+		//final StringTokenizer tokenizer = new StringTokenizer(str, ",");
+		final String[] tokens = StringUtils.stringToArray(str, ",");
+		
+		for (int i=0; i<tokens.length; i++) {
 			final int pos;
 			// TODO: handle versions for R4!
-			final String pkg = (pos = token.indexOf(";")) > -1 ? token
-					.substring(0, pos).trim() : token.trim();
+			final String pkg = (pos = tokens[i].indexOf(";")) > -1 ? tokens[i]
+					.substring(0, pos).trim() : tokens[i].trim();
 			if (!RemoteOSGiServiceImpl.checkPackageImport(pkg)) {
 				result.add(pkg);
 			}
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/CodeAnalyzer.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/CodeAnalyzer.java
index 62dd554..541ccf6 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/CodeAnalyzer.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/CodeAnalyzer.java
@@ -67,7 +67,7 @@
  * @author Jan S. Rellermeyer, ETH Zurich
  * @since 0.6
  */
-final class CodeAnalyzer implements ClassVisitor {
+final class CodeAnalyzer extends ClassVisitor {
 
 	/**
 	 * the class loader of the service provider bundle.
@@ -128,6 +128,7 @@
 	 */
 	CodeAnalyzer(final ClassLoader loader, final String imports,
 			final String exports) {
+		super(Opcodes.ASM5);
 		this.loader = loader;
 
 		if (imports != null) {
@@ -136,8 +137,8 @@
 			for (int i = 0; i < tokens.length; i++) {
 				final int pos = tokens[i].indexOf(";"); //$NON-NLS-1$
 				if (pos > -1) {
-					importsMap.put(tokens[i].substring(0, pos), tokens[i]
-							.substring(pos + 1, tokens[i].length()));
+					importsMap.put(tokens[i].substring(0, pos),
+							tokens[i].substring(pos + 1, tokens[i].length()));
 				} else {
 					importsMap.put(tokens[i], null);
 				}
@@ -152,8 +153,8 @@
 			for (int i = 0; i < tokens.length; i++) {
 				final int pos = tokens[i].indexOf(";"); //$NON-NLS-1$
 				if (pos > -1) {
-					exportsMap.put(tokens[i].substring(0, pos), tokens[i]
-							.substring(pos + 1, tokens[i].length()));
+					exportsMap.put(tokens[i].substring(0, pos),
+							tokens[i].substring(pos + 1, tokens[i].length()));
 				} else {
 					exportsMap.put(tokens[i], null);
 				}
@@ -184,8 +185,8 @@
 	DeliverServiceMessage analyze(final String[] ifaces,
 			final String smartProxy, final String[] explicitInjections,
 			final String presentation) throws ClassNotFoundException,
-			IOException {		
-		
+			IOException {
+
 		closure.addAll(Arrays.asList(ifaces));
 
 		if (smartProxy != null) {
@@ -197,11 +198,11 @@
 		if (explicitInjections != null) {
 			closure.addAll(Arrays.asList(explicitInjections));
 		}
-		
+
 		while (!closure.isEmpty()) {
 			visit((String) closure.remove(0));
 		}
-		
+
 		for (int i = 0; i < ifaces.length; i++) {
 			proxyImports.add(packageOf(ifaces[i]));
 			proxyExports.add(packageOf(ifaces[i]));
@@ -217,7 +218,7 @@
 		final StringBuffer exportDeclaration = new StringBuffer();
 		final String[] pi = (String[]) proxyImports
 				.toArray(new String[proxyImports.size()]);
-		
+
 		for (int i = 0; i < pi.length; i++) {
 			importDeclaration.append(pi[i]);
 			final Object v = importsMap.get(pi[i]);
@@ -269,8 +270,8 @@
 	 */
 	private void visit(final String className) throws ClassNotFoundException {
 		currentClass = className.replace('.', '/');
-		// remove array indicators 
-		if(currentClass.startsWith("[L")) {
+		// remove array indicators
+		if (currentClass.startsWith("[L")) {
 			currentClass = currentClass.substring(2);
 		} else if (currentClass.startsWith("L")) {
 			currentClass = currentClass.substring(1);
@@ -283,14 +284,14 @@
 			proxyExports.add(pkg);
 		}
 		try {
-			final ClassReader reader = new ClassReader(loader
-					.getResourceAsStream(classFile));
+			final ClassReader reader = new ClassReader(
+					loader.getResourceAsStream(classFile));
 
 			injections.put(classFile, reader.b);
 			if (exportsMap.containsKey(pkg)) {
 				proxyExports.add(pkg);
 			}
-			reader.accept(this, ClassReader.SKIP_DEBUG 
+			reader.accept(this, ClassReader.SKIP_DEBUG
 					+ ClassReader.SKIP_FRAMES);
 		} catch (final IOException ioe) {
 			throw new ClassNotFoundException(className);
@@ -316,7 +317,7 @@
 	 *            the type.
 	 */
 	void visitType(final Type t) {
-		
+
 		if (t.getSort() < Type.ARRAY) {
 			visited.add(t.getClassName());
 			return;
@@ -367,7 +368,7 @@
 	public void visit(final int version, final int access, final String name,
 			final String signature, final String superName,
 			final String[] interfaces) {
-		
+
 		if (superName != null && !visited.contains(superName)) {
 			visitType(Type.getType('L' + superName + ';'));
 		}
@@ -486,7 +487,11 @@
 	 * 
 	 * @author Jan S. Rellermeyer, ETH Zurich
 	 */
-	final class MethodAnalyzer implements MethodVisitor {
+	final class MethodAnalyzer extends MethodVisitor {
+
+		protected MethodAnalyzer() {
+			super(Opcodes.ASM5);
+		}
 
 		/**
 		 * 
@@ -495,6 +500,7 @@
 		 */
 		public AnnotationVisitor visitAnnotation(final String desc,
 				final boolean visible) {
+
 			if (!visited.contains(desc)) {
 				visitType(Type.getType("L" + desc + ";")); //$NON-NLS-1$ //$NON-NLS-2$
 			}
@@ -639,6 +645,17 @@
 		}
 
 		/**
+		 * @see org.objectweb.asm.MethodVisitor#visitMethodInsn(int,
+		 *      java.lang.String, java.lang.String, java.lang.String, boolean)
+		 */
+		public void visitMethodInsn(int opcode, String owner, String name,
+				String desc, boolean itf) {
+			if (!visited.contains(owner)) {
+				visitType(Type.getType("L" + owner + ";")); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		}
+
+		/**
 		 * 
 		 * @see org.objectweb.asm.MethodVisitor#visitMultiANewArrayInsn(java.lang.String,
 		 *      int)
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ProxyGenerator.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ProxyGenerator.java
index a793609..32f8d3a 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ProxyGenerator.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ProxyGenerator.java
@@ -46,13 +46,11 @@
 
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.Attribute;
-import org.objectweb.asm.ClassAdapter;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.ClassWriter;
 import org.objectweb.asm.FieldVisitor;
 import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodAdapter;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
@@ -72,7 +70,7 @@
  * @author Jan S. Rellermeyer, ETH Zurich.
  * @since 0.1
  */
-class ProxyGenerator implements ClassVisitor, Opcodes {
+class ProxyGenerator extends ClassVisitor implements Opcodes {
 
 	/**
 	 * sourceID.
@@ -185,7 +183,7 @@
 	 * constructor.
 	 */
 	ProxyGenerator() {
-
+		super(Opcodes.ASM5);
 	}
 
 	/**
@@ -207,9 +205,9 @@
 		injections = deliv.getInjections();
 		final byte[] bytes = deliv.getSmartProxyName() == null ? generateProxyClass(
 				deliv.getInterfaceNames(), deliv.getInterfaceClass())
-				: generateProxyClass(deliv.getInterfaceNames(), deliv
-						.getInterfaceClass(), deliv.getSmartProxyName(), deliv
-						.getProxyClass());
+				: generateProxyClass(deliv.getInterfaceNames(),
+						deliv.getInterfaceClass(), deliv.getSmartProxyName(),
+						deliv.getProxyClass());
 
 		final String className = implName.replace('/', '.');
 		JarEntry jarEntry;
@@ -221,15 +219,15 @@
 		attr.putValue("Created-By", "R-OSGi Proxy Generator"); //$NON-NLS-1$ //$NON-NLS-2$
 		attr.putValue("Bundle-Activator", className); //$NON-NLS-1$
 		attr.putValue("Bundle-Classpath", "."); //$NON-NLS-1$ //$NON-NLS-2$
-		attr.putValue("Bundle-SymbolicName", "R-OSGi Proxy Bundle generated for Endpoint " + uri.toString()); //$NON-NLS-1$ //$NON-NLS-2$
-		attr
-				.putValue(
-						"Import-Package", //$NON-NLS-1$
-						"org.osgi.framework, ch.ethz.iks.r_osgi, ch.ethz.iks.r_osgi.types, ch.ethz.iks.r_osgi.channels" //$NON-NLS-1$
-								+ ("".equals(deliv.getOptionalImports()) ? "" : ", " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		attr.putValue(
+				"Bundle-SymbolicName", "R-OSGi Proxy Bundle generated for Endpoint " + uri.toString()); //$NON-NLS-1$ //$NON-NLS-2$
+		attr.putValue(
+				"Import-Package", //$NON-NLS-1$
+				"org.osgi.framework, ch.ethz.iks.r_osgi, ch.ethz.iks.r_osgi.types, ch.ethz.iks.r_osgi.channels" //$NON-NLS-1$
+						+ ("".equals(deliv.getOptionalImports()) ? "" : ", " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 								+ deliv.getOptionalImports())
-								+ ("".equals(deliv.getImports()) ? "" : ", ") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-								+ deliv.getImports());
+						+ ("".equals(deliv.getImports()) ? "" : ", ") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+						+ deliv.getImports());
 		if (!"".equals(deliv.getExports())) { //$NON-NLS-1$
 			attr.putValue("Export-Package", deliv.getExports()); //$NON-NLS-1$
 		}
@@ -374,10 +372,9 @@
 					final ClassReader reader;
 					if (bytes == null) {
 						try {
-							final Class clazz = Class.forName(
-									superIface.replace('/', '.'));
-							ClassLoader classLoader = clazz
-									.getClassLoader();
+							final Class clazz = Class.forName(superIface
+									.replace('/', '.'));
+							ClassLoader classLoader = clazz.getClassLoader();
 							if (classLoader == null) {
 								// For classes loaded by the bootstrap CL, the
 								// CL will be null. This happens e.g. on classes
@@ -386,8 +383,9 @@
 								// (see https://bugs.eclipse.org/420112)
 								classLoader = getClass().getClassLoader();
 							}
-							reader = new ClassReader(classLoader.getResourceAsStream(
-											superIface + ".class")); //$NON-NLS-1$
+							reader = new ClassReader(
+									classLoader.getResourceAsStream(superIface
+											+ ".class")); //$NON-NLS-1$
 						} catch (final IOException ioe) {
 							throw new IOException("While processing " //$NON-NLS-1$
 									+ superIface.replace('/', '.') + ": " //$NON-NLS-1$
@@ -452,12 +450,11 @@
 				ifaces.add("org/osgi/framework/BundleActivator"); //$NON-NLS-1$
 				ifaces.addAll(Arrays.asList(serviceInterfaces));
 				// V1_1
-				writer
-						.visit(
-								(version >= V1_5 && RemoteOSGiServiceImpl.IS_JAVA5) ? V1_5
-										: V1_2, ACC_PUBLIC + ACC_SUPER,
-								implName, null, superName, (String[]) ifaces
-										.toArray(new String[ifaces.size()]));
+				writer.visit(
+						(version >= V1_5 && RemoteOSGiServiceImpl.IS_JAVA5) ? V1_5
+								: V1_2, ACC_PUBLIC + ACC_SUPER, implName, null,
+						superName, (String[]) ifaces.toArray(new String[ifaces
+								.size()]));
 
 				if (java.util.Arrays.asList(interfaces).contains(
 						"ch/ethz/iks/r_osgi/SmartProxy")) { //$NON-NLS-1$
@@ -467,12 +464,10 @@
 			} else {
 
 				// we have an interface
-				writer
-						.visit(
-								(version >= V1_5 && RemoteOSGiServiceImpl.IS_JAVA5) ? V1_5
-										: V1_2, ACC_PUBLIC + ACC_SUPER,
-								implName, null,
-								"java/lang/Object", serviceInterfaces); //$NON-NLS-1$
+				writer.visit(
+						(version >= V1_5 && RemoteOSGiServiceImpl.IS_JAVA5) ? V1_5
+								: V1_2, ACC_PUBLIC + ACC_SUPER, implName, null,
+						"java/lang/Object", serviceInterfaces); //$NON-NLS-1$
 				if (RemoteOSGiServiceImpl.PROXY_DEBUG) {
 					RemoteOSGiServiceImpl.log.log(LogService.LOG_DEBUG,
 							"Creating Proxy Bundle from Interfaces " //$NON-NLS-1$
@@ -510,16 +505,14 @@
 				method.visitVarInsn(ALOAD, 1);
 				method.visitVarInsn(ALOAD, 1);
 				method.visitLdcInsn(Remoting.class.getName());
-				method
-						.visitMethodInsn(INVOKEINTERFACE,
-								"org/osgi/framework/BundleContext", //$NON-NLS-1$
-								"getServiceReference", //$NON-NLS-1$
-								"(Ljava/lang/String;)Lorg/osgi/framework/ServiceReference;"); //$NON-NLS-1$
-				method
-						.visitMethodInsn(INVOKEINTERFACE,
-								"org/osgi/framework/BundleContext", //$NON-NLS-1$
-								"getService", //$NON-NLS-1$
-								"(Lorg/osgi/framework/ServiceReference;)Ljava/lang/Object;"); //$NON-NLS-1$
+				method.visitMethodInsn(INVOKEINTERFACE,
+						"org/osgi/framework/BundleContext", //$NON-NLS-1$
+						"getServiceReference", //$NON-NLS-1$
+						"(Ljava/lang/String;)Lorg/osgi/framework/ServiceReference;"); //$NON-NLS-1$
+				method.visitMethodInsn(INVOKEINTERFACE,
+						"org/osgi/framework/BundleContext", //$NON-NLS-1$
+						"getService", //$NON-NLS-1$
+						"(Lorg/osgi/framework/ServiceReference;)Ljava/lang/Object;"); //$NON-NLS-1$
 				method.visitTypeInsn(CHECKCAST, REMOTING_I);
 				method.visitVarInsn(ASTORE, 2);
 				method.visitVarInsn(ALOAD, 0);
@@ -563,16 +556,14 @@
 				method.visitMethodInsn(INVOKEINTERFACE, ENDPOINT_I,
 						"getProperties", //$NON-NLS-1$
 						"(Ljava/lang/String;)Ljava/util/Dictionary;"); //$NON-NLS-1$
-				method
-						.visitMethodInsn(
-								INVOKEINTERFACE,
-								"org/osgi/framework/BundleContext", //$NON-NLS-1$
-								"registerService", //$NON-NLS-1$
-								"([Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)Lorg/osgi/framework/ServiceRegistration;"); //$NON-NLS-1$
-				method
-						.visitMethodInsn(INVOKEINTERFACE, ENDPOINT_I,
-								"trackRegistration", //$NON-NLS-1$
-								"(Ljava/lang/String;Lorg/osgi/framework/ServiceRegistration;)V"); //$NON-NLS-1$
+				method.visitMethodInsn(
+						INVOKEINTERFACE,
+						"org/osgi/framework/BundleContext", //$NON-NLS-1$
+						"registerService", //$NON-NLS-1$
+						"([Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)Lorg/osgi/framework/ServiceRegistration;"); //$NON-NLS-1$
+				method.visitMethodInsn(INVOKEINTERFACE, ENDPOINT_I,
+						"trackRegistration", //$NON-NLS-1$
+						"(Ljava/lang/String;Lorg/osgi/framework/ServiceRegistration;)V"); //$NON-NLS-1$
 				method.visitVarInsn(ALOAD, 0);
 				method.visitFieldInsn(GETFIELD, implName, "endpoint", "L" //$NON-NLS-1$ //$NON-NLS-2$
 						+ ENDPOINT_I + ";"); //$NON-NLS-1$
@@ -598,10 +589,9 @@
 				method.visitVarInsn(ALOAD, 4);
 				method.visitVarInsn(ALOAD, 0);
 				method.visitVarInsn(ALOAD, 1);
-				method
-						.visitMethodInsn(INVOKEINTERFACE, UICOMP_I,
-								"initComponent", //$NON-NLS-1$
-								"(Ljava/lang/Object;Lorg/osgi/framework/BundleContext;)V"); //$NON-NLS-1$
+				method.visitMethodInsn(INVOKEINTERFACE, UICOMP_I,
+						"initComponent", //$NON-NLS-1$
+						"(Ljava/lang/Object;Lorg/osgi/framework/BundleContext;)V"); //$NON-NLS-1$
 				method.visitVarInsn(ALOAD, 1);
 				method.visitLdcInsn(ServiceUIComponent.class.getName());
 				method.visitVarInsn(ALOAD, 4);
@@ -612,12 +602,11 @@
 				method.visitMethodInsn(INVOKEINTERFACE, ENDPOINT_I,
 						"getPresentationProperties", //$NON-NLS-1$
 						"(Ljava/lang/String;)Ljava/util/Dictionary;"); //$NON-NLS-1$
-				method
-						.visitMethodInsn(
-								INVOKEINTERFACE,
-								"org/osgi/framework/BundleContext", //$NON-NLS-1$
-								"registerService", //$NON-NLS-1$
-								"(Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)Lorg/osgi/framework/ServiceRegistration;"); //$NON-NLS-1$
+				method.visitMethodInsn(
+						INVOKEINTERFACE,
+						"org/osgi/framework/BundleContext", //$NON-NLS-1$
+						"registerService", //$NON-NLS-1$
+						"(Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)Lorg/osgi/framework/ServiceRegistration;"); //$NON-NLS-1$
 				method.visitInsn(POP);
 				method.visitLabel(l0);
 				if (addLifecycleSupport) {
@@ -852,10 +841,8 @@
 					needsBoxing = true;
 				}
 			}
-			method
-					.visitMethodInsn(INVOKEINTERFACE, ENDPOINT_I,
-							"invokeMethod", //$NON-NLS-1$
-							"(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;"); //$NON-NLS-1$
+			method.visitMethodInsn(INVOKEINTERFACE, ENDPOINT_I, "invokeMethod", //$NON-NLS-1$
+					"(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;"); //$NON-NLS-1$
 
 			// unboxing of primitive type return values.
 			final Type returnType = Type.getReturnType(desc);
@@ -918,18 +905,18 @@
 		writer.visitEnd();
 	}
 
-	private final class ClassRewriter extends ClassAdapter {
+	private final class ClassRewriter extends ClassVisitor {
 
 		/**
 		 * 
 		 */
 		ClassRewriter(final ClassWriter writer) {
-			super(writer);
+			super(Opcodes.ASM5, writer);
 		}
 
 		/**
 		 * 
-		 * @see org.objectweb.asm.ClassAdapter#visit(int, int, java.lang.String,
+		 * @see org.objectweb.asm.ClassVisitor#visit(int, int, java.lang.String,
 		 *      java.lang.String, java.lang.String, java.lang.String[])
 		 */
 		public void visit(final int version, final int access,
@@ -945,7 +932,7 @@
 
 		/**
 		 * 
-		 * @see org.objectweb.asm.ClassAdapter#visitField(int, java.lang.String,
+		 * @see org.objectweb.asm.ClassVisitor#visitField(int, java.lang.String,
 		 *      java.lang.String, java.lang.String, java.lang.Object)
 		 */
 		public FieldVisitor visitField(final int access, final String name,
@@ -978,7 +965,7 @@
 
 		/**
 		 * 
-		 * @see org.objectweb.asm.ClassAdapter#visitInnerClass(java.lang.String,
+		 * @see org.objectweb.asm.ClassVisitor#visitInnerClass(java.lang.String,
 		 *      java.lang.String, java.lang.String, int)
 		 */
 		public void visitInnerClass(final String name, final String outerName,
@@ -989,7 +976,7 @@
 
 		/**
 		 * 
-		 * @see org.objectweb.asm.ClassAdapter#visitMethod(int,
+		 * @see org.objectweb.asm.ClassVisitor#visitMethod(int,
 		 *      java.lang.String, java.lang.String, java.lang.String,
 		 *      java.lang.String[])
 		 */
@@ -1011,13 +998,13 @@
 	 * 
 	 * @author Jan S. Rellermeyer, ETH Zurich
 	 */
-	private final class MethodRewriter extends MethodAdapter {
+	private final class MethodRewriter extends MethodVisitor {
 		/**
 		 * @param methodWriter
 		 *            methodWriter
 		 */
 		MethodRewriter(final MethodVisitor methodWriter) {
-			super(methodWriter);
+			super(Opcodes.ASM5, methodWriter);
 		}
 
 		/**
@@ -1070,6 +1057,16 @@
 		}
 
 		/**
+		 * @see org.objectweb.asm.MethodVisitor#visitMethodInsn(int,
+		 *      java.lang.String, java.lang.String, java.lang.String, boolean)
+		 */
+		public void visitMethodInsn(int opcode, String owner, String name,
+				String desc, boolean itf) {
+			super.mv.visitMethodInsn(opcode, checkRewrite(owner), name,
+					checkRewriteDesc(desc), itf);
+		}
+
+		/**
 		 * @param desc
 		 *            desc
 		 * @param dims
@@ -1134,8 +1131,8 @@
 	 */
 	private static String generateSourceID(final String id) {
 		final int pos1 = id.indexOf("://"); //$NON-NLS-1$
-		final char[] chars = id.substring(pos1 + 3).replace('/', '_').replace(
-				':', '_').replace('-', '_').toCharArray();
+		final char[] chars = id.substring(pos1 + 3).replace('/', '_')
+				.replace(':', '_').replace('-', '_').toCharArray();
 		final StringBuffer buffer = new StringBuffer();
 		for (int i = 0; i < chars.length; i++) {
 			if (chars[i] == '.') {
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/util/StringUtils.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/util/StringUtils.java
index 79f6bce..e0476f2 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/util/StringUtils.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/util/StringUtils.java
@@ -32,7 +32,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import java.util.StringTokenizer;
 
 /**
  * String utilities.
@@ -58,34 +57,65 @@
 	 * @return the array of strings.
 	 * @since 0.2
 	 */
-	public static String[] stringToArray(final String data, final String delim) {
-		final StringTokenizer tokenizer = new StringTokenizer(data, delim);
-		final String[] tokens = new String[tokenizer.countTokens()];
-		final int tokenCount = tokenizer.countTokens();
-		for (int i = 0; i < tokenCount; i++) {
-			tokens[i] = tokenizer.nextToken().trim();
+	public static String[] stringToArray(final String data,
+			final String delim) {
+
+		if (data == null) {
+			return new String[0];
 		}
 
-		return tokens;
+		final List tokens = new ArrayList(data.length() / 10);
+		int pointer = 0;
+		int quotePointer = 0;
+		int tokenStart = 0;
+		int nextDelimiter;
+		while ((nextDelimiter = data.indexOf(delim, pointer)) > -1) {
+			final int openingQuote = data.indexOf("\"", quotePointer);
+			int closingQuote = data.indexOf("\"", openingQuote + 1);
+			if (openingQuote > closingQuote) {
+				throw new IllegalArgumentException(
+						"Missing closing quotation mark.");
+			}
+			if (openingQuote > -1 && openingQuote < nextDelimiter
+					&& closingQuote < nextDelimiter) {
+				quotePointer = ++closingQuote;
+				continue;
+			}
+			if (openingQuote < nextDelimiter && nextDelimiter < closingQuote) {
+				pointer = ++closingQuote;
+				continue;
+			}
+			// TODO: for performance, fold the trim into the splitting
+			tokens.add(data.substring(tokenStart, nextDelimiter).trim());
+			pointer = ++nextDelimiter;
+			quotePointer = pointer;
+			tokenStart = pointer;
+		}
+		tokens.add(data.substring(tokenStart).trim());
+		return (String[]) tokens.toArray(new String[tokens.size()]);
 	}
 
 	/**
 	 * R \ L (comparison operation allows wildcards)
-	 * @param left A set of matchers (supports wildcard at end)
-	 * @param right A set of inputs
-	 * @return The subset of right with all elements removed matching left 
+	 * 
+	 * @param left
+	 *            A set of matchers (supports wildcard at end)
+	 * @param right
+	 *            A set of inputs
+	 * @return The subset of right with all elements removed matching left
 	 * @since 1.0
 	 */
 	public static Collection rightDifference(Collection left, Collection right) {
 		// This is O(n²) due to substring (wildcard) matching
 		// It's also quick and dirty (better use pattern matcher instead)
 		// TODO use pattern matcher
-		// (pattern matcher would increase the BREE dependency, but we could hide
-		// the FilterUtils implementation behind an interface and provide different
+		// (pattern matcher would increase the BREE dependency, but we could
+		// hide
+		// the FilterUtils implementation behind an interface and provide
+		// different
 		// service implementations)
 		// A trie would also allow for faster lookup.
 
-		
 		// Have to convert c1 into List to support remove operation
 		final List result = new ArrayList(right);
 
diff --git a/protocols/bundles/org.jivesoftware.smack/about.html b/protocols/bundles/org.jivesoftware.smack/about.html
index 55c15da..e2b7006 100644
--- a/protocols/bundles/org.jivesoftware.smack/about.html
+++ b/protocols/bundles/org.jivesoftware.smack/about.html
@@ -30,7 +30,7 @@
 		for informational purposes only, and you should look to the Redistributor's license for 
 		terms and conditions of use.</p>
 
-<h4>Jive Software Smack API v3.1.0</h4>
+<h4>Jive Software Smack API v3.3.1</h4>
 
 <p>This plugin is based on software developed by <a href="http://www.jivesoftware.org">Jive Software</a> project team at 
 <a href="http://www.igniterealtime.org/">http://www.igniterealtime.org/</a>.
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties
index d42b4d7..4f9564d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties
@@ -9,5 +9,5 @@
 #    Remy Chi Jian Suen <remy.suen@gmail.com> - initial API and implementation
 ################################################################################
 
-plugin.name = ECF NIO Datashare Implementation
+plugin.name = ECF DataShare NIO Provider
 plugin.provider = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.datashare/META-INF/MANIFEST.MF
index 04cb962..c0c7269 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.datashare;singleton:=true
-Bundle-Version: 1.4.100.qualifier
+Bundle-Version: 1.5.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.datashare.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties
index 64b7762..6763b5f 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties
@@ -6,6 +6,6 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF Datashare Provider
+plugin.name=ECF Generic Provider DataShare Support
 plugin.provider=Eclipse.org - ECF
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml
index bf74e66..38cd24e 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml
@@ -18,5 +18,23 @@
          <adapter type="org.eclipse.ecf.datashare.IChannelContainerAdapter"/>
       </factory>
    </extension>
+   
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.ecf.provider.generic.SSLClientSOContainer"
+            class="org.eclipse.ecf.provider.datashare.DatashareContainerAdapterFactory">
+         <adapter type="org.eclipse.ecf.datashare.IChannelContainerAdapter"/>
+      </factory>
+   </extension>
+
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.ecf.provider.generic.SSLServerSOContainer"
+            class="org.eclipse.ecf.provider.datashare.DatashareContainerAdapterFactory">
+         <adapter type="org.eclipse.ecf.datashare.IChannelContainerAdapter"/>
+      </factory>
+   </extension>
 
 </plugin>
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java
index 1c29ebf..0351781 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java
@@ -11,11 +11,11 @@
 
 package org.eclipse.ecf.internal.provider.datashare;
 
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.IStatus;
+import java.util.List;
+import org.eclipse.core.runtime.*;
 import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.PlatformHelper;
+import org.eclipse.ecf.core.util.*;
+import org.eclipse.ecf.provider.datashare.DatashareContainerAdapterFactory;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.log.LogService;
@@ -35,7 +35,7 @@
 
 	private ServiceTracker logServiceTracker = null;
 
-	private ServiceTracker adapterManagerTracker = null;
+	private AdapterManagerTracker adapterManagerTracker = null;
 
 	private ServiceTracker containerManagerTracker = null;
 
@@ -61,11 +61,32 @@
 		}
 	}
 
+	List rscAdapterFactories;
+
 	/**
 	 * This method is called upon plug-in activation
 	 */
-	public void start(BundleContext ctxt) throws Exception {
+	public void start(final BundleContext ctxt) throws Exception {
 		this.context = ctxt;
+		SafeRunner.run(new ExtensionRegistryRunnable(ctxt) {
+			protected void runWithoutRegistry() throws Exception {
+				IAdapterManager am = getAdapterManager();
+				if (am != null) {
+					IAdapterFactory af = new DatashareContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLServerSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new DatashareContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPServerSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new DatashareContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLClientSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new DatashareContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPClientSOContainer.class);
+					rscAdapterFactories.add(af);
+				}
+			}
+		});
 	}
 
 	/**
@@ -103,15 +124,10 @@
 	public IAdapterManager getAdapterManager() {
 		// First, try to get the adapter manager via
 		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
+			adapterManagerTracker = new AdapterManagerTracker(this.context);
 			adapterManagerTracker.open();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		return adapterManager;
+		return adapterManagerTracker.getAdapterManager();
 	}
 
 	/**
diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF
index 89c849e..84d8b55 100644
--- a/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.discovery;singleton:=true
-Bundle-Version: 2.1.200.qualifier
+Bundle-Version: 2.2.0.qualifier
 Bundle-Vendor: %pluginProvider
 Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework,
diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java
index 829b484..ced3201 100644
--- a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java
@@ -12,12 +12,16 @@
 
 import java.util.HashSet;
 import java.util.Properties;
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.ecf.core.ContainerConnectException;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
 import org.eclipse.ecf.core.util.Trace;
 import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
 import org.eclipse.ecf.discovery.IDiscoveryLocator;
 import org.eclipse.ecf.discovery.service.IDiscoveryService;
-import org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer;
+import org.eclipse.ecf.provider.discovery.*;
 import org.osgi.framework.*;
 import org.osgi.util.tracker.ServiceTracker;
 
@@ -47,6 +51,17 @@
 	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
 	 */
 	public void start(final BundleContext context) throws Exception {
+
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			protected void runWithoutRegistry() throws Exception {
+				context.registerService(Namespace.class, new CompositeNamespace(), null);
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.composite", new CompositeDiscoveryContainerInstantiator(), "Composite Discovery Container", true, false), null); //$NON-NLS-1$ //$NON-NLS-2$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.singleton.discovery", new SingletonDiscoveryContainerInstantiator(), "Composite Discovery Container Locator", true, false), null); //$NON-NLS-1$ //$NON-NLS-2$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.composite.locator", new CompositeDiscoveryContainerInstantiator(), "Composite Discovery Container Locator"), null); //$NON-NLS-1$ //$NON-NLS-2$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.composite.advertiser", new CompositeDiscoveryContainerInstantiator(), "Composite Discovery Container Advertiser"), null); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		});
+
 		final Properties props = new Properties();
 		props.put(IDiscoveryLocator.CONTAINER_NAME, CompositeDiscoveryContainer.NAME);
 		props.put(Constants.SERVICE_RANKING, new Integer(1000));
@@ -119,6 +134,7 @@
 				((CompositeDiscoveryContainer) service).dispose();
 			}
 		}, props);
+
 	}
 
 	/*
diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java
index e37e231..5ffc44e 100644
--- a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java
@@ -20,6 +20,10 @@
 	private static final long serialVersionUID = -4774766051014928510L;
 	public static final String NAME = "ecf.namespace.composite"; //$NON-NLS-1$
 
+	public CompositeNamespace() {
+		super(NAME, "Composite Namespace"); //$NON-NLS-1$
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[])
 	 */
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF
index e3ee241..2b7a868 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF
@@ -1,10 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ECF Discovery Provider based on DNS-SD
+Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.dnssd;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.2.0.qualifier
 Bundle-Activator: org.eclipse.ecf.provider.dnssd.Activator
-Bundle-Vendor: Eclipse.org - ECF
+Bundle-Vendor: %pluginProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.events,
@@ -22,5 +22,5 @@
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.ecf.provider.dnssd;version="1.0.0"
 Require-Bundle: org.xbill.dns;bundle-version="2.0.8",
- org.eclipse.equinox.common;bundle-version="3.5.0"
+ org.eclipse.equinox.common
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml
index a93033e..43aac56 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml
@@ -5,7 +5,7 @@
          point="org.eclipse.ecf.containerFactory">
       <containerFactory
             class="org.eclipse.ecf.provider.dnssd.ContainerInstantiator"
-            description="Discovery Locator Container "
+            description="Discovery Locator Container"
             name="ecf.discovery.dnssd.locator">
       </containerFactory>
    </extension>
@@ -13,7 +13,7 @@
          point="org.eclipse.ecf.containerFactory">
       <containerFactory
             class="org.eclipse.ecf.provider.dnssd.ContainerInstantiator"
-            description="Discovery Advertiser Container "
+            description="Discovery Advertiser Container"
             name="ecf.discovery.dnssd.advertiser">
       </containerFactory>
    </extension>
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java
index b60c52f..d5471c4 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java
@@ -16,8 +16,12 @@
 import java.util.Map;
 import java.util.Properties;
 
+import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.ecf.core.ContainerConnectException;
+import org.eclipse.ecf.core.ContainerTypeDescription;
 import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
 import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
 import org.eclipse.ecf.discovery.IDiscoveryLocator;
 import org.osgi.framework.Bundle;
@@ -46,9 +50,17 @@
 	 * (non-Javadoc)
 	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
 	 */
-	public void start(BundleContext context) throws Exception {
+	public void start(final BundleContext context) throws Exception {
 		this.context = context;
 		
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			protected void runWithoutRegistry() throws Exception {
+				context.registerService(Namespace.class, new DnsSdNamespace(), null);
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(DISCOVERY_CONTAINER_NAME_VALUE + LOCATOR,new ContainerInstantiator(),"Discovery Locator Container"), null);
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(DISCOVERY_CONTAINER_NAME_VALUE + ADVERTISER,new ContainerInstantiator(),"Discovery Advertiser Container"), null);
+			}
+		});
+		
 		// register a managed factory for the locator service
 		final Properties locCmProps = new Properties();
 		locCmProps.put(Constants.SERVICE_PID, DISCOVERY_CONTAINER_NAME_VALUE + LOCATOR);
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java
index 57bb9a9..7c1c2ac 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java
@@ -26,6 +26,10 @@
 	public static final String SCHEME = "dnssd"; //$NON-NLS-1$
 	public static final String NAME = "ecf.namespace.dnssd"; //$NON-NLS-1$
 
+	public DnsSdNamespace() {
+		super(NAME,"Dns SD Namespace");
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[])
 	 */
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
index 7120b3e..ac271d3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.httpclient;singleton:=true
-Bundle-Version: 4.0.300.qualifier
+Bundle-Version: 4.0.500.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient.Activator
 Require-Bundle: org.eclipse.equinox.common,
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
index a725abc..3f713e9 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
@@ -110,7 +110,7 @@
 		return plugin;
 	}
 
-	protected LogService getLogService() {
+	private synchronized LogService getLogService() {
 		if (logServiceTracker == null) {
 			logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null);
 			logServiceTracker.open();
@@ -125,7 +125,7 @@
 		}
 	}
 
-	public SSLSocketFactory getSSLSocketFactory() {
+	public synchronized SSLSocketFactory getSSLSocketFactory() {
 		if (sslSocketFactoryTracker == null) {
 			sslSocketFactoryTracker = new ServiceTracker(this.context, SSLSocketFactory.class.getName(), null);
 			sslSocketFactoryTracker.open();
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java
index 39d8f5a..407e176 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java
@@ -11,8 +11,19 @@
 
 package org.eclipse.ecf.internal.provider.filetransfer.httpclient;
 
-import java.util.*;
-import org.eclipse.ecf.filetransfer.events.socket.*;
+import java.io.IOException;
+import java.net.Socket;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.ecf.core.util.Trace;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketClosedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketConnectedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketCreatedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;
 
 public class ConnectingSocketMonitor implements ISocketListener {
 
@@ -26,6 +37,16 @@
 		connectingSockets = Collections.synchronizedMap(new HashMap());
 	}
 
+	/**
+	 * Callers of this method should not iterate through the returned
+	 * Collection, as a CME is possible...as reported by bug
+	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+	 * Rather than call this method and iterate through the Collection,
+	 * to close the connecting sockets call closeConnectingSockets
+	 * instead.
+	 * @return Collection the existing collection of underlying connecting
+	 * Socket instances
+	 */
 	public Collection getConnectingSockets() {
 		return Collections.unmodifiableCollection(connectingSockets.keySet());
 	}
@@ -34,6 +55,28 @@
 		connectingSockets.clear();
 	}
 
+	/**
+	 * Method added to synchronize access to underlying keySet
+	 * to prevent CME as reported in bug
+	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+	 */
+	public void closeSockets() {
+		// synchronize on the connectingSockets map
+		// so all changes caused by handleSocketEvent
+		// are prevented via synchronized Map
+		synchronized (connectingSockets) {
+			for (Iterator iterator = connectingSockets.keySet().iterator(); iterator.hasNext();) {
+				Socket socket = (Socket) iterator.next();
+				try {
+					Trace.trace(Activator.PLUGIN_ID, "Call socket.close() for socket=" + socket.toString()); //$NON-NLS-1$
+					socket.close();
+				} catch (IOException e) {
+					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$
+				}
+			}
+		}
+	}
+
 	public void handleSocketEvent(ISocketEvent event) {
 		if (event instanceof ISocketCreatedEvent) {
 			connectingSockets.put(event.getFactorySocket(), event);
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java
index 25c55eb..4b0dccb 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java
@@ -32,7 +32,7 @@
 		// empty
 	}
 
-	public SSLSocketFactory getSSLSocketFactory() throws IOException {
+	public synchronized SSLSocketFactory getSSLSocketFactory() throws IOException {
 		if (null == sslContext) {
 			try {
 				sslContext = getSSLContext(defaultProtocolNames);
@@ -45,7 +45,7 @@
 		return (sslContext == null) ? (SSLSocketFactory) SSLSocketFactory.getDefault() : sslContext.getSocketFactory();
 	}
 
-	public SSLContext getSSLContext(String protocols) {
+	public synchronized SSLContext getSSLContext(String protocols) {
 		SSLContext rtvContext = null;
 
 		if (protocols != null) {
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
index daa4288..d2e60a7 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
@@ -15,9 +15,7 @@
 
 import java.io.IOException;
 import java.net.HttpURLConnection;
-import java.net.Socket;
 import java.net.URL;
-import java.util.Iterator;
 import java.util.Map;
 import org.apache.commons.httpclient.Credentials;
 import org.apache.commons.httpclient.Header;
@@ -144,15 +142,7 @@
 			}
 		}
 		if (connectingSockets != null) {
-			// this should unblock socket connect calls, if any
-			for (Iterator iterator = connectingSockets.getConnectingSockets().iterator(); iterator.hasNext();) {
-				Socket socket = (Socket) iterator.next();
-				try {
-					socket.close();
-				} catch (IOException e) {
-					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$
-				}
-			}
+			connectingSockets.closeSockets();
 		}
 	}
 
@@ -218,8 +208,14 @@
 		// Define a CredentialsProvider - found that possibility while debugging in org.apache.commons.httpclient.HttpMethodDirector.processProxyAuthChallenge(HttpMethod)
 		// Seems to be another way to select the credentials.
 		headMethod.getParams().setParameter(CredentialsProvider.PROVIDER, credProvider);
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		headMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			headMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			headMethod.addRequestHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		headMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$
 
 		long lastModified = 0;
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
index a58b6cb..de027fd 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
@@ -17,7 +17,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
-import java.net.Socket;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -370,16 +369,7 @@
 			}
 		}
 		if (connectingSockets != null) {
-			// this should unblock socket connect calls, if any
-			for (Iterator iterator = connectingSockets.getConnectingSockets().iterator(); iterator.hasNext();) {
-				Socket socket = (Socket) iterator.next();
-				try {
-					Trace.trace(Activator.PLUGIN_ID, "Call socket.close() for socket=" + socket.toString()); //$NON-NLS-1$
-					socket.close();
-				} catch (IOException e) {
-					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$
-				}
-			}
+			connectingSockets.closeSockets();
 		}
 		hardClose();
 		if (fireDoneEvent) {
@@ -488,8 +478,14 @@
 			Trace.trace(Activator.PLUGIN_ID, "retrieve range header=" + rangeHeader); //$NON-NLS-1$
 			setRangeHeader(rangeHeader);
 		}
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			getMethod.addRequestHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		setRequestHeaderValuesFromOptions();
 	}
 
@@ -898,8 +894,14 @@
 		if (this.bytesReceived <= 0 || this.fileLength <= this.bytesReceived)
 			throw new IOException(Messages.HttpClientRetrieveFileTransfer_RESUME_START_ERROR);
 		setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			getMethod.addRequestHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		setRequestHeaderValuesFromOptions();
 	}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF
index 753e8c6..7ae5588 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.httpclient4;singleton:=true
-Bundle-Version: 1.0.300.qualifier
+Bundle-Version: 1.0.500.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator
 Require-Bundle: org.eclipse.equinox.common,
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java
index 43cce0f..139dcab 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java
@@ -97,7 +97,7 @@
 		return plugin;
 	}
 
-	protected LogService getLogService() {
+	private synchronized LogService getLogService() {
 		if (logServiceTracker == null) {
 			logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null);
 			logServiceTracker.open();
@@ -112,7 +112,7 @@
 		}
 	}
 
-	public SSLSocketFactory getSSLSocketFactory() {
+	public synchronized SSLSocketFactory getSSLSocketFactory() {
 		if (sslSocketFactoryTracker == null) {
 			sslSocketFactoryTracker = new ServiceTracker(this.context, SSLSocketFactory.class.getName(), null);
 			sslSocketFactoryTracker.open();
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java
index 9aae0dc..a95d76d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java
@@ -11,8 +11,19 @@
 
 package org.eclipse.ecf.internal.provider.filetransfer.httpclient4;
 
-import java.util.*;
-import org.eclipse.ecf.filetransfer.events.socket.*;
+import java.io.IOException;
+import java.net.Socket;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.ecf.core.util.Trace;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketClosedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketConnectedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketCreatedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;
 
 public class ConnectingSocketMonitor implements ISocketListener {
 
@@ -26,6 +37,16 @@
 		connectingSockets = Collections.synchronizedMap(new HashMap());
 	}
 
+	/**
+	 * Callers of this method should not iterate through the returned
+	 * Collection, as a CME is possible...as reported by bug
+	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+	 * Rather than call this method and iterate through the Collection,
+	 * to close the connecting sockets call closeConnectingSockets
+	 * instead.
+	 * @return Collection the existing collection of underlying connecting
+	 * Socket instances
+	 */
 	public Collection getConnectingSockets() {
 		return Collections.unmodifiableCollection(connectingSockets.keySet());
 	}
@@ -34,6 +55,28 @@
 		connectingSockets.clear();
 	}
 
+	/**
+	 * Method added to synchronize access to underlying keySet
+	 * to prevent CME as reported in bug
+	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+	 */
+	public void closeSockets() {
+		// synchronize on the connectingSockets map
+		// so all changes caused by handleSocketEvent
+		// are prevented via synchronized Map
+		synchronized (connectingSockets) {
+			for (Iterator iterator = connectingSockets.keySet().iterator(); iterator.hasNext();) {
+				Socket socket = (Socket) iterator.next();
+				try {
+					Trace.trace(Activator.PLUGIN_ID, "Call socket.close() for socket=" + socket.toString()); //$NON-NLS-1$
+					socket.close();
+				} catch (IOException e) {
+					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$
+				}
+			}
+		}
+	}
+
 	public void handleSocketEvent(ISocketEvent event) {
 		if (event instanceof ISocketCreatedEvent) {
 			connectingSockets.put(event.getFactorySocket(), event);
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java
index cb59b41..2e4753e 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java
@@ -12,8 +12,6 @@
 
 package org.eclipse.ecf.provider.filetransfer.httpclient4;
 
-import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ISSLSocketFactoryModifier;
-
 import java.io.IOException;
 import java.net.Socket;
 import javax.net.ssl.SSLContext;
@@ -21,6 +19,7 @@
 import javax.net.ssl.TrustManager;
 import org.eclipse.ecf.core.util.StringUtils;
 import org.eclipse.ecf.filetransfer.events.socketfactory.INonconnectedSocketFactory;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ISSLSocketFactoryModifier;
 
 public class HttpClientDefaultSSLSocketFactoryModifier implements ISSLSocketFactoryModifier, INonconnectedSocketFactory {
 	public static final String DEFAULT_SSL_PROTOCOL = "https.protocols"; //$NON-NLS-1$
@@ -33,7 +32,7 @@
 		// empty
 	}
 
-	public SSLSocketFactory getSSLSocketFactory() throws IOException {
+	public synchronized SSLSocketFactory getSSLSocketFactory() throws IOException {
 		if (null == sslContext) {
 			try {
 				sslContext = getSSLContext(defaultProtocolNames);
@@ -46,7 +45,7 @@
 		return (sslContext == null) ? (SSLSocketFactory) SSLSocketFactory.getDefault() : sslContext.getSocketFactory();
 	}
 
-	public SSLContext getSSLContext(String protocols) {
+	public synchronized SSLContext getSSLContext(String protocols) {
 		SSLContext rtvContext = null;
 
 		if (protocols != null) {
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java
index 1a668b8..eb20d6c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java
@@ -13,18 +13,10 @@
 
 package org.eclipse.ecf.provider.filetransfer.httpclient4;
 
-import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator;
-import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ConnectingSocketMonitor;
-import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.DebugOptions;
-import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.HttpClientProxyCredentialProvider;
-import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Messages;
-
 import java.io.IOException;
 import java.net.HttpURLConnection;
-import java.net.Socket;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import org.apache.http.Header;
 import org.apache.http.HttpHost;
@@ -57,6 +49,11 @@
 import org.eclipse.ecf.filetransfer.IRemoteFileSystemListener;
 import org.eclipse.ecf.filetransfer.IRemoteFileSystemRequest;
 import org.eclipse.ecf.filetransfer.identity.IFileID;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ConnectingSocketMonitor;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.DebugOptions;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.HttpClientProxyCredentialProvider;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Messages;
 import org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser;
 import org.eclipse.ecf.provider.filetransfer.browse.URLRemoteFile;
 import org.eclipse.ecf.provider.filetransfer.events.socket.SocketEventSource;
@@ -191,17 +188,10 @@
 			}
 		}
 		if (connectingSockets != null) {
-			// this should unblock socket connect calls, if any
-			for (Iterator iterator = connectingSockets.getConnectingSockets().iterator(); iterator.hasNext();) {
-				Socket socket = (Socket) iterator.next();
-				try {
-					socket.close();
-				} catch (IOException e) {
-					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$
-				}
-			}
+			// Change for preventing CME from bug
+			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+			connectingSockets.closeSockets();
 		}
-
 	}
 
 	protected boolean hasForceNTLMProxyOption() {
@@ -249,8 +239,14 @@
 		setupAuthentication(urlString);
 
 		headMethod = new HttpHead(urlString);
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		headMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			headMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			headMethod.addHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 
 		long lastModified = 0;
 		long fileLength = -1;
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java
index 0c14292..5759cf8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java
@@ -18,7 +18,6 @@
 import java.io.InputStream;
 import java.net.HttpURLConnection;
 import java.net.InetAddress;
-import java.net.Socket;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -176,7 +175,7 @@
 		registerSchemes(socketEventSource, connectingSockets);
 	}
 
-	private void registerSchemes(ISocketEventSource source, ISocketListener socketListener) {
+	private synchronized void registerSchemes(ISocketEventSource source, ISocketListener socketListener) {
 		SchemeRegistry schemeRegistry = this.httpClient.getConnectionManager().getSchemeRegistry();
 
 		Scheme http = new Scheme(HttpClientRetrieveFileTransfer.HTTP, HTTP_PORT, new ECFHttpClientProtocolSocketFactory(SocketFactory.getDefault(), source, socketListener));
@@ -246,16 +245,8 @@
 			}
 		}
 		if (connectingSockets != null) {
-			// this should unblock socket connect calls, if any
-			for (Iterator iterator = connectingSockets.getConnectingSockets().iterator(); iterator.hasNext();) {
-				Socket socket = (Socket) iterator.next();
-				try {
-					Trace.trace(Activator.PLUGIN_ID, "Call socket.close() for socket=" + socket.toString()); //$NON-NLS-1$
-					socket.close();
-				} catch (IOException e) {
-					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$
-				}
-			}
+			// Added to prevent CME in bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+			connectingSockets.closeSockets();
 		}
 		hardClose();
 		if (fireDoneEvent) {
@@ -370,8 +361,14 @@
 			Trace.trace(Activator.PLUGIN_ID, "retrieve range header=" + rangeHeader); //$NON-NLS-1$
 			setRangeHeader(rangeHeader);
 		}
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0); //$NON-NLS-1$
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			getMethod.addHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		setRequestHeaderValuesFromOptions();
 	}
 
@@ -824,8 +821,14 @@
 		if (this.bytesReceived <= 0 || this.fileLength <= this.bytesReceived)
 			throw new IOException(Messages.HttpClientRetrieveFileTransfer_RESUME_START_ERROR);
 		setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0); //$NON-NLS-1$
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			getMethod.addHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		setRequestHeaderValuesFromOptions();
 	}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/META-INF/MANIFEST.MF
index a94bbea..d1f06ee 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.scp;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.scp.Activator
 Bundle-Vendor: %plugin.provider
 Import-Package: com.jcraft.jsch,
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java
index 8449f00..6f5f5d8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java
@@ -27,10 +27,14 @@
 /**
  *
  */
-public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer implements IScpFileTransfer {
+public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer
+		implements IScpFileTransfer {
 
-	private static final String SCP_COMMAND = "scp -p -t "; //$NON-NLS-1$
-	private static final String SCP_EXEC = "exec"; //$NON-NLS-1$
+	private static final String SCP_COMMAND = System
+			.getProperty(
+					"org.eclipse.ecf.filetransfer.scp.outgoing.scpcommand", "scp -p -t "); //$NON-NLS-1$; //$NON-NLS-1$
+	private static final String SCP_EXEC = System.getProperty(
+			"org.eclipse.ecf.filetransfer.scp.outgoing.scpcommand", "exec"); //$NON-NLS-1$
 
 	String username;
 
@@ -39,14 +43,19 @@
 	private InputStream responseStream;
 	private ScpUtil scpUtil;
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#openStreams()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer
+	 * #openStreams()
 	 */
 	protected void openStreams() throws SendFileTransferException {
 		try {
 			final File localFile = getFileTransferInfo().getFile();
 			// Set input stream from local file
-			setInputStream(new BufferedInputStream(new FileInputStream(localFile)));
+			setInputStream(new BufferedInputStream(new FileInputStream(
+					localFile)));
 			final URL url = getRemoteFileURL();
 			this.username = url.getUserInfo();
 			scpUtil = new ScpUtil(this);
@@ -63,7 +72,9 @@
 			sendFileNameAndSize(localFile, targetFileName, outs, responseStream);
 			setOutputStream(outs);
 		} catch (final Exception e) {
-			throw new SendFileTransferException(NLS.bind(Messages.ScpOutgoingFileTransfer_EXCEPTION_CONNECTING, getRemoteFileURL().toString()), e);
+			throw new SendFileTransferException(NLS.bind(
+					Messages.ScpOutgoingFileTransfer_EXCEPTION_CONNECTING,
+					getRemoteFileURL().toString()), e);
 		}
 
 	}
@@ -80,19 +91,25 @@
 		return this.proxy;
 	}
 
-	private void sendFileNameAndSize(File localFile, String fileName, OutputStream outs, InputStream ins) throws IOException {
+	private void sendFileNameAndSize(File localFile, String fileName,
+			OutputStream outs, InputStream ins) throws IOException {
 		// send "C0644 filesize filename", where filename should not include '/'
 		final long filesize = localFile.length();
 		String[] targetFile = StringUtils.split(fileName, '/');
 		final StringBuffer command = new StringBuffer("C0644 "); //$NON-NLS-1$
-		command.append(filesize).append(" ").append(targetFile[targetFile.length - 1]).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+		command.append(filesize)
+				.append(" ").append(targetFile[targetFile.length - 1]).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
 		outs.write(command.toString().getBytes());
 		outs.flush();
 		scpUtil.checkAck(ins);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#hardClose()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer
+	 * #hardClose()
 	 */
 	protected void hardClose() {
 		try {
@@ -100,10 +117,6 @@
 				scpUtil.sendZeroToStream(remoteFileContents);
 				scpUtil.checkAck(responseStream);
 			}
-			if (remoteFileContents != null) {
-				remoteFileContents.close();
-				remoteFileContents = null;
-			}
 			if (channel != null) {
 				channel.disconnect();
 				channel = null;
@@ -119,29 +132,42 @@
 		super.hardClose();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#setupProxy(org.eclipse.ecf.core.util.Proxy)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer
+	 * #setupProxy(org.eclipse.ecf.core.util.Proxy)
 	 */
 	protected void setupProxy(Proxy proxy) {
 		this.proxy = proxy;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername()
 	 */
 	public String getUsername() {
 		return username;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer#getConnectContext()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer#
+	 * getConnectContext()
 	 */
 	public IConnectContext getConnectContext() {
 		return connectContext;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer#setUsername(java.lang.String)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer#
+	 * setUsername(java.lang.String)
 	 */
 	public void setUsername(String username) {
 		this.username = username;
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java
index 81d0e0e..a40cec2 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java
@@ -26,10 +26,13 @@
 /**
  *
  */
-public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implements IScpFileTransfer {
+public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer
+		implements IScpFileTransfer {
 
-	private static final String SCP_COMMAND = "scp -f "; //$NON-NLS-1$
-	private static final String SCP_EXEC = "exec"; //$NON-NLS-1$
+	private static final String SCP_COMMAND = System.getProperty(
+			"org.eclipse.ecf.filetransfer.scp.retrieve.scpcommand", "scp -f "); //$NON-NLS-1$
+	private static final String SCP_EXEC = System.getProperty(
+			"org.eclipse.ecf.filetransfer.scp.retrieve.scpcommand", "exec"); //$NON-NLS-1$
 
 	String username;
 
@@ -39,15 +42,23 @@
 
 	private ScpUtil scpUtil;
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#doPause()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer
+	 * #doPause()
 	 */
 	protected boolean doPause() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#doResume()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer
+	 * #doResume()
 	 */
 	protected boolean doResume() {
 		return false;
@@ -61,8 +72,12 @@
 		return options;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#openStreams()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer
+	 * #openStreams()
 	 */
 	protected void openStreams() throws IncomingFileTransferException {
 		try {
@@ -74,7 +89,8 @@
 			final Session s = scpUtil.getSession();
 			s.connect();
 
-			final String command = SCP_COMMAND + scpUtil.trimTargetFile(url.getPath());
+			final String command = SCP_COMMAND
+					+ scpUtil.trimTargetFile(url.getPath());
 			channel = s.openChannel(SCP_EXEC);
 			((ChannelExec) channel).setCommand(command);
 			channel.connect();
@@ -82,10 +98,11 @@
 			final InputStream ins = channel.getInputStream();
 			responseStream = channel.getOutputStream();
 			scpUtil.sendZeroToStream(responseStream);
-			// read and set filesize
-			final int c = ins.read();
+
+			final int c = checkAck(ins);
 			if (c != 'C')
-				throw new IOException(Messages.ScpRetrieveFileTransfer_EXCEPTION_SCP_PROTOCOL);
+				throw new IOException(
+						Messages.ScpRetrieveFileTransfer_EXCEPTION_SCP_PROTOCOL);
 			// read '0644 '
 			final byte[] buf = new byte[1024];
 			ins.read(buf, 0, 5);
@@ -93,22 +110,58 @@
 			setFileLength(readFileSize(ins, buf));
 			readFileName(ins, buf);
 			// set input stream for reading rest of file
-			setInputStream(ins);
+			remoteFileContents = ins;
+
 			scpUtil.sendZeroToStream(responseStream);
 
 			fireReceiveStartEvent();
 		} catch (final Exception e) {
 			channel = null;
 			username = null;
-			throw new IncomingFileTransferException(NLS.bind(Messages.ScpRetrieveFileTransfer_EXCEPTION_CONNECTING, getRemoteFileURL().toString()), e);
+			throw new IncomingFileTransferException(NLS.bind(
+					Messages.ScpRetrieveFileTransfer_EXCEPTION_CONNECTING,
+					getRemoteFileURL().toString()), e);
 		}
 
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#handleReceivedData(byte[], int, double, org.eclipse.core.runtime.IProgressMonitor)
+	static int checkAck(InputStream in) throws IOException {
+		int b = in.read();
+		// b may be 0 for success,
+		// 1 for error,
+		// 2 for fatal error,
+		// -1
+		if (b == 0)
+			return b;
+		if (b == -1)
+			return b;
+
+		if (b == 1 || b == 2) {
+			StringBuffer sb = new StringBuffer();
+			int c;
+			do {
+				c = in.read();
+				sb.append((char) c);
+			} while (c != '\n');
+			if (b == 1 || b == 2) { // error
+				throw new IOException(
+						Messages.ScpRetrieveFileTransfer_EXCEPTION_SCP_PROTOCOL
+								+ ": " + sb.toString());
+			}
+		}
+		return b;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer
+	 * #handleReceivedData(byte[], int, double,
+	 * org.eclipse.core.runtime.IProgressMonitor)
 	 */
-	protected void handleReceivedData(byte[] buf, int bytes, double factor, IProgressMonitor monitor) throws IOException {
+	protected void handleReceivedData(byte[] buf, int bytes, double factor,
+			IProgressMonitor monitor) throws IOException {
 		if (bytes == -1) {
 			done = true;
 		} else {
@@ -131,7 +184,8 @@
 		long filesize = 0L;
 		while (true) {
 			if (ins.read(buf, 0, 1) < 0) {
-				throw new IOException(Messages.ScpRetrieveFileTransfer_EXCEPTION_ERROR_READING_FILE);
+				throw new IOException(
+						Messages.ScpRetrieveFileTransfer_EXCEPTION_ERROR_READING_FILE);
 			}
 			if (buf[0] == ' ')
 				break;
@@ -152,8 +206,12 @@
 		return file;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#hardClose()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer
+	 * #hardClose()
 	 */
 	protected void hardClose() {
 		try {
@@ -177,7 +235,9 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#getAdapter(java.lang.Class)
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer
+	 * #getAdapter(java.lang.Class)
 	 */
 	public Object getAdapter(Class adapter) {
 		if (adapter == null)
@@ -187,22 +247,33 @@
 		return super.getAdapter(adapter);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#setupProxy(org.eclipse.ecf.core.util.Proxy)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer
+	 * #setupProxy(org.eclipse.ecf.core.util.Proxy)
 	 */
 	protected void setupProxy(Proxy proxy) {
 		this.proxy = proxy;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getConnectContext()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getConnectContext
+	 * ()
 	 */
 	public IConnectContext getConnectContext() {
 		return connectContext;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername()
 	 */
 	public String getUsername() {
 		return username;
@@ -212,12 +283,16 @@
 		this.username = username;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#promptPassphrase()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#promptPassphrase
+	 * ()
 	 */
 	public boolean promptPassphrase() {
 		// XXX TODO
-		//return (keyFile != null);
+		// return (keyFile != null);
 		return false;
 	}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java
index 54620e1..d7c9ee9 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java
@@ -26,11 +26,18 @@
  */
 public class ScpUtil implements UserInfo, UIKeyboardInteractive {
 
-	public static final String SCP_SSHHOMEDIRECTORY = "sshHomeDirectory"; //$NON-NLS-1$
-	public static final String SCP_PUBLICKEYFILE = "keyFile"; //$NON-NLS-1$
-	public static final String SCP_KNOWNHOSTSFILE = "knownHostsFile"; //$NON-NLS-1$
+	public static final String SCP_SSHHOMEDIRECTORY = System
+			.getProperty(
+					"org.eclipse.ecf.filetransfer.scp.util.sshHomeDirectory", "sshHomeDirectory"); //$NON-NLS-1$
+	public static final String SCP_PUBLICKEYFILE = System.getProperty(
+			"org.eclipse.ecf.filetransfer.scp.util.keyFile", "keyFile"); //$NON-NLS-1$
+	public static final String SCP_KNOWNHOSTSFILE = System
+			.getProperty(
+					"org.eclipse.ecf.filetransfer.scp.util.knownHostsFile", "knownHostsFile"); //$NON-NLS-1$
 
-	public static final int DEFAULT_SCP_PORT = 22;
+	public static final int DEFAULT_SCP_PORT = Integer
+			.parseInt(System.getProperty(
+					"org.eclipse.ecf.filetransfer.scp.util.scpPort", "22"));
 
 	private IScpFileTransfer handler;
 	private String password;
@@ -41,7 +48,8 @@
 	private String keyFile = null;
 	private String knownHostsFile = null;
 
-	public ScpUtil(IScpFileTransfer handler) throws JSchException, IOException, UnsupportedCallbackException {
+	public ScpUtil(IScpFileTransfer handler) throws JSchException, IOException,
+			UnsupportedCallbackException {
 		this.handler = handler;
 		final JSch jsch = new JSch();
 		final URL url = handler.getTargetURL();
@@ -65,15 +73,18 @@
 	void promptUsername() throws IOException, UnsupportedCallbackException {
 		final IConnectContext connectContext = handler.getConnectContext();
 		if (connectContext != null) {
-			final CallbackHandler callbackHandler = connectContext.getCallbackHandler();
+			final CallbackHandler callbackHandler = connectContext
+					.getCallbackHandler();
 			if (handler != null) {
 				final Callback[] callbacks = new Callback[2];
-				final NameCallback nc = new NameCallback(Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT);
+				final NameCallback nc = new NameCallback(
+						Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT);
 				String user = handler.getUsername();
 				if (user != null)
 					nc.setName(user);
 				callbacks[0] = nc;
-				callbacks[1] = new PasswordCallback(Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT);
+				callbacks[1] = new PasswordCallback(
+						Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT);
 				callbackHandler.handle(callbacks);
 				handler.setUsername(nc.getName());
 			}
@@ -84,24 +95,30 @@
 		try {
 			final IConnectContext connectContext = handler.getConnectContext();
 			if (connectContext != null) {
-				final CallbackHandler callbackHandler = connectContext.getCallbackHandler();
+				final CallbackHandler callbackHandler = connectContext
+						.getCallbackHandler();
 				if (handler != null) {
 					final Callback[] callbacks = new Callback[2];
-					final NameCallback nc = new NameCallback(Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT);
+					final NameCallback nc = new NameCallback(
+							Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT);
 					String user = handler.getUsername();
 					if (user != null)
 						nc.setName(user);
 					callbacks[0] = nc;
 					if (usePassphrase) {
-						callbacks[1] = new PassphraseCallback(Messages.ScpOutgoingFileTransfer_PASSPHRASE_PROMPT);
+						callbacks[1] = new PassphraseCallback(
+								Messages.ScpOutgoingFileTransfer_PASSPHRASE_PROMPT);
 					} else
-						callbacks[1] = new PasswordCallback(Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT);
+						callbacks[1] = new PasswordCallback(
+								Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT);
 					callbackHandler.handle(callbacks);
 					handler.setUsername(nc.getName());
 					if (usePassphrase) {
-						passphrase = ((PassphraseCallback) callbacks[1]).getPassphrase();
+						passphrase = ((PassphraseCallback) callbacks[1])
+								.getPassphrase();
 					} else
-						password = ((PasswordCallback) callbacks[1]).getPassword();
+						password = ((PasswordCallback) callbacks[1])
+								.getPassword();
 				}
 			}
 			return (usePassphrase) ? this.passphrase : this.password;
@@ -110,54 +127,72 @@
 		}
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see com.jcraft.jsch.UserInfo#getPassphrase()
 	 */
 	public String getPassphrase() {
 		return promptCredentials(true);
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see com.jcraft.jsch.UserInfo#getPassword()
 	 */
 	public String getPassword() {
 		return promptCredentials(false);
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see com.jcraft.jsch.UserInfo#promptPassphrase(java.lang.String)
 	 */
 	public boolean promptPassphrase(String message) {
 		return (keyFile != null);
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see com.jcraft.jsch.UserInfo#promptPassword(java.lang.String)
 	 */
 	public boolean promptPassword(String message) {
 		return true;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see com.jcraft.jsch.UserInfo#promptYesNo(java.lang.String)
 	 */
 	public boolean promptYesNo(String message) {
 		return true;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see com.jcraft.jsch.UserInfo#showMessage(java.lang.String)
 	 */
 	public void showMessage(String message) {
 		// do nothing
 	}
 
-	/* (non-Javadoc)
-	 * @see com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java.lang.String, java.lang.String, java.lang.String, java.lang.String[], boolean[])
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java.
+	 * lang.String, java.lang.String, java.lang.String, java.lang.String[],
+	 * boolean[])
 	 */
-	public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt, boolean[] echo) {
+	public String[] promptKeyboardInteractive(String destination, String name,
+			String instruction, String[] prompt, boolean[] echo) {
 		promptCredentials(false);
-		return new String[] {password};
+		return new String[] { password };
 	}
 
 	/**
@@ -217,7 +252,14 @@
 			try {
 				jsch.addIdentity(keyFile);
 			} catch (final JSchException e) {
-				Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_SSH_IDENTITY, e));
+				Activator
+						.getDefault()
+						.log(new Status(
+								IStatus.ERROR,
+								Activator.PLUGIN_ID,
+								IStatus.ERROR,
+								Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_SSH_IDENTITY,
+								e));
 			}
 		}
 		knownHostsFile = getProperty(SCP_KNOWNHOSTSFILE);
@@ -236,7 +278,14 @@
 			try {
 				jsch.setKnownHosts(knownHostsFile);
 			} catch (final JSchException e) {
-				Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_KNOWN_HOSTS, e));
+				Activator
+						.getDefault()
+						.log(new Status(
+								IStatus.ERROR,
+								Activator.PLUGIN_ID,
+								IStatus.ERROR,
+								Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_KNOWN_HOSTS,
+								e));
 			}
 		}
 	}
@@ -256,8 +305,6 @@
 	}
 
 	String trimTargetFile(String string) {
-		if (string.charAt(0) == '/')
-			return string.substring(1);
 		return string;
 	}
 
@@ -279,10 +326,12 @@
 				sb.append((char) c);
 			} while (c != '\n');
 			if (b == 1) { // error
-				throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR, sb.toString()));
+				throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR,
+						sb.toString()));
 			}
 			if (b == 2) { // fatal error
-				throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR, sb.toString()));
+				throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR,
+						sb.toString()));
 			}
 		}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
index 674f8f6..4c37872 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer;singleton:=true
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.2.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java
index 3b3edb2..66e2d65 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java
@@ -77,8 +77,8 @@
 	}
 
 	protected String getFileNameOnly() {
-		final String path = this.fileURL.getPath();
-		return path.substring(path.lastIndexOf("/") + 1); //$NON-NLS-1$;
+		String path = (fileURI != null) ? fileURI.getPath() : fileURL.getPath();
+		return (path == null) ? null : path.substring(path.lastIndexOf("/") + 1); //$NON-NLS-1$;
 	}
 
 	public String toString() {
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
index 72e8e10..d8d8473 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
@@ -114,9 +114,14 @@
 		if (this.bytesReceived <= 0 || this.fileLength <= this.bytesReceived)
 			throw new IOException(Messages.UrlConnectionRetrieveFileTransfer_RESUME_START_ERROR);
 		setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$
-		// set max-age for cache control to 0 for bug
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$
+		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			urlConnection.setRequestProperty("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		setRequestHeaderValuesFromOptions();
 	}
 
@@ -154,9 +159,14 @@
 		// also see http 1.1 rfc section 14-10 in
 		// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
 		urlConnection.setRequestProperty("Connection", "close"); //$NON-NLS-1$ //$NON-NLS-2$
-		// set max-age for cache control to 0 for bug
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
-		urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$
+		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
+		// fix the fix for bug 249990 with bug 410813
+		if (maxAge == 0) {
+			urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		} else if (maxAge > 0) {
+			urlConnection.setRequestProperty("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		setRequestHeaderValuesFromOptions();
 	}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF
index 2114e97..ba3556c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.irc; singleton:=true
-Bundle-Version: 1.3.100.qualifier
+Bundle-Version: 1.3.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.irc.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
index 6b741e8..d99aa45 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
@@ -242,6 +242,8 @@
 
 			public void onDisconnected() {
 				trace("handleOnDisconnected()"); //$NON-NLS-1$
+				fireContainerEvent(new ContainerDisconnectingEvent(getID(),
+						targetID));
 				synchronized (connectLock) {
 					if (connectWaiting) {
 						if (connectException == null)
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF
index a19bc77..9e1d8fd 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.jmdns;singleton:=true
-Bundle-Version: 4.1.0.qualifier
+Bundle-Version: 4.3.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.jmdns.JMDNSPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties
index ebfe16a..e555365 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF Zeroconf/JMDNS Discovery Provider
+pluginName = ECF Discovery Zeroconf/JMDNS Provider
 providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
index 620ccbd..0a1b56a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
@@ -12,14 +12,17 @@
 
 import java.util.Properties;
 import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.ecf.core.ContainerConnectException;
-import org.eclipse.ecf.core.IContainer;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.*;
 import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.util.*;
 import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
 import org.eclipse.ecf.discovery.IDiscoveryLocator;
 import org.eclipse.ecf.discovery.service.IDiscoveryService;
+import org.eclipse.ecf.provider.jmdns.container.ContainerInstantiator;
 import org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer;
+import org.eclipse.ecf.provider.jmdns.identity.JMDNSNamespace;
 import org.osgi.framework.*;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
@@ -45,7 +48,7 @@
 		plugin = this;
 	}
 
-	private ServiceTracker adapterManagerTracker = null;
+	private AdapterManagerTracker adapterManagerTracker = null;
 
 	private ServiceRegistration serviceRegistration;
 
@@ -56,15 +59,10 @@
 	public IAdapterManager getAdapterManager() {
 		// First, try to get the adapter manager via
 		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null);
+			adapterManagerTracker = new AdapterManagerTracker(this.context);
 			adapterManagerTracker.open();
 		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		return adapterManager;
+		return adapterManagerTracker.getAdapterManager();
 	}
 
 	/**
@@ -78,6 +76,14 @@
 		props.put(Constants.SERVICE_RANKING, new Integer(750));
 		String[] clazzes = new String[] {IDiscoveryService.class.getName(), IDiscoveryLocator.class.getName(), IDiscoveryAdvertiser.class.getName()};
 		serviceRegistration = context.registerService(clazzes, serviceFactory, props);
+		SafeRunner.run(new ExtensionRegistryRunnable(ctxt) {
+			protected void runWithoutRegistry() throws Exception {
+				ctxt.registerService(Namespace.class, new JMDNSNamespace("JMDNS Discovery Namespace"), null);
+				ctxt.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(ContainerInstantiator.JMDNS_CONTAINER_NAME, new ContainerInstantiator(), "JMDNS Discovery Container", true, false), null);
+				ctxt.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(ContainerInstantiator.JMDNS_LOCATOR_NAME, new ContainerInstantiator(), "JMDNS Discovery Locator"), null);
+				ctxt.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(ContainerInstantiator.JMDNS_ADVERTISER_NAME, new ContainerInstantiator(), "JMDNS Discovery Advertiser"), null);
+			}
+		});
 	}
 
 	private final DiscoveryServiceFactory serviceFactory = new DiscoveryServiceFactory();
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java
index 6fc8b3c..1fb03aa 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java
@@ -17,13 +17,25 @@
 
 public class ContainerInstantiator implements IContainerInstantiator {
 
+	/**
+	 * @since 4.3
+	 */
+	public static final String JMDNS_CONTAINER_NAME = "ecf.container.jmdns";
+	/**
+	 * @since 4.3
+	 */
+	public static final String JMDNS_LOCATOR_NAME = "ecf.container.jmdns.locator";
+	/**
+	 * @since 4.3
+	 */
+	public static final String JMDNS_ADVERTISER_NAME = "ecf.container.jmdns.advertiser";
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.provider.IContainerInstantiator#createInstance(org.eclipse.ecf.core.ContainerTypeDescription, java.lang.Object[])
 	 */
 	public IContainer createInstance(final ContainerTypeDescription description, final Object[] args) throws ContainerCreateException {
 		try {
-			final AbstractContainer container = new JMDNSDiscoveryContainer();
-			return container;
+			return new JMDNSDiscoveryContainer();
 		} catch (final IDCreateException e) {
 			final ContainerCreateException excep = new ContainerCreateException("Jmdns container create failed", e); //$NON-NLS-1$
 			excep.setStackTrace(e.getStackTrace());
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java
index 5c26914..ac6a046 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java
@@ -23,6 +23,17 @@
 
 	public static final String NAME = "ecf.namespace.jmdns"; //$NON-NLS-1$
 
+	public JMDNSNamespace() {
+		super();
+	}
+
+	/**
+	 * @since 4.3
+	 */
+	public JMDNSNamespace(String description) {
+		super(NAME, description);
+	}
+
 	private String getInitFromExternalForm(final Object[] args) {
 		if (args == null || args.length < 1 || args[0] == null)
 			return null;
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
index bc7586b..f8b5eb5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.jslp;singleton:=true
-Bundle-Version: 3.0.100.qualifier
+Bundle-Version: 3.2.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.jslp.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
index 3a09c54..49917c7 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
@@ -13,13 +13,17 @@
 import ch.ethz.iks.slp.Advertiser;
 import ch.ethz.iks.slp.Locator;
 import java.util.Properties;
-import org.eclipse.ecf.core.ContainerConnectException;
-import org.eclipse.ecf.core.IContainer;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.*;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
 import org.eclipse.ecf.core.util.Trace;
 import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
 import org.eclipse.ecf.discovery.IDiscoveryLocator;
 import org.eclipse.ecf.discovery.service.IDiscoveryService;
+import org.eclipse.ecf.provider.jslp.container.ContainerInstantiator;
 import org.eclipse.ecf.provider.jslp.container.JSLPDiscoveryContainer;
+import org.eclipse.ecf.provider.jslp.identity.JSLPNamespace;
 import org.osgi.framework.*;
 import org.osgi.util.tracker.ServiceTracker;
 
@@ -82,6 +86,15 @@
 	public void start(final BundleContext context) throws Exception {
 		bundleContext = context;
 
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			protected void runWithoutRegistry() throws Exception {
+				context.registerService(Namespace.class, new JSLPNamespace(), null);
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.jslp", new ContainerInstantiator(), "JSLP Discovery Container", true, false), null); //$NON-NLS-1$//$NON-NLS-2$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.jslp.locator", new ContainerInstantiator(), "JSLP Discovery Locator Container", true, false), null); //$NON-NLS-1$//$NON-NLS-2$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.jslp.advertiser", new ContainerInstantiator(), "JSLP Discovery Advertiser Container", true, false), null); //$NON-NLS-1$//$NON-NLS-2$
+			}
+		});
+
 		// initially get the locator and add a life cycle listener
 		locatorSt = new ServiceTracker(context, Locator.class.getName(), null);
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java
index e0d45cc..505831d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java
@@ -23,6 +23,10 @@
 
 	public static final String NAME = "ecf.namespace.slp"; //$NON-NLS-1$
 
+	public JSLPNamespace() {
+		super(NAME, "JSLP Namespace"); //$NON-NLS-1$
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[])
 	 */
diff --git a/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF
index a0ee97a..7aaddeb 100644
--- a/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECF Local Remote Service Provider
 Bundle-SymbolicName: org.eclipse.ecf.provider.local;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.3.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.local.Activator
 Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
@@ -23,4 +23,4 @@
 Export-Package: org.eclipse.ecf.internal.provider.local;x-internal:=true,
  org.eclipse.ecf.internal.provider.local.container;x-internal:=true,
  org.eclipse.ecf.provider.local.identity;version="1.1.0"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
diff --git a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java
index 5add95b..40c0f7b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java
@@ -1,5 +1,11 @@
 package org.eclipse.ecf.internal.provider.local;
 
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
+import org.eclipse.ecf.internal.provider.local.container.LocalRemoteServiceContainerInstantiator;
+import org.eclipse.ecf.provider.local.identity.LocalNamespace;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
@@ -15,8 +21,15 @@
 	 * (non-Javadoc)
 	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
 	 */
-	public void start(BundleContext bundleContext) throws Exception {
+	public void start(final BundleContext bundleContext) throws Exception {
 		Activator.context = bundleContext;
+
+		SafeRunner.run(new ExtensionRegistryRunnable(bundleContext) {
+			protected void runWithoutRegistry() throws Exception {
+				bundleContext.registerService(Namespace.class, new LocalNamespace(), null);
+				bundleContext.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.local", new LocalRemoteServiceContainerInstantiator(), "Local Container Instantiator", false, false), null); //$NON-NLS-1$//$NON-NLS-2$
+			}
+		});
 	}
 
 	/*
diff --git a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java
index cc4cdfa..5835527 100644
--- a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java
@@ -19,6 +19,10 @@
 	public static final String NAME = "ecf.namespace.local"; //$NON-NLS-1$
 	public static final String SCHEME = "local"; //$NON-NLS-1$
 
+	public LocalNamespace() {
+		super(NAME, "Local Namespace"); //$NON-NLS-1$
+	}
+
 	public ID createInstance(Object[] parameters) throws IDCreateException {
 		try {
 			final String init = getInitStringFromExternalForm(parameters);
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF
index f2dca6c..322738f 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF
@@ -2,8 +2,9 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.r_osgi;singleton:=true
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.4.0.qualifier
 Import-Package: org.eclipse.ecf.core.util.reflection,
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.3.0",
  org.osgi.util.tracker;version="1.3.3"
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties
index 3cefe19..f93beaa 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties
@@ -9,5 +9,5 @@
 #     Jan S. Rellermeyer - initial API and implementation
 ############################################################################
 
-plugin.name=ECF R-OSGi Remoteservice Provider
+plugin.name=ECF RemoteServices r-OSGi Provider
 plugin.provider=Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java
index e5d33c2..216b2fc 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java
@@ -12,6 +12,12 @@
 package org.eclipse.ecf.internal.provider.r_osgi;
 
 import ch.ethz.iks.r_osgi.RemoteOSGiService;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
+import org.eclipse.ecf.provider.r_osgi.identity.R_OSGiNamespace;
+import org.eclipse.ecf.provider.r_osgi.identity.R_OSGiRemoteServiceNamespace;
 import org.eclipse.equinox.concurrent.future.IExecutor;
 import org.osgi.framework.*;
 import org.osgi.util.tracker.ServiceTracker;
@@ -64,6 +70,13 @@
 		this.context = bc;
 		r_osgi_tracker = new ServiceTracker(context, RemoteOSGiService.class.getName(), null);
 		r_osgi_tracker.open();
+		SafeRunner.run(new ExtensionRegistryRunnable(bc) {
+			protected void runWithoutRegistry() throws Exception {
+				bc.registerService(Namespace.class, new R_OSGiNamespace(), null);
+				bc.registerService(Namespace.class, new R_OSGiRemoteServiceNamespace(), null);
+				bc.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(R_OSGiContainerInstantiator.NAME, new R_OSGiContainerInstantiator(), "R_OSGi Container", true, false), null); //$NON-NLS-1$
+			}
+		});
 	}
 
 	/**
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java
index db3bd9e..4e88fd4 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java
@@ -104,6 +104,7 @@
 	}
 
 	private static final String ROSGI_CONFIG = "ecf.r_osgi.peer"; //$NON-NLS-1$
+	public static final String NAME = ROSGI_CONFIG;
 
 	private static final String[] ROSGI_CONFIGS = new String[] {ROSGI_CONFIG};
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java
index ac1ff85..db8983b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java
@@ -23,6 +23,10 @@
 
 	public static final String NAME = "ecf.namespace.r_osgi.remoteservice"; //$NON-NLS-1$
 
+	public R_OSGiRemoteServiceNamespace() {
+		super(NAME, "R_OSGi Remote Service Namespace"); //$NON-NLS-1$
+	}
+
 	public ID createInstance(Object[] parameters) throws IDCreateException {
 		if (parameters == null || parameters.length != 2)
 			throw new IDCreateException("Parameters incorrect for remote ID creation"); //$NON-NLS-1$
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.gitignore b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.gitignore
new file mode 100644
index 0000000..e660fd9
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.gitignore
@@ -0,0 +1 @@
+bin/
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project
new file mode 100644
index 0000000..7fed21f
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.provider.remoteservice.java8</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..706f07e
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=true
+resolve.requirebundle=false
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5f46246
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.ecf.provider.remoteservice.java8;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %pluginProvider
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.ecf;bundle-version="3.3.0",
+ org.eclipse.ecf.provider;bundle-version="4.4.0",
+ org.eclipse.ecf.provider.remoteservice;bundle-version="4.1.0",
+ org.eclipse.ecf.sharedobject;bundle-version="2.4.0",
+ org.eclipse.equinox.common;bundle-version="3.6.200",
+ org.eclipse.ecf.remoteservice;bundle-version="8.3.0"
+Import-Package: org.eclipse.equinox.concurrent.future;version="1.1.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.util.tracker;version="1.5.1"
+Bundle-Localization: plugin
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.ecf.provider.internal.remoteservice.java8.Activator
+
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties
new file mode 100644
index 0000000..7b3c227
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+src.includes = about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties
new file mode 100644
index 0000000..b5ccef3
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties
@@ -0,0 +1,10 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+pluginName = ECF Generic Provider RemoteServices Java8 Support
+providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml
new file mode 100644
index 0000000..a8e6731
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ecf.containerFactory">
+      <containerFactory
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8GenericContainerInstantiator"
+            description="ECF Java8 Generic Server"
+            hidden="false"
+            name="ecf.generic.server.java8"
+            server="true">
+      </containerFactory>
+   </extension>
+   <extension
+         point="org.eclipse.ecf.containerFactory">
+      <containerFactory
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8GenericContainerInstantiator"
+            description="ECF Java8 Generic Client"
+            hidden="true"
+            name="ecf.generic.client.java8">
+      </containerFactory>
+   </extension>
+   <extension
+         point="org.eclipse.ecf.containerFactory">
+      <containerFactory
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLGenericContainerInstantiator"
+            description="ECF Java8 Generic SSL Server"
+            hidden="false"
+            name="ecf.generic.ssl.server.java8"
+            server="true">
+      </containerFactory>
+   </extension>
+   <extension
+         point="org.eclipse.ecf.containerFactory">
+      <containerFactory
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLGenericContainerInstantiator"
+            description="ECF Java8 Generic SSL Client"
+            hidden="true"
+            name="ecf.generic.ssl.client.java8">
+      </containerFactory>
+   </extension>
+      <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8TCPClientSOContainer"
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+         <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+      </factory>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8TCPServerSOContainer"
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+         <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+      </factory>
+  </extension>
+  <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLClientSOContainer"
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+         <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+      </factory>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory
+            adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLServerSOContainer"
+            class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+         <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+      </factory>
+  </extension>
+   
+</plugin>
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java
new file mode 100644
index 0000000..4791bf4
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java
@@ -0,0 +1,67 @@
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.core.runtime.IAdapterManager;
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.util.AdapterManagerTracker;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private List<IAdapterFactory> rscAdapterFactories;
+
+	private static IAdapterManager getAdapterManager(BundleContext ctx) {
+		AdapterManagerTracker t = new AdapterManagerTracker(ctx);
+		t.open();
+		IAdapterManager am = t.getAdapterManager();
+		t.close();
+		return am;
+	}
+
+	@Override
+	public void start(final BundleContext context) throws Exception {
+		SafeRunner.run(new ExtensionRegistryRunnable(context) {
+			protected void runWithoutRegistry() throws Exception {
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_SERVER_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Server", true, false), null); //$NON-NLS-1$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_CLIENT_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Client", false, false), null); //$NON-NLS-1$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_CLIENT_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Client", false, false), null); //$NON-NLS-1$
+				context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_SERVER_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Server", true, false), null); //$NON-NLS-1$
+				IAdapterManager am = getAdapterManager(context);
+				if (am != null) {
+					rscAdapterFactories = new ArrayList<IAdapterFactory>();
+					IAdapterFactory af = new J8RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, J8SSLServerSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new J8RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, J8TCPServerSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new J8RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, J8SSLClientSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new J8RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, J8TCPClientSOContainer.class);
+					rscAdapterFactories.add(af);
+				}
+			}
+		});
+
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		if (rscAdapterFactories != null) {
+			IAdapterManager am = getAdapterManager(context);
+			if (am != null) {
+				for (IAdapterFactory af : rscAdapterFactories)
+					am.unregisterAdapters(af);
+			}
+		}
+	}
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java
new file mode 100644
index 0000000..c564479
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.provider.generic.GenericContainerInstantiator;
+import org.eclipse.ecf.provider.generic.SOContainerConfig;
+
+public class J8GenericContainerInstantiator extends
+		GenericContainerInstantiator {
+
+	public static final String JAVA8_CLIENT_NAME = "ecf.generic.client.java8";
+	public static final String JAVA8_SERVER_NAME = "ecf.generic.server.java8";
+	
+	@Override
+	protected boolean isClient(ContainerTypeDescription description) {
+		if (description.getName().equals(JAVA8_SERVER_NAME))
+			return false;
+		return true;
+	}
+	
+	@Override
+	protected IContainer createClientContainer(GenericContainerArgs gcargs)
+			throws Exception {
+		return new J8TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+	}
+	
+	@Override
+	protected IContainer createServerContainer(GenericContainerArgs gcargs)
+			throws Exception {
+		return new J8TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+	}
+	
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@Override
+	public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs) {
+		if (exporterSupportedConfigs == null)
+			return null;
+		List results = new ArrayList();
+		List supportedConfigs = Arrays.asList(exporterSupportedConfigs);
+		// For a server, if exporter is a client then we can be an importer
+		if (JAVA8_SERVER_NAME.equals(description.getName())) {
+			if (supportedConfigs.contains(JAVA8_CLIENT_NAME))
+				results.add(JAVA8_SERVER_NAME);
+			// For a client, if exporter is server we can import
+			// or if remote is either generic server or generic client
+		} else if (JAVA8_CLIENT_NAME.equals(description.getName())) {
+			if (supportedConfigs.contains(JAVA8_SERVER_NAME) || supportedConfigs.contains(JAVA8_CLIENT_NAME))
+				results.add(JAVA8_CLIENT_NAME);
+		}
+		if (results.size() == 0)
+			return null;
+		return (String[]) results.toArray(new String[] {});
+	}
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java
new file mode 100644
index 0000000..c591ade
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.sharedobject.ISharedObject;
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainer;
+import org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject;
+import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceContainerAdapterFactory;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+
+public class J8RemoteServiceContainerAdapterFactory extends RemoteServiceContainerAdapterFactory {
+
+	protected ISharedObject createAdapter(ISharedObjectContainer container, @SuppressWarnings("rawtypes") Class adapterType, ID adapterID) {
+		if (adapterType.equals(IRemoteServiceContainerAdapter.class)) {
+			return new RegistrySharedObject() {
+			};
+		}
+		return null;
+	}
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java
new file mode 100644
index 0000000..fe82ee5
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.SSLClientSOContainer;
+
+public class J8SSLClientSOContainer extends SSLClientSOContainer {
+
+	public J8SSLClientSOContainer(ISharedObjectContainerConfig config, int ka) {
+		super(config, ka);
+	}
+}
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java
new file mode 100644
index 0000000..da2e189
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.provider.generic.SOContainerConfig;
+import org.eclipse.ecf.provider.generic.SSLGenericContainerInstantiator;
+
+public class J8SSLGenericContainerInstantiator extends
+		SSLGenericContainerInstantiator {
+
+	public static final String JAVA8_SSL_CLIENT_NAME = "ecf.generic.ssl.client.java8";
+	public static final String JAVA8_SSL_SERVER_NAME = "ecf.generic.ssl.server.java8";
+	
+	@Override
+	protected boolean isClient(ContainerTypeDescription description) {
+		if (description.getName().equals(JAVA8_SSL_SERVER_NAME))
+			return false;
+		return true;
+	}
+	
+	@Override
+	protected IContainer createClientContainer(GenericContainerArgs gcargs)
+			throws Exception {
+		return new J8TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+	}
+	
+	@Override
+	protected IContainer createServerContainer(GenericContainerArgs gcargs)
+			throws Exception {
+		return new J8TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+	}
+	
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@Override
+	public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs) {
+		if (exporterSupportedConfigs == null)
+			return null;
+		List results = new ArrayList();
+		List supportedConfigs = Arrays.asList(exporterSupportedConfigs);
+		// For a server, if exporter is a client then we can be an importer
+		if (JAVA8_SSL_SERVER_NAME.equals(description.getName())) {
+			if (supportedConfigs.contains(JAVA8_SSL_CLIENT_NAME))
+				results.add(JAVA8_SSL_SERVER_NAME);
+			// For a client, if exporter is server we can import
+			// or if remote is either generic server or generic client
+		} else if (JAVA8_SSL_CLIENT_NAME.equals(description.getName())) {
+			if (supportedConfigs.contains(JAVA8_SSL_SERVER_NAME) || supportedConfigs.contains(JAVA8_SSL_CLIENT_NAME))
+				results.add(JAVA8_SSL_CLIENT_NAME);
+		}
+		if (results.size() == 0)
+			return null;
+		return (String[]) results.toArray(new String[] {});
+	}
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java
new file mode 100644
index 0000000..e3356c6
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.URISyntaxException;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.SSLServerSOContainer;
+
+public class J8SSLServerSOContainer extends SSLServerSOContainer {
+
+	public J8SSLServerSOContainer(ISharedObjectContainerConfig config,
+			InetAddress bindAddress, int keepAlive) throws IOException,
+			URISyntaxException {
+		super(config, bindAddress, keepAlive);
+	}
+}
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java
new file mode 100644
index 0000000..243fd4e
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.TCPClientSOContainer;
+
+public class J8TCPClientSOContainer extends TCPClientSOContainer {
+
+	public J8TCPClientSOContainer(ISharedObjectContainerConfig config, int ka) {
+		super(config, ka);
+	}
+}
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java
new file mode 100644
index 0000000..637cf82
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.internal.remoteservice.java8;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.URISyntaxException;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.TCPServerSOContainer;
+
+public class J8TCPServerSOContainer extends TCPServerSOContainer {
+
+	public J8TCPServerSOContainer(ISharedObjectContainerConfig config,
+			InetAddress bindAddress, int keepAlive) throws IOException,
+			URISyntaxException {
+		super(config, bindAddress, keepAlive);
+	}
+}
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF
index a278031..ddeeacb 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.remoteservice;singleton:=true
-Bundle-Version: 4.0.100.qualifier
+Bundle-Version: 4.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.remoteservice.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -18,6 +18,7 @@
  org.eclipse.ecf.provider,
  org.eclipse.ecf.remoteservice;bundle-version="6.0.0"
 Import-Package: org.eclipse.core.runtime.jobs,
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.equinox.concurrent.future,
  org.eclipse.osgi.framework.eventmgr,
  org.osgi.framework,
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties
index 97c0ea1..fc3411b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF RemoteService Provider
+pluginName = ECF Generic Provider RemoteServices Support
 providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java
index 1a2531c..30a6342 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java
@@ -8,9 +8,12 @@
  ******************************************************************************/
 package org.eclipse.ecf.internal.provider.remoteservice;
 
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.SystemLogService;
+import java.util.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.*;
+import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceContainerAdapterFactory;
+import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceNamespace;
 import org.osgi.framework.*;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
@@ -39,8 +42,39 @@
 		plugin = this;
 	}
 
-	public void start(BundleContext ctxt) throws Exception {
+	private List rscAdapterFactories;
+
+	private static IAdapterManager getAdapterManager(BundleContext ctx) {
+		AdapterManagerTracker t = new AdapterManagerTracker(ctx);
+		t.open();
+		IAdapterManager am = t.getAdapterManager();
+		t.close();
+		return am;
+	}
+
+	public void start(final BundleContext ctxt) throws Exception {
 		this.context = ctxt;
+		SafeRunner.run(new ExtensionRegistryRunnable(this.context) {
+			protected void runWithoutRegistry() throws Exception {
+				ctxt.registerService(Namespace.class, new RemoteServiceNamespace(org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceNamespace.NAME, "Generic remote service namespace"), null); //$NON-NLS-1$
+				IAdapterManager am = getAdapterManager(ctxt);
+				if (am != null) {
+					rscAdapterFactories = new ArrayList();
+					IAdapterFactory af = new RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLServerSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPServerSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLClientSOContainer.class);
+					rscAdapterFactories.add(af);
+					af = new RemoteServiceContainerAdapterFactory();
+					am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPClientSOContainer.class);
+					rscAdapterFactories.add(af);
+				}
+			}
+		});
 	}
 
 	public void stop(BundleContext ctxt) throws Exception {
@@ -49,6 +83,14 @@
 			logServiceTracker = null;
 			logService = null;
 		}
+		if (rscAdapterFactories != null) {
+			IAdapterManager am = getAdapterManager(this.context);
+			if (am != null) {
+				for (Iterator i = rscAdapterFactories.iterator(); i.hasNext();)
+					am.unregisterAdapters((IAdapterFactory) i.next());
+			}
+			rscAdapterFactories = null;
+		}
 		this.context = null;
 		plugin = null;
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java
index 577d5f3..688004c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java
@@ -199,6 +199,13 @@
 		}
 	}
 
+	/**
+	 * @since 4.1
+	 */
+	protected RemoteServiceImpl createRemoteService(RemoteServiceRegistrationImpl registration) {
+		return new RemoteServiceImpl(this, registration);
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter#getRemoteService(org.eclipse.ecf.remoteservice.IRemoteServiceReference)
 	 */
@@ -207,7 +214,7 @@
 		final RemoteServiceRegistrationImpl registration = getRemoteServiceRegistrationImpl(reference);
 		if (registration == null)
 			return null;
-		final RemoteServiceImpl remoteService = new RemoteServiceImpl(this, registration);
+		final RemoteServiceImpl remoteService = createRemoteService(registration);
 		synchronized (refToImplMap) {
 			List remoteServiceImplList = (List) refToImplMap.get(reference);
 			if (remoteServiceImplList == null)
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties
index bf1af2b..f6db0c1 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF XMPP Datashare Support Fragment
+pluginName = ECF XMPP Provider DataShare Support
 providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF
index cab4313..8334b52 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.xmpp.remoteservice;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Fragment-Host: org.eclipse.ecf.provider.xmpp
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-Vendor: %providerName
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties
index e7023dc..0ab3019 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF XMPP RemoteServices Support Fragment
+pluginName = ECF XMPP Provider RemoteServices Support
 providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF
index 308f0ae..01a6c6a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.xmpp;singleton:=true
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.2.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.xmpp.XmppPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -12,7 +12,7 @@
  org.eclipse.ecf.filetransfer,
  org.jivesoftware.smack;bundle-version="3.3.0",
  org.eclipse.ecf.sharedobject,
- org.eclipse.equinox.common;bundle-version="3.5.0"
+ org.eclipse.equinox.common
 Eclipse-LazyStart: true
 Export-Package: org.eclipse.ecf.internal.provider.xmpp;x-internal:=true,
  org.eclipse.ecf.internal.provider.xmpp.events;x-internal:=true,
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties
index 4292c60..2e019f5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF XMPP Provider
+pluginName = ECF Presence XMPP Provider
 providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java
index c2d44f1..9be9788 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java
@@ -59,9 +59,9 @@
 import org.jivesoftware.smack.packet.IQ;
 import org.jivesoftware.smack.packet.Message;
 import org.jivesoftware.smack.packet.Presence;
-import org.jivesoftware.smack.packet.RosterPacket;
 import org.jivesoftware.smack.packet.Presence.Mode;
 import org.jivesoftware.smack.packet.Presence.Type;
+import org.jivesoftware.smack.packet.RosterPacket;
 import org.jivesoftware.smackx.packet.VCard;
 
 public class XMPPContainerPresenceHelper implements ISharedObject {
@@ -391,13 +391,53 @@
 		}
 	}
 
+	private boolean replace(IRosterItem i1, IRosterItem i2) {
+		if (i1 instanceof IRosterEntry) {
+			IRosterEntry re1 = (IRosterEntry) i1;
+			if (!(i2 instanceof IRosterEntry))
+				return false;
+			IRosterEntry re2 = (IRosterEntry) i2;
+			XMPPID id1 = (XMPPID) re1.getUser().getID();
+			XMPPID id2 = (XMPPID) re2.getUser().getID();
+			String jid1 = id1.getUsernameAtHost();
+			String jid2 = id2.getUsernameAtHost();
+			if (jid1.equals(jid2)) {
+				String r1 = id1.getResourceName();
+				String r2 = id2.getResourceName();
+				if (r1 == null && r2 != null)
+					return true;
+			}
+		}
+		return false;
+	}
+
+	private void addUnique(Collection existingItems, IRosterItem newItem) {
+		List toAdd = new ArrayList();
+		if (existingItems.size() == 0)
+			toAdd.add(newItem);
+		else {
+			boolean addNewItem = true;
+			for (Iterator i = existingItems.iterator(); i.hasNext();) {
+				IRosterItem existing = (IRosterItem) i.next();
+				// If the same then we don't add it
+				if (existing.equals(newItem))
+					addNewItem = false;
+				// else if the new item should replace the existing then remove
+				if (replace(existing, newItem))
+					i.remove();
+			}
+			if (addNewItem)
+				toAdd.add(newItem);
+		}
+		for (Iterator i = toAdd.iterator(); i.hasNext();)
+			existingItems.add(i.next());
+	}
+
 	private void addUniqueToRoster(IRosterItem[] newItems) {
 		Collection existingItems = roster.getItems();
 		synchronized (existingItems) {
-			for (int i = 0; i < newItems.length; i++) {
-				if (!existingItems.contains(newItems[i]))
-					existingItems.add(newItems[i]);
-			}
+			for (int i = 0; i < newItems.length; i++)
+				addUnique(existingItems, newItems[i]);
 		}
 		rosterManager.notifyRosterUpdate(roster);
 	}
@@ -411,17 +451,20 @@
 	}
 
 	protected IRosterEntry createRosterEntry(RosterEntry entry) {
-		final XMPPID xmppid = createIDFromName(entry.getUser());
-		final String name = (entry.getName() == null) ? xmppid.getUsername()
-				: XMPPID.unfixEscapeInNode(entry.getName());
-		return createRosterEntry(xmppid, name, entry.getGroups().iterator());
+		XMPPID xmppid = createIDFromName(entry.getUser());
+		return createRosterEntry(xmppid, getEntryName(xmppid, entry.getName()),
+				entry.getGroups().iterator());
+	}
+
+	private String getEntryName(XMPPID xmppid, String entryName) {
+		return (entryName == null) ? xmppid.getUsername() : XMPPID
+				.unfixEscapeInNode(entryName);
 	}
 
 	protected IRosterEntry createRosterEntry(XMPPID xmppid,
 			RosterPacket.Item entry) {
-		final String name = (entry.getName() == null) ? xmppid.getUsername()
-				: XMPPID.unfixEscapeInNode(entry.getName());
-		return createRosterEntry(xmppid, name, entry.getGroupNames().iterator());
+		return createRosterEntry(xmppid, getEntryName(xmppid, entry.getName()),
+				entry.getGroupNames().iterator());
 	}
 
 	protected void handleIQEvent(IQEvent evt) {
@@ -435,10 +478,8 @@
 						.iterator(); i.hasNext();) {
 					final RosterPacket.Item item = (RosterPacket.Item) i.next();
 					final RosterPacket.ItemType itemType = item.getItemType();
-					boolean remove = false;
 					XMPPID newID = createIDFromName(item.getUser());
-					final IRosterItem items[] = createRosterEntries(newID, item);
-					final IRosterEntry entry = createRosterEntry(newID, item);
+					boolean remove = false;
 					if (itemType == RosterPacket.ItemType.none
 							|| itemType == RosterPacket.ItemType.remove) {
 						removeItemFromRoster(roster.getItems(),
@@ -446,10 +487,10 @@
 						remove = true;
 					} else {
 						remove = false;
-						addUniqueToRoster(items);
+						addUniqueToRoster(createRosterEntries(newID, item));
 					}
 					// In both cases fire set roster entry
-					fireSetRosterEntry(remove, entry);
+					fireSetRosterEntry(remove, createRosterEntry(newID, item));
 				}
 			}
 		} else {
@@ -530,13 +571,14 @@
 					final List xhtmlbodylist = new ArrayList();
 					for (; xhtmlbodies.hasNext();)
 						xhtmlbodylist.add(xhtmlbodies.next());
-					chatManager.fireXHTMLChatMessage(fromID, threadID, msg
-							.getType(), subject, body, ECFConnection
-							.getPropertiesFromPacket(msg), xhtmlbodylist);
+					chatManager.fireXHTMLChatMessage(fromID, threadID,
+							msg.getType(), subject, body,
+							ECFConnection.getPropertiesFromPacket(msg),
+							xhtmlbodylist);
 				} else if (body != null) {
 					chatManager.fireChatMessage(fromID, threadID,
-							msg.getType(), subject, body, ECFConnection
-									.getPropertiesFromPacket(msg));
+							msg.getType(), subject, body,
+							ECFConnection.getPropertiesFromPacket(msg));
 				}
 			}
 		}
@@ -904,8 +946,8 @@
 		final Presence newPresence = new Presence(
 				createPresenceType(ipresence), ipresence.getStatus(), 0,
 				createPresenceMode(ipresence));
-		ECFConnection.setPropertiesInPacket(newPresence, ipresence
-				.getProperties());
+		ECFConnection.setPropertiesInPacket(newPresence,
+				ipresence.getProperties());
 		return newPresence;
 	}
 
@@ -998,9 +1040,9 @@
 	protected IRosterItem[] createRosterEntries(RosterEntry entry) {
 		final XMPPID xmppid = createIDFromName(entry.getUser());
 		final String name = entry.getName();
-		final User newUser = (name == null) ? new User(xmppid, xmppid
-				.getUsername()) : new User(xmppid, XMPPID
-				.unfixEscapeInNode(name));
+		final User newUser = (name == null) ? new User(xmppid,
+				xmppid.getUsername()) : new User(xmppid,
+				XMPPID.unfixEscapeInNode(name));
 		return createRosterEntries(entry.getGroups().iterator(), roster,
 				newUser);
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java
index ccb8d1c..231908d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java
@@ -97,6 +97,9 @@
 	public XMPPID(Namespace namespace, String unamehost)
 			throws URISyntaxException {
 		super(namespace);
+		// System.out.println("XMPPID.init unamehost=" + unamehost);
+		// Exception except = new Exception();
+		// except.printStackTrace();
 		unamehost = fixPercentEscape(unamehost);
 		if (unamehost == null)
 			throw new URISyntaxException(unamehost,
@@ -148,15 +151,11 @@
 		// Get resources from this and other
 		String thisResourceName = getResourceName();
 		String otherResourceName = other.getResourceName();
-		// The resources are considered equal if either one is null (not known
-		// yet), or they are equal by
-		// string comparison
 		boolean resourceEquals = false;
-		if (thisResourceName == null) {
+		if (thisResourceName == null)
 			resourceEquals = (otherResourceName == null) ? true : false;
-		} else {
+		else
 			resourceEquals = thisResourceName.equals(otherResourceName);
-		}
 		return resourceEquals
 				&& getUsernameAtHost().equals(other.getUsernameAtHost());
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF
index 2448edb..8bf3933 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.zookeeper;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.2.0.qualifier
 Bundle-Activator: org.eclipse.ecf.provider.zookeeper.DiscoveryActivator
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
@@ -20,7 +20,7 @@
  org.osgi.framework;version="1.5.0",
  org.osgi.service.log;version="1.3.0",
  org.osgi.util.tracker;version="1.4.2"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.5.0",
+Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.ecf.discovery;bundle-version="3.0.0",
  org.apache.hadoop.zookeeper;bundle-version="[3.3.3,3.4.0)"
 Export-Package: org.eclipse.ecf.provider.zookeeper;version="1.0.0",
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml
index 2ca7093..97fa861 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml
@@ -5,17 +5,17 @@
          point="org.eclipse.ecf.containerFactory">
       <containerFactory
             class="org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainerInstantiator"
-            description="Discovery Container"
+            description="Zookeeper Discovery Container"
             name="ecf.discovery.zoodiscovery">
       </containerFactory>
       <containerFactory
             class="org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainerInstantiator"
-            description="Discovery Container"
+            description="Zookeeper Discovery Advertiser Container"
             name="ecf.discovery.zoodiscovery.advertiser">
       </containerFactory>
       <containerFactory
             class="org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainerInstantiator"
-            description="Discovery Container"
+            description="Zookeeper Discovery Locator Container"
             name="ecf.discovery.zoodiscovery.locator">
       </containerFactory>
    </extension>
@@ -23,7 +23,7 @@
          point="org.eclipse.ecf.identity.namespace">
       <namespace
             class="org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryNamespace"
-            description="ZooKeeper Based  Discovery Namespace"
+            description="ZooKeeper Based Discovery Namespace"
             name="ecf.namespace.zoodiscovery">
       </namespace>
    </extension>
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java
index 0bac43b..8175053 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java
@@ -16,10 +16,15 @@
 import java.util.Properties;
 import java.util.Set;
 
+import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.util.ExtensionRegistryRunnable;
 import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
 import org.eclipse.ecf.discovery.IDiscoveryLocator;
 import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;
 import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainerInstantiator;
+import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryNamespace;
 import org.eclipse.ecf.provider.zookeeper.core.internal.BundleStoppingListener;
 import org.eclipse.ecf.provider.zookeeper.util.Logger;
 import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
@@ -42,6 +47,15 @@
 	public void start(final BundleContext ctxt) {
 		context = ctxt;
 		
+		SafeRunner.run(new ExtensionRegistryRunnable(ctxt) {
+			protected void runWithoutRegistry() throws Exception {
+				ctxt.registerService(Namespace.class,new ZooDiscoveryNamespace(), null);
+				ctxt.registerService(ContainerTypeDescription.class,new ContainerTypeDescription(ZooDiscoveryContainerInstantiator.NAME,new ZooDiscoveryContainerInstantiator(),"Zookeeper Discovery Container"), null);
+				ctxt.registerService(ContainerTypeDescription.class,new ContainerTypeDescription(ZooDiscoveryContainerInstantiator.NAME+".advertiser",new ZooDiscoveryContainerInstantiator(),"Zookeeper Discovery Advertiser Container"), null);
+				ctxt.registerService(ContainerTypeDescription.class,new ContainerTypeDescription(ZooDiscoveryContainerInstantiator.NAME+".locator",new ZooDiscoveryContainerInstantiator(),"Zookeeper Discovery Locator Container"), null);				
+			}
+		});
+		
 		final Properties props = new Properties();
 		props.put(IDiscoveryLocator.CONTAINER_NAME, ZooDiscoveryContainerInstantiator.NAME);
 		props.put(IDiscoveryAdvertiser.CONTAINER_NAME, ZooDiscoveryContainerInstantiator.NAME);
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java
index a6e5339..bc15ecb 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java
@@ -26,7 +26,7 @@
 	public static final String NAME = "ecf.namespace.zoodiscovery"; //$NON-NLS-1$	
 
 	public ZooDiscoveryNamespace() {
-		super(NAME, "ZooKeeper Based Discovery Namespace"); //$NON-NLS-1$
+		super(NAME, "ZooKeeper Discovery Namespace"); //$NON-NLS-1$
 	}
 
 	public ID createInstance(Object[] parameters) throws IDCreateException {
diff --git a/releng/features/org.eclipse.ecf.console.feature/.project b/releng/features/org.eclipse.ecf.console.feature/.project
new file mode 100644
index 0000000..3c66bf4
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.console.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.console.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.console.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.console.feature/build.properties b/releng/features/org.eclipse.ecf.console.feature/build.properties
new file mode 100644
index 0000000..0769153
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               notice.html,\
+               license.html,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
+src.includes = about.html,\
+               feature.properties,\
+               feature.xml,\
+               license.html,\
+               notice.html,\
+               epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.console.feature/epl-v10.html b/releng/features/org.eclipse.ecf.console.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.console.feature/feature.properties b/releng/features/org.eclipse.ecf.console.feature/feature.properties
new file mode 100644
index 0000000..62f1001
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Console Feature
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.console.feature/feature.xml b/releng/features/org.eclipse.ecf.console.feature/feature.xml
new file mode 100644
index 0000000..1258ec3
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/feature.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.console.feature"
+      label="ECF Console Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF OSGI Console extensions...allowing ECF commands to be givenvia
+      the OSGi console.
+   </description>
+
+   <copyright>
+      Copyright (c) 2009 Composent, Inc. and others. All rights
+reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.console"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.console.feature/license.html
similarity index 96%
rename from releng/features/org.eclipse.ecf.core.feature/notice.html
rename to releng/features/org.eclipse.ecf.console.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.console.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.core.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.core.feature/buckminster.cspex
new file mode 100644
index 0000000..047d47f
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.feature/buckminster.cspex
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+	xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+	<dependencies>
+		<!-- the feature -->
+		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+		<!-- tests -->
+		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.ecf.tests" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.tests.core" componentType="osgi.bundle"/>
+	</dependencies>
+	<generators>
+		<!-- Place your Generators here -->
+	</generators>
+	<artifacts>
+		<!-- Place your Artifacts here -->
+	</artifacts>
+	<actions>
+		<!-- Place your Actions here -->
+	</actions>
+	<groups>
+		<!-- Place your Groups here -->
+	</groups>
+	<alterDependencies>
+		<!-- Place your Dependencies alterations here -->
+	</alterDependencies>
+	<alterArtifacts>
+		<!-- Place your Artifact alterations here -->
+	</alterArtifacts>
+	<alterActions>
+		<!-- Place your Action alterations here -->
+	</alterActions>
+	<alterGroups>
+		<!-- Place your Group alterations here -->
+	</alterGroups>
+</cspecExtension>
+
diff --git a/releng/features/org.eclipse.ecf.core.feature/build.properties b/releng/features/org.eclipse.ecf.core.feature/build.properties
index 82d5091..3ef964f 100644
--- a/releng/features/org.eclipse.ecf.core.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.core.feature/build.properties
@@ -2,8 +2,11 @@
                about.html,\
                epl-v10.html,\
                license.html,\
-               notice.html
+               notice.html,\
+               feature.properties
 src.includes = notice.html,\
                license.html,\
                epl-v10.html,\
-               about.html
+               about.html,\
+               feature.properties,\
+               feature.xml
diff --git a/releng/features/org.eclipse.ecf.core.feature/feature.properties b/releng/features/org.eclipse.ecf.core.feature/feature.properties
index b98bab9..12a4025 100644
--- a/releng/features/org.eclipse.ecf.core.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.core.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
@@ -139,4 +138,4 @@
 re-export of encryption software, to see if this is permitted.\n\
 \n\
 Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
-########### end of license property ##########################################
\ No newline at end of file
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.core.feature/feature.xml b/releng/features/org.eclipse.ecf.core.feature/feature.xml
index 237cd0d..32ed04c 100644
--- a/releng/features/org.eclipse.ecf.core.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.core.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.ecf.core.feature"
       label="ECF Core Feature"
-      version="1.0.0.qualifier"
+      version="1.1.0.qualifier"
       provider-name="Eclipse.org - ECF">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF core and ECF identity bundles.
+      This feature provides the ECF core (org.eclipse.ecf) and ECF identity (org.eclipse.ecf.identity) bundles.  These two bundles are required for all other parts of ECF.
    </description>
 
    <copyright>
@@ -24,6 +24,13 @@
       %license
    </license>
 
+   <requires>
+      <import plugin="org.eclipse.equinox.common" version="3.6" match="compatible"/>
+      <import plugin="org.eclipse.equinox.registry" version="3.5" match="compatible"/>
+      <import plugin="org.eclipse.equinox.concurrent" version="1.0" match="compatible"/>
+      <import plugin="org.eclipse.core.jobs" version="3.5" match="compatible"/>
+   </requires>
+
    <plugin
          id="org.eclipse.ecf"
          download-size="0"
diff --git a/releng/features/org.eclipse.ecf.core.feature/license.html b/releng/features/org.eclipse.ecf.core.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/license.html
+++ b/releng/features/org.eclipse.ecf.core.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.cquery b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.cquery
new file mode 100644
index 0000000..e96d822
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.cquery
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
+    <cq:rootRequest name="org.eclipse.ecf.core.feature" componentType="eclipse.feature"/>
+    <cq:property key="target.arch" value="*"/>
+    <cq:property key="target.os" value="*"/>
+    <cq:property key="target.ws" value="*"/>
+
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf(\..+)?" useTargetPlatform="false" useWorkspace="false">
+        
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">This name pattern matchesorg.eclipse.ecf.anything.
+
+       The regex (\..+)? matches zero or more occurrences 
+       of . followed by one of more of any character.
+
+       Skip Component is not checked.
+    </cq:documentation>
+
+    </cq:advisorNode>
+    <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">The name pattern matches org.eclipse.equinox.p2.user.ui exactly.
+
+       Skip Component is checked so that this component which comes from 
+       the platform is not resolved.
+    </cq:documentation>
+    
+    </cq:advisorNode>
+    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">Everything not picked up by the previous name patterns is
+       rejected.
+    </cq:documentation>
+    
+    </cq:advisorNode>
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.mspec b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.mspec
new file mode 100644
index 0000000..f44ebe1
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.mspec
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf.core" 
+    materializer="p2" 
+    url="org.eclipse.ecf.core.cquery">
+
+    <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+
+    <!-- commented out for sdk when comparing to platform
+    <md:mspecNode namePattern=".*" installLocation="${target.location}"/>
+    -->
+    
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties b/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
index 046152a..a053d5e 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Filetransfer Patch for Eclipse
+featureName=ECF Patch for Eclipse Kepler (4.3).  Not needed for Eclipse Luna (4.4).
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
index 36220df..1c7379e 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.core.featurepatch"
-      label="ECF Filetransfer Patch for Eclipse"
-      version="3.8.0.qualifier"
+      label="ECF Patch for Eclipse Kepler (4.3).  Not needed for Eclipse Luna (4.4)."
+      version="3.8.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
       This feature provides a patch update of the ECF Core and Filetransfer
-bundles.  Use this feature to update ECF core, identity, and filetransfer bundles within Eclipse.
+bundles.  Use this feature to update ECF core, identity, and filetransfer bundles within Eclipse Kepler.  Not 
+needed for Eclipse Luna (4.4) or beyond.
    </description>
 
    <copyright>
@@ -26,10 +27,17 @@
    </license>
 
    <requires>
-      <import feature="org.eclipse.equinox.p2.user.ui" version="0.0.0" patch="true"/>
+      <import feature="org.eclipse.equinox.p2.core.feature" version="0.0.0" patch="true"/>
    </requires>
 
    <plugin
+         id="org.eclipse.ecf.identity"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
          id="org.eclipse.ecf"
          download-size="0"
          install-size="0"
@@ -37,14 +45,15 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.filetransfer"
+         id="org.eclipse.ecf.ssl"
          download-size="0"
          install-size="0"
          version="0.0.0"
+         fragment="true"
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.identity"
+         id="org.eclipse.ecf.filetransfer"
          download-size="0"
          install-size="0"
          version="0.0.0"
@@ -58,21 +67,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.ecf.provider.filetransfer.ssl"
          download-size="0"
          install-size="0"
@@ -81,11 +75,46 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.ssl"
+         id="org.eclipse.ecf.provider.filetransfer.httpclient4"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.httpclient4.ssl"
          download-size="0"
          install-size="0"
          version="0.0.0"
          fragment="true"
          unpack="false"/>
 
+   <plugin
+         id="org.apache.commons.codec"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.commons.logging"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.httpcomponents.httpclient"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.httpcomponents.httpcore"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/license.html b/releng/features/org.eclipse.ecf.core.featurepatch/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/license.html
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/notice.html b/releng/features/org.eclipse.ecf.core.featurepatch/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.core.featurepatch/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties b/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties
index 5fb2461..ee20e2a 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/.project b/releng/features/org.eclipse.ecf.core.ssl.feature/.project
new file mode 100644
index 0000000..be9fe4a
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.core.ssl.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.core.ssl.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.core.ssl.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/build.properties b/releng/features/org.eclipse.ecf.core.ssl.feature/build.properties
new file mode 100644
index 0000000..1f81066
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               license.html,\
+               notice.html,\
+               feature.properties,\
+               epl-v10.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               about.html,\
+               feature.properties,\
+               epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/epl-v10.html b/releng/features/org.eclipse.ecf.core.ssl.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/feature.properties b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.properties
new file mode 100644
index 0000000..36695e8
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Core SSL API
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/feature.xml b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.xml
new file mode 100644
index 0000000..1a8244f
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.core.ssl.feature"
+      label="ECF Core SSL Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF core SSL fragment.  On Equinox-based frameworks, this fragment exposes the Equinox TrustManager to ECF FileTransfer and other ECF-based communications.
+   </description>
+
+   <copyright>
+      Copyright (c) 2009 Composent, Inc. and others. All rights
+reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.ssl"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.core.ssl.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.core.ssl.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.core/feature.properties b/releng/features/org.eclipse.ecf.core/feature.properties
index e51f6e7..45d0a41 100644
--- a/releng/features/org.eclipse.ecf.core/feature.properties
+++ b/releng/features/org.eclipse.ecf.core/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Target Components for Eclipse
+featureName=ECF SDK for Eclipse
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
@@ -139,4 +138,4 @@
 re-export of encryption software, to see if this is permitted.\n\
 \n\
 Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
-########### end of license property ##########################################
\ No newline at end of file
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.core/feature.xml b/releng/features/org.eclipse.ecf.core/feature.xml
index ceef554..aebb2db 100644
--- a/releng/features/org.eclipse.ecf.core/feature.xml
+++ b/releng/features/org.eclipse.ecf.core/feature.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.core"
-      label="ECF Target Components for Eclipse"
-      version="3.8.0.qualifier"
+      label="ECF SDK for Eclipse"
+      version="3.8.1.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.ecf">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides all of the ECF APIs, providers, and examples for Eclipse.  Use this feature if you want to install all of ECF into Eclipse.
+      This feature provides an all-in-one distribution of ECF APIs, providers, ui, tools, and examples for Eclipse.  Use this feature if you want to install all of ECF into Eclipse.
    </description>
 
    <copyright>
@@ -26,9 +26,14 @@
    </license>
 
    <includes
-         id="org.eclipse.ecf.remoteservice.sdk.feature"
+         id="org.eclipse.ecf.docshare.feature"
          version="0.0.0"/>
 
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.sdk.feature" version="3.8" match="compatible"/>
+      <import feature="org.eclipse.ecf.remoteservice.sdk.examples.feature" version="1.0" match="compatible"/>
+   </requires>
+
    <plugin
          id="org.eclipse.ecf.doc"
          download-size="0"
@@ -170,13 +175,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.docshare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.ecf.provider.filetransfer.scp"
          download-size="0"
          install-size="0"
@@ -198,13 +196,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.sync"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.ecf.storage"
          download-size="0"
          install-size="0"
@@ -304,4 +295,32 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.ecf.storage"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.sync"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.protocol.msn"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.msn"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/releng/features/org.eclipse.ecf.core/license.html b/releng/features/org.eclipse.ecf.core/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core/license.html
+++ b/releng/features/org.eclipse.ecf.core/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.core/notice.html b/releng/features/org.eclipse.ecf.core/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.core/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties b/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties
index f1b93fa..9833332 100644
--- a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties
+++ b/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties
@@ -18,7 +18,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -47,17 +47,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -66,11 +66,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -87,12 +87,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -116,19 +115,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/license.html b/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/license.html
index c184ca3..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/license.html
+++ b/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,10 +58,10 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/notice.html b/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/notice.html
deleted file mode 100644
index 5ad00ba..0000000
--- a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/notice.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/feature.properties b/releng/features/org.eclipse.ecf.datashare.feature/feature.properties
index f6289ed..ee93afe 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.datashare.feature/feature.properties
@@ -9,11 +9,15 @@
 featureName=ECF Datashare
 providerName=Eclipse.org - ECF
 
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -42,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -61,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -82,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -111,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
index 2415adb..8bf0101 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
@@ -3,11 +3,11 @@
       id="org.eclipse.ecf.datashare.feature"
       label="ECF Datashare"
       version="1.0.0.qualifier"
-      provider-name="%providerName">
+      provider-name="Eclipse.org - ECF">
 
    <description url="http://www.eclipse.org/ecf">
       This feature provides the ECF Datashare API for asynchronous
-messaging within a channel.
+messaging within a named channel.
    </description>
 
    <copyright>
@@ -26,6 +26,11 @@
       %license
    </license>
 
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
    <plugin
          id="org.eclipse.ecf.datashare"
          download-size="0"
@@ -33,18 +38,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.ecf.provider.datashare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.datashare.nio"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/license.html b/releng/features/org.eclipse.ecf.datashare.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/license.html
+++ b/releng/features/org.eclipse.ecf.datashare.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/notice.html b/releng/features/org.eclipse.ecf.datashare.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.datashare.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties
index 1746bb2..f458019 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
index 6e3af00..b6659b4 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
@@ -6,7 +6,7 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery DNS-SD Provider.
+      This feature provides the ECF Discovery DNS-SD Provider.  This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
    </description>
 
    <copyright>
@@ -26,7 +26,7 @@
    </license>
 
    <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
    </requires>
 
    <plugin
diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/license.html b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.feature/feature.properties
index 9d861d4..573e243 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
index 099007d..27add58 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
@@ -25,6 +25,11 @@
       %license
    </license>
 
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
    <plugin
          id="org.eclipse.ecf.discovery"
          download-size="0"
@@ -39,11 +44,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.equinox.concurrent"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/license.html b/releng/features/org.eclipse.ecf.discovery.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.discovery.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
index fe06ecb..56ff54a 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
index 169a45d..ce2a78d 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
@@ -6,7 +6,7 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery Zeroconf Provider.
+      This feature provides the ECF Discovery Zeroconf Provider.  This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
    </description>
 
    <copyright>
@@ -26,7 +26,7 @@
    </license>
 
    <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
    </requires>
 
    <plugin
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties
index d656eab..76ec591 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
index 7bf836a..0ed2dea 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
@@ -7,7 +7,7 @@
 
    <description url="http://www.eclipse.org/ecf">
       This feature provides the ECF Discovery Service Location Protocol
-(RFC 2608) Provider.
+(RFC 2608) Provider.   This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
    </description>
 
    <copyright>
@@ -27,7 +27,7 @@
    </license>
 
    <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
    </requires>
 
    <plugin
diff --git a/releng/features/org.eclipse.ecf.discovery.slp.feature/license.html b/releng/features/org.eclipse.ecf.discovery.slp.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.discovery.slp.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.slp.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties
index 2820236..305a41f 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
index fa1d497..fc024fa 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
@@ -6,7 +6,7 @@
       provider-name="%providerName">
 
    <description url="http://wiki.eclipse.org/Zookeeper_Based_ECF_Discovery">
-      This feature provides the Apache Zookeeper Discovery Provider.
+      This feature provides the Apache Zookeeper Discovery Provider.  This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
    </description>
 
    <copyright url="http://www.eclipse.org/legal/epl-v10.html">
@@ -27,16 +27,7 @@
    </license>
 
    <requires>
-      <import plugin="org.apache.log4j"/>
-      <import plugin="org.eclipse.equinox.common" version="3.5.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.discovery" version="3.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf"/>
-      <import plugin="org.eclipse.ecf.identity"/>
-      <import plugin="org.eclipse.equinox.concurrent"/>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.osgi.services"/>
-      <import plugin="org.eclipse.equinox.ds"/>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
    </requires>
 
    <plugin
@@ -60,11 +51,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.slf4j.api"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/.project b/releng/features/org.eclipse.ecf.docshare.feature/.project
new file mode 100644
index 0000000..034cbe9
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.docshare.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.docshare.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.docshare.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/build.properties b/releng/features/org.eclipse.ecf.docshare.feature/build.properties
new file mode 100644
index 0000000..748532e
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               notice.html,\
+               license.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/epl-v10.html b/releng/features/org.eclipse.ecf.docshare.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/feature.properties b/releng/features/org.eclipse.ecf.docshare.feature/feature.properties
new file mode 100644
index 0000000..a3ab2f4
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Docshare
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/feature.xml b/releng/features/org.eclipse.ecf.docshare.feature/feature.xml
new file mode 100644
index 0000000..de413cf
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/feature.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.docshare.feature"
+      label="ECF Docshare"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Docshare Add-on for Eclipse.   This add-on allows Eclipse-based text editors to do real-time document sharing using XMPP/Google Talk or other protocols.  For a demo of docshare see the following
+
+http://vimeo.com/1195398
+
+And for more technical info about extending/using docshare see
+
+https://wiki.eclipse.org/ECF/DocShare_Plugin
+
+https://wiki.eclipse.org/Extending_Real-Time_Shared_Editing_for_Use_with_Other_Editors
+   </description>
+
+   <copyright>
+      #################################################
+# Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the 
+# terms of the Eclipse Public License v1.0 which accompanies this 
+# distribution, and is available at 
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors: Composent, Inc. - initial API and implementation
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.jface.text"/>
+      <import plugin="org.eclipse.ecf.datashare"/>
+      <import plugin="org.eclipse.ui.editors"/>
+      <import plugin="org.eclipse.ecf.presence.ui"/>
+      <import plugin="org.eclipse.ecf.presence"/>
+      <import plugin="org.eclipse.ui.ide"/>
+      <import plugin="org.eclipse.core.filesystem"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.docshare"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.sync"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.docshare.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.docshare.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.docshare.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
index 230722a..508334c 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
index 494326f..a1ddff0 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
@@ -6,7 +6,9 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Distributed EventAdmin Examples.
+      This feature provides the ECF Distributed EventAdmin Example Application.  For more information about Distribute EventAdmin see:
+
+https://wiki.eclipse.org/EIG:Distributed_EventAdmin_Service
    </description>
 
    <copyright>
@@ -25,9 +27,10 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.eventadmin.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.eventadmin.feature" version="2.0" match="compatible"/>
+      <import plugin="org.eclipse.equinox.app"/>
+   </requires>
 
    <plugin
          id="org.eclipse.ecf.examples.eventadmin.app"
diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/license.html b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/license.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/notice.html b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
index 8dd5293..66b5531 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
index 2212abe..6c20620 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
@@ -6,7 +6,9 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Distributed EventAdmin API.
+      This feature provides the ECF Distributed EventAdmin API.  This is a distributed implementation of the OSGi EventAdmin service.   For information about this API please see:
+
+https://wiki.eclipse.org/EIG:Distributed_EventAdmin_Service
    </description>
 
    <copyright>
@@ -25,12 +27,9 @@
       %license
    </license>
 
-   <plugin
-         id="org.eclipse.ecf.provider"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
+   <requires>
+      <import feature="org.eclipse.ecf.provider.generic.feature" version="1.0" match="compatible"/>
+   </requires>
 
    <plugin
          id="org.eclipse.ecf.remoteservice.eventadmin"
@@ -39,11 +38,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.ecf.sharedobject"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/license.html b/releng/features/org.eclipse.ecf.eventadmin.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/license.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/notice.html b/releng/features/org.eclipse.ecf.eventadmin.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties
index 4679823..d5a4040 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml
index 161e222..e5fe7a9 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml
@@ -2,11 +2,12 @@
 <feature
       id="org.eclipse.ecf.filetransfer.feature"
       label="ECF Filetransfer Feature"
-      version="3.8.0.qualifier"
+      version="3.9.0.qualifier"
       provider-name="Eclipse.org">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF core and filetransfer bundles used by the Eclipse platform to support P2 filetransfer.
+      This feature provides the ECF Filetransfer API bundle.  This API is used
+by the Eclipse platform to support P2 filetransfer and is required for any of the ECF FileTransfer providers.
    </description>
 
    <copyright>
@@ -24,6 +25,11 @@
       %license
    </license>
 
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
    <plugin
          id="org.eclipse.ecf.filetransfer"
          download-size="0"
@@ -38,34 +44,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.identity"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/license.html b/releng/features/org.eclipse.ecf.filetransfer.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/license.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.properties
index 1916cc2..d5a4040 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,11 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -114,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml
index 3eb5af8..99b55b4 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml
@@ -2,11 +2,12 @@
 <feature
       id="org.eclipse.ecf.filetransfer.httpclient.feature"
       label="ECF Httpclient Filetransfer Provider"
-      version="3.8.0.qualifier"
+      version="3.8.1.qualifier"
       provider-name="Eclipse.org - ECF">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the httpclient-based filetransfer provider used by the Eclipse platform to support P2 filetransfer.
+      This feature provides the Apache HttpClient 3.1-based FileTransfer provider
+used by the Eclipse platform to support P2 filetransfer.
    </description>
 
    <copyright>
@@ -24,6 +25,17 @@
       %license
    </license>
 
+   <requires>
+      <import feature="org.eclipse.ecf.filetransfer.feature" version="3.9.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.httpclient"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
    <plugin
          id="org.apache.commons.codec"
          download-size="0"
@@ -45,26 +57,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.ecf.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/license.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/license.html
index c184ca3..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/license.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,10 +58,10 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/notice.html
deleted file mode 100644
index 5ad00ba..0000000
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/notice.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/.project b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/.project
new file mode 100644
index 0000000..d86a4ea
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.filetransfer.httpclient.ssl.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/about.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/about.html
new file mode 100644
index 0000000..1035806
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/about.html
@@ -0,0 +1,306 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 25, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor's license for 
+terms and conditions of use.</p>
+
+<h3>Apache HttpClient v3.0.1</h3>
+
+<p>This plugin is based on software developed by the Apache Httpclient project at <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Codec v1.3</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/codec/">http://jakarta.apache.org/commons/codec/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Logging v1.1</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>IRCLib API v1.10</h3>
+
+<p>This plugin is based on software developed by <a href="http://schwering.org">Christoph Schwering</a> at 
+<a href="http://moepii.sourceforge.net/">http://moepii.sourceforge.net/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>JmDNS API v2.0</h3>
+
+<p>This plugin is based on software developed by JmDNS project team at 
+<a href="http://jmdns.sourceforge.net">http://jmdns.sourceforge.net</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Jive Software Smack API v2.1.1</h3>
+
+<p>This plugin is based on software developed by <a href="http://www.jivesoftware.org">Jive Software</a> project team at 
+<a href="http://www.igniterealtime.org/">http://www.igniterealtime.org/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+
+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+<p>
+More specifically:</p>
+
+<p></p>
+
+<p align="center">
+Apache License<br />
+Version 2.0, January 2004<br />
+<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>
+
+</p>
+<p>
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+</p>
+<p><b><a name="definitions">1. Definitions</a></b>.</p>
+<p>
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+</p>
+<p>
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+</p>
+<p>
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+</p>
+<p>
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+</p>
+<p>
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+</p>
+<p>
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+</p>
+<p>
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+</p>
+
+<p>
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+</p>
+<p>
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+</p>
+<p>
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+</p>
+<p><b><a name="copyright">2. Grant of Copyright License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+</p>
+<p><b><a name="patent">3. Grant of Patent License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+</p>
+<p><b><a name="redistribution">4. Redistribution</a></b>.
+You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+<ol type="a">
+<li>You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+<br /> <br /></li>
+
+<li>You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+<br /> <br /></li>
+
+<li>You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+<br /> <br /></li>
+
+<li>If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.</li>
+
+</ol>
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+</p>
+<p><b><a name="contributions">5. Submission of Contributions</a></b>.
+Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+</p>
+<p><b><a name="trademarks">6. Trademarks</a></b>.
+This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+</p>
+<p><b><a name="no-warranty">7. Disclaimer of Warranty</a></b>.
+Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+</p>
+<p><b><a name="no-liability">8. Limitation of Liability</a></b>.
+In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+</p>
+<p><b><a name="additional">9. Accepting Warranty or Additional Liability</a></b>.
+While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+</p>
+<p>
+END OF TERMS AND CONDITIONS
+</p></body>
+</html>
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/asl-v20.txt b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/asl-v20.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/asl-v20.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/build.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/build.properties
new file mode 100644
index 0000000..51ac02c
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               asl-v20.txt,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = about.html,\
+               asl-v20.txt,\
+               feature.properties,\
+               feature.xml,\
+               license.html,\
+               notice.html
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.properties
new file mode 100644
index 0000000..a6ee57c
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Platform
+providerName=Eclipse.org
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.xml
new file mode 100644
index 0000000..1d799ce
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.filetransfer.httpclient.ssl.feature"
+      label="ECF HttpClient SSL Filetransfer Provider Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the SSL support for the Apache HttpClient 3.1-based FileTransfer provider
+used by the Eclipse platform to support P2 filetransfer.
+   </description>
+
+   <copyright>
+      Copyright (c) 2014 Composent, Inc. and others. All rights
+reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.filetransfer.ssl.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.filetransfer.httpclient.feature" version="3.8" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.properties
index c7ef49c..f4ddde6 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
index 501f822..2dcb00b 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.ecf.filetransfer.httpclient4.feature"
       label="ECF Httpclient4 Filetransfer Provider"
-      version="3.8.0.qualifier"
+      version="3.8.1.qualifier"
       provider-name="Eclipse.org - ECF">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the httpclient4-based filetransfer provider.
+      This feature provides the Apache HttpComponents/HttpClient4-based FileTransfer provider used by the Eclipse platform to support P2 filetransfer.
    </description>
 
    <copyright url="http://www.example.com/copyright">
@@ -23,6 +23,31 @@
       %license
    </license>
 
+   <requires>
+      <import feature="org.eclipse.ecf.filetransfer.feature" version="3.9.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.httpclient4"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.commons.codec"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.commons.logging"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
    <plugin
          id="org.apache.httpcomponents.httpclient"
          download-size="0"
@@ -38,29 +63,28 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient4"
+         id="org.apache.commons.codec.source"
          download-size="0"
          install-size="0"
          version="0.0.0"
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient4.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.logging"
+         id="org.apache.commons.logging.source"
          download-size="0"
          install-size="0"
          version="0.0.0"
          unpack="false"/>
 
    <plugin
-         id="org.apache.commons.codec"
+         id="org.apache.httpcomponents.httpclient.source"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.httpcomponents.httpcore.source"
          download-size="0"
          install-size="0"
          version="0.0.0"
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/license.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/license.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/.project b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/.project
new file mode 100644
index 0000000..ad8191a
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.filetransfer.httpclient4.ssl.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/about.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/about.html
new file mode 100644
index 0000000..6fe3d50
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/about.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+ 		<p>May 4, 2012</p>	
+		<h3>License</h3>
+
+		<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
+		Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
+		Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+		at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+		<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+		being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+		apply to your use of any object code in the Content.  Check the Redistributor's license 
+		that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+		indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+		and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+<h4>Apache HttpComponents v4.1.2</h4>
+
+<p>This plugin is based on software developed by the Apache HttpComponents project at <a href="http://hc.apache.org/">http://hc.apache.org/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Codec v1.3</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/codec/">http://jakarta.apache.org/commons/codec/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Logging v1.1</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+
+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+<p>
+More specifically:</p>
+
+<p></p>
+
+<p align="center">
+Apache License<br />
+Version 2.0, January 2004<br />
+<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>
+
+</p>
+<p>
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+</p>
+<p><b><a name="definitions">1. Definitions</a></b>.</p>
+<p>
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+</p>
+<p>
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+</p>
+<p>
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+</p>
+<p>
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+</p>
+<p>
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+</p>
+<p>
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+</p>
+<p>
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+</p>
+
+<p>
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+</p>
+<p>
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+</p>
+<p>
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+</p>
+<p><b><a name="copyright">2. Grant of Copyright License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+</p>
+<p><b><a name="patent">3. Grant of Patent License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+</p>
+<p><b><a name="redistribution">4. Redistribution</a></b>.
+You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+<ol type="a">
+<li>You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+<br /> <br /></li>
+
+<li>You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+<br /> <br /></li>
+
+<li>You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+<br /> <br /></li>
+
+<li>If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.</li>
+
+</ol>
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+</p>
+<p><b><a name="contributions">5. Submission of Contributions</a></b>.
+Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+</p>
+<p><b><a name="trademarks">6. Trademarks</a></b>.
+This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+</p>
+<p><b><a name="no-warranty">7. Disclaimer of Warranty</a></b>.
+Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+</p>
+<p><b><a name="no-liability">8. Limitation of Liability</a></b>.
+In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+</p>
+<p><b><a name="additional">9. Accepting Warranty or Additional Liability</a></b>.
+While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+</p>
+<p>
+END OF TERMS AND CONDITIONS
+</p></body>
+</html>
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/asl-v20.txt b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/asl-v20.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/asl-v20.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/build.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/build.properties
new file mode 100644
index 0000000..f9554d5
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/build.properties
@@ -0,0 +1,14 @@
+bin.includes = feature.xml,\
+               about.html,\
+               asl-v20.txt,\
+               feature.properties,\
+               license.html,\
+               notice.html,\
+               epl-v10.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties,\
+               asl-v20.txt,\
+               about.html,\
+               epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/epl-v10.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.properties
new file mode 100644
index 0000000..7d047ca
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Apache Httpclient4 FileTransfer SSL Provider
+providerName=Eclipse.org
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.xml
new file mode 100644
index 0000000..a594bab
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.filetransfer.httpclient4.ssl.feature"
+      label="ECF Httpclient4 Filetransfer SSL Provider"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the SSL support for the Apache HttpComponents/HttpClient4-based FileTransfer provider used by the Eclipse platform to support P2 filetransfer.
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      Copyright (c) 2014 Composent, Inc. and others. All rights reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.filetransfer.ssl.feature" version="1.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.httpclient4.ssl"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/.project b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/.project
new file mode 100644
index 0000000..7511e69
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.filetransfer.p2.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/about.html b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/about.html
new file mode 100644
index 0000000..6fe3d50
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/about.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+ 		<p>May 4, 2012</p>	
+		<h3>License</h3>
+
+		<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
+		Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
+		Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+		at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+		<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+		being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+		apply to your use of any object code in the Content.  Check the Redistributor's license 
+		that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+		indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+		and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+<h4>Apache HttpComponents v4.1.2</h4>
+
+<p>This plugin is based on software developed by the Apache HttpComponents project at <a href="http://hc.apache.org/">http://hc.apache.org/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Codec v1.3</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/codec/">http://jakarta.apache.org/commons/codec/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Logging v1.1</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+
+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+<p>
+More specifically:</p>
+
+<p></p>
+
+<p align="center">
+Apache License<br />
+Version 2.0, January 2004<br />
+<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>
+
+</p>
+<p>
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+</p>
+<p><b><a name="definitions">1. Definitions</a></b>.</p>
+<p>
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+</p>
+<p>
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+</p>
+<p>
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+</p>
+<p>
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+</p>
+<p>
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+</p>
+<p>
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+</p>
+<p>
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+</p>
+
+<p>
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+</p>
+<p>
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+</p>
+<p>
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+</p>
+<p><b><a name="copyright">2. Grant of Copyright License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+</p>
+<p><b><a name="patent">3. Grant of Patent License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+</p>
+<p><b><a name="redistribution">4. Redistribution</a></b>.
+You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+<ol type="a">
+<li>You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+<br /> <br /></li>
+
+<li>You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+<br /> <br /></li>
+
+<li>You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+<br /> <br /></li>
+
+<li>If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.</li>
+
+</ol>
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+</p>
+<p><b><a name="contributions">5. Submission of Contributions</a></b>.
+Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+</p>
+<p><b><a name="trademarks">6. Trademarks</a></b>.
+This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+</p>
+<p><b><a name="no-warranty">7. Disclaimer of Warranty</a></b>.
+Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+</p>
+<p><b><a name="no-liability">8. Limitation of Liability</a></b>.
+In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+</p>
+<p><b><a name="additional">9. Accepting Warranty or Additional Liability</a></b>.
+While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+</p>
+<p>
+END OF TERMS AND CONDITIONS
+</p></body>
+</html>
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/asl-v20.txt b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/asl-v20.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/asl-v20.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/buckminster.cspex
new file mode 100644
index 0000000..e7032da
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/buckminster.cspex
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+	xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+	<dependencies>
+		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+	</dependencies>
+	<generators>
+		<!-- Place your Generators here -->
+	</generators>
+	<artifacts>
+		<!-- Place your Artifacts here -->
+	</artifacts>
+	<actions>
+		<!-- Place your Actions here -->
+	</actions>
+	<groups>
+		<!-- Place your Groups here -->
+	</groups>
+	<alterDependencies>
+		<!-- Place your Dependencies alterations here -->
+	</alterDependencies>
+	<alterArtifacts>
+		<!-- Place your Artifact alterations here -->
+	</alterArtifacts>
+	<alterActions>
+		<!-- Place your Action alterations here -->
+	</alterActions>
+	<alterGroups>
+		<!-- Place your Group alterations here -->
+	</alterGroups>
+</cspecExtension>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/build.properties b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/build.properties
new file mode 100644
index 0000000..248759e
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/build.properties
@@ -0,0 +1,14 @@
+bin.includes = feature.xml,\
+               about.html,\
+               asl-v20.txt,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = about.html,\
+               asl-v20.txt,\
+               epl-v10.html,\
+               feature.properties,\
+               feature.xml,\
+               license.html,\
+               notice.html
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/epl-v10.html b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.properties
new file mode 100644
index 0000000..0ef99ef
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF P2 FileTransfer
+providerName=Eclipse.org
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.xml
new file mode 100644
index 0000000..e293f21
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.filetransfer.p2.feature"
+      label="ECF P2 FileTransfer"
+      version="1.0.1.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature id not intended to be installed directly.
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      Copyright (c) 2014 Composent, Inc. and others. All rights reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.core.ssl.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.filetransfer.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.filetransfer.ssl.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.filetransfer.httpclient4.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.filetransfer.httpclient4.ssl.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.core.feature"
+         version="0.0.0"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.filetransfer.p2.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.cquery b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.cquery
new file mode 100644
index 0000000..a11b580
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.cquery
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
+    <cq:rootRequest name="org.eclipse.ecf.filetransfer.p2.feature" componentType="eclipse.feature"/>
+    <cq:property key="target.arch" value="*"/>
+    <cq:property key="target.os" value="*"/>
+    <cq:property key="target.ws" value="*"/>
+
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
+
+    <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false"/>
+
+    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT"/>
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.mspec b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.mspec
new file mode 100644
index 0000000..3680d09
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.mspec
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf" 
+    materializer="p2" 
+    url="org.eclipse.ecf.filetransfer.p2.cquery">
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/.project b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/.project
new file mode 100644
index 0000000..1e2d125
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.filetransfer.ssl.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/about.html b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/about.html
new file mode 100644
index 0000000..1035806
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/about.html
@@ -0,0 +1,306 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 25, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor's license for 
+terms and conditions of use.</p>
+
+<h3>Apache HttpClient v3.0.1</h3>
+
+<p>This plugin is based on software developed by the Apache Httpclient project at <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Codec v1.3</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/codec/">http://jakarta.apache.org/commons/codec/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Apache Commons Logging v1.1</h3>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>IRCLib API v1.10</h3>
+
+<p>This plugin is based on software developed by <a href="http://schwering.org">Christoph Schwering</a> at 
+<a href="http://moepii.sourceforge.net/">http://moepii.sourceforge.net/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>JmDNS API v2.0</h3>
+
+<p>This plugin is based on software developed by JmDNS project team at 
+<a href="http://jmdns.sourceforge.net">http://jmdns.sourceforge.net</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Jive Software Smack API v2.1.1</h3>
+
+<p>This plugin is based on software developed by <a href="http://www.jivesoftware.org">Jive Software</a> project team at 
+<a href="http://www.igniterealtime.org/">http://www.igniterealtime.org/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+
+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+<p>
+More specifically:</p>
+
+<p></p>
+
+<p align="center">
+Apache License<br />
+Version 2.0, January 2004<br />
+<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>
+
+</p>
+<p>
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+</p>
+<p><b><a name="definitions">1. Definitions</a></b>.</p>
+<p>
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+</p>
+<p>
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+</p>
+<p>
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+</p>
+<p>
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+</p>
+<p>
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+</p>
+<p>
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+</p>
+<p>
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+</p>
+
+<p>
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+</p>
+<p>
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+</p>
+<p>
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+</p>
+<p><b><a name="copyright">2. Grant of Copyright License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+</p>
+<p><b><a name="patent">3. Grant of Patent License</a></b>.
+Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+</p>
+<p><b><a name="redistribution">4. Redistribution</a></b>.
+You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+<ol type="a">
+<li>You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+<br /> <br /></li>
+
+<li>You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+<br /> <br /></li>
+
+<li>You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+<br /> <br /></li>
+
+<li>If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.</li>
+
+</ol>
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+</p>
+<p><b><a name="contributions">5. Submission of Contributions</a></b>.
+Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+</p>
+<p><b><a name="trademarks">6. Trademarks</a></b>.
+This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+</p>
+<p><b><a name="no-warranty">7. Disclaimer of Warranty</a></b>.
+Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+</p>
+<p><b><a name="no-liability">8. Limitation of Liability</a></b>.
+In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+</p>
+<p><b><a name="additional">9. Accepting Warranty or Additional Liability</a></b>.
+While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+</p>
+<p>
+END OF TERMS AND CONDITIONS
+</p></body>
+</html>
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/build.properties b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/build.properties
new file mode 100644
index 0000000..c503dd0
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
diff --git a/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/epl-v10.html b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.properties
new file mode 100644
index 0000000..4f92cbe
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Filetransfer SSL Feature
+providerName=Eclipse.org
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.xml
new file mode 100644
index 0000000..a67408e
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.filetransfer.ssl.feature"
+      label="ECF Filetransfer SSL Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the SSL support for the ECF FileTransfer API used by the Eclipse platform to support P2 filetransfer.
+   </description>
+
+   <copyright>
+      Copyright (c) 2014 Composent, Inc. and others. All rights
+reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.filetransfer.feature" version="3.9" match="compatible"/>
+      <import feature="org.eclipse.ecf.core.ssl.feature" version="1.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.ssl"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.filetransfer.ssl.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.ssl.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
index 6e88c09..5659355 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
index 14efb01..137da2d 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
@@ -1,13 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.osgi.services.feature"
-      label="ECF OSGi 4.2 Remote Services Admin"
+      label="ECF OSGi Remote Services Admin"
       version="2.0.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Implementation of OSGi 4.2 Remote
-Services.  Remote Services are specified in chapter 13 of the OSGi compendium specification.  See http://www.osgi.org/download/r4v42/r4.cmpn.pdf.
+      This feature provides the ECF Implementation of OSGi R6 Remote
+Services and Remote Service Admin.  Remote Services are specified in chapter 100 of the OSGi R6 Enterprise specification while RSA is specified in chapter 122 of the OSGi R6 Enterprise specification.  
+
+For specifications see 
+
+http://www.osgi.org/Specifications/HomePage
+
+For tutorials, documentation, and examples with ECF&apos;s Implementation of OSGi RS/RSA see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -26,9 +34,10 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1" match="compatible"/>
+   </requires>
 
    <plugin
          id="org.eclipse.ecf.osgi.services.distribution"
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/license.html b/releng/features/org.eclipse.ecf.osgi.services.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/license.html
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/notice.html b/releng/features/org.eclipse.ecf.osgi.services.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.presence.feature/.project b/releng/features/org.eclipse.ecf.presence.feature/.project
new file mode 100644
index 0000000..2715336
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.presence.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.presence.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.presence.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.presence.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.presence.feature/build.properties b/releng/features/org.eclipse.ecf.presence.feature/build.properties
new file mode 100644
index 0000000..0f3b776
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.presence.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               license.html,\
+               notice.html,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
+src.includes = about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               feature.xml,\
+               license.html,\
+               notice.html
diff --git a/releng/features/org.eclipse.ecf.presence.feature/epl-v10.html b/releng/features/org.eclipse.ecf.presence.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.presence.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.presence.feature/feature.properties b/releng/features/org.eclipse.ecf.presence.feature/feature.properties
new file mode 100644
index 0000000..7a265ca
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.presence.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2010 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Presence
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.presence.feature/feature.xml b/releng/features/org.eclipse.ecf.presence.feature/feature.xml
new file mode 100644
index 0000000..01d5d46
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.presence.feature/feature.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.presence.feature"
+      label="ECF Presence API Feature"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Presence API.  The ECF Presence API
+allows distribution of user presence and instant messaging using common Instant Messaging transports (XMPP/XMPPS, IRC, MSM).
+   </description>
+
+   <copyright>
+      #################################################
+# Copyright (c) 2014 Composent, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the 
+# terms of the Eclipse Public License v1.0 which accompanies this 
+# distribution, and is available at 
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors: Composent, Inc. - initial API and implementation
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.presence"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.presence.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.presence.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.presence.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/.project b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/.project
new file mode 100644
index 0000000..ae3760e
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.provider.generic.datashare.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.provider.generic.datashare.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/build.properties b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/build.properties
new file mode 100644
index 0000000..c503dd0
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
diff --git a/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/epl-v10.html b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.properties b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.properties
new file mode 100644
index 0000000..1710353
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Generic Provider Datashare
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.xml b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.xml
new file mode 100644
index 0000000..d032561
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.provider.generic.datashare.feature"
+      label="ECF Generic Provider Datashare Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the Datashare API support for the ECF Generic Provider.
+   </description>
+
+   <copyright>
+      #################################################
+# Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the 
+# terms of the Eclipse Public License v1.0 which accompanies this 
+# distribution, and is available at 
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors: Composent, Inc. - initial API and implementation
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.datashare.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.provider.generic.feature" version="1.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.datashare"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.datashare.nio"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.provider.generic.datashare.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.provider.generic.datashare.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/.project b/releng/features/org.eclipse.ecf.provider.generic.feature/.project
new file mode 100644
index 0000000..6c89331
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.provider.generic.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.provider.generic.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.provider.generic.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.provider.generic.feature/buckminster.cspex
new file mode 100644
index 0000000..1df65c0
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/buckminster.cspex
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+	xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+	<dependencies>
+		<!-- the feature -->
+		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+	</dependencies>
+	<generators>
+		<!-- Place your Generators here -->
+	</generators>
+	<artifacts>
+		<!-- Place your Artifacts here -->
+	</artifacts>
+	<actions>
+		<!-- Place your Actions here -->
+	</actions>
+	<groups>
+		<!-- Place your Groups here -->
+	</groups>
+	<alterDependencies>
+		<!-- Place your Dependencies alterations here -->
+	</alterDependencies>
+	<alterArtifacts>
+		<!-- Place your Artifact alterations here -->
+	</alterArtifacts>
+	<alterActions>
+		<!-- Place your Action alterations here -->
+	</alterActions>
+	<alterGroups>
+		<!-- Place your Group alterations here -->
+	</alterGroups>
+</cspecExtension>
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/build.properties b/releng/features/org.eclipse.ecf.provider.generic.feature/build.properties
new file mode 100644
index 0000000..c503dd0
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/epl-v10.html b/releng/features/org.eclipse.ecf.provider.generic.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/feature.properties b/releng/features/org.eclipse.ecf.provider.generic.feature/feature.properties
new file mode 100644
index 0000000..cd69956
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Generic Provider Feature
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/feature.xml b/releng/features/org.eclipse.ecf.provider.generic.feature/feature.xml
new file mode 100644
index 0000000..f89ef5e
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.provider.generic.feature"
+      label="ECF Generic Provider Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Generic Provider.  The ECF Generic provider can be used for OSGi Remote Services (via the ECF Generic Provider RemoteService Feature), the ECF Datashare API (along with the ECF Generic Provider Datashare Feature), and the SharedObject API.
+   </description>
+
+   <copyright>
+      Copyright (c) 2009 Composent, Inc. and others. All rights
+reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.sharedobject.feature" version="1.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.provider.generic.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.provider.generic.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.cquery b/releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.cquery
new file mode 100644
index 0000000..9625eb5
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.cquery
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
+    <cq:rootRequest name="org.eclipse.ecf.provider.generic.feature" componentType="eclipse.feature"/>
+    
+    <cq:property key="target.arch" value="*"/>
+    <cq:property key="target.os" value="*"/>
+    <cq:property key="target.ws" value="*"/>
+    
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.provider(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.provider\.generic\.feature?" useTargetPlatform="false" useWorkspace="false"/>
+    
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice\.generic?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.generic?" useTargetPlatform="false" useWorkspace="false"/>
+    
+    <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false"/>
+    
+    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT"/>
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.mspec b/releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.mspec
new file mode 100644
index 0000000..1844fd2
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.mspec
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf.provider.generic" 
+    materializer="p2" 
+    url="org.eclipse.ecf.provider.generic.cquery">
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.provider(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.provider\.generic\.feature?" materializer="workspace"/>
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice\.generic?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.generic?" materializer="workspace"/>
+
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/.project b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/.project
new file mode 100644
index 0000000..217a70e
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.provider.generic.remoteservice.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/buckminster.cspex
new file mode 100644
index 0000000..4146924
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/buckminster.cspex
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+	xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+	<dependencies>
+		<!-- the feature -->
+		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.remoteservice.asyncproxy" componentType="osgi.bundle"/>
+		<!-- tests -->
+		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.ecf.tests.remoteservice.generic" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.tests.osgi.services.distribution.generic" componentType="osgi.bundle"/>
+	</dependencies>
+	<generators>
+		<!-- Place your Generators here -->
+	</generators>
+	<artifacts>
+		<!-- Place your Artifacts here -->
+	</artifacts>
+	<actions>
+		<!-- Place your Actions here -->
+	</actions>
+	<groups>
+		<!-- Place your Groups here -->
+	</groups>
+	<alterDependencies>
+		<!-- Place your Dependencies alterations here -->
+	</alterDependencies>
+	<alterArtifacts>
+		<!-- Place your Artifact alterations here -->
+	</alterArtifacts>
+	<alterActions>
+		<!-- Place your Action alterations here -->
+	</alterActions>
+	<alterGroups>
+		<!-- Place your Group alterations here -->
+	</alterGroups>
+</cspecExtension>
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/build.properties b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/build.properties
new file mode 100644
index 0000000..3328d07
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               feature.xml,\
+               notice.html
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/epl-v10.html b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.properties b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.properties
new file mode 100644
index 0000000..004e49b
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Generic Provider RemoteService Feature
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.xml b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.xml
new file mode 100644
index 0000000..a645d57
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.provider.generic.remoteservice.feature"
+      label="ECF Generic Provider RemoteService Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the Remote Services support for the ECF Generic Provider.  This support allows the ECF Generic Provider to serve as an OSGi Remote Service/RSA distribution provider.
+   </description>
+
+   <copyright>
+      Copyright (c) 2009 Composent, Inc. and others. All rights
+reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.provider.generic.feature" version="1.0.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.remoteservice"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.cquery b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.cquery
new file mode 100644
index 0000000..537a79c
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.cquery
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
+    <cq:rootRequest name="org.eclipse.ecf.provider.generic.remoteservice.feature" componentType="eclipse.feature"/>
+    
+    <cq:property key="target.arch" value="*"/>
+    <cq:property key="target.os" value="*"/>
+    <cq:property key="target.ws" value="*"/>
+    
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.provider\.generic\.remoteservice\.feature?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.provider\.remoteservice(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.remoteservice\.feature?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice\.generic?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.generic?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false"/>
+    
+    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT"/>
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.mspec b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.mspec
new file mode 100644
index 0000000..83b5f36
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.mspec
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf.provider.generic.remoteservice" 
+    materializer="p2" 
+    url="org.eclipse.ecf.provider.generic.remoteservice.cquery">
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.asyncproxy(\..+)?" installLocation="${targetPlatformPath}"/>
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.provider\.generic\.remoteservice\.feature?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.provider\.remoteservice(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.feature?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice\.generic?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.generic?" materializer="workspace"/>
+
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/build.properties b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/build.properties
index e3e7255..9a3fdd1 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/build.properties
@@ -8,4 +8,5 @@
                license.html,\
                feature.properties,\
                about.html,\
-               epl-v10.html
+               epl-v10.html,\
+               feature.xml
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties
index 77523cf..3d566b8 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
index a37b6d3..085c053 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
@@ -1,12 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.remoteservice.examples.feature"
-      label="ECF OSGi 4.2 Remote Services Examples"
-      version="1.2.0.qualifier"
+      label="ECF OSGi Remote Services Examples"
+      version="1.3.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides ECF Remote Service Examples.  These are examples of the use of OSGi 4.2 Remote Services.  OSGi 4.2 Remote Services is specified in the OSGi 4.2 compendium.  See http://www.osgi.org/download/r4v42/r4.cmpn.pdf.
+      This feature provides ECF Remote Service Examples.  These are
+examples of the use of OSGi R6 Remote Services and Remote Service Admin.  Remote Services are specified in chapter 100 of the OSGi R6 Enterprise specification while RSA is specified in chapter 122 of the OSGi R6 Enterprise specification.  
+
+For specifications see 
+
+http://www.osgi.org/Specifications/HomePage
+
+For tutorials, documentation, and examples with ECF&apos;s Implementation of OSGi RS/RSA see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -25,9 +34,18 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.rest.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.remoteservice.rest.synd.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.osgi.services.feature" version="2.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.provider.generic.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.provider.generic.remoteservice.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.remoteservice.rosgi.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.discovery.dnssd.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.discovery.jmdns.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.discovery.slp.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.discovery.zookeeper.feature" version="1.0" match="compatible"/>
+   </requires>
 
    <plugin
          id="org.eclipse.ecf.examples.remoteservices.hello"
@@ -51,13 +69,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.examples.remoteservices.hello.ds.host"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.ecf.examples.remoteservices.hello.host"
          download-size="0"
          install-size="0"
@@ -79,13 +90,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.examples.remoteservices.hello.consumer2"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="com.mycorp.examples.timeservice"
          download-size="0"
          install-size="0"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.remoteservice.feature/buckminster.cspex
index 821ea2f..1df65c0 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/buckminster.cspex
@@ -7,11 +7,6 @@
 		<!-- the feature -->
 		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
-		<!-- tests -->
-		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
-		<dependency name="org.eclipse.ecf.tests.remoteservice.generic" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.remoteservice.generic" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.distribution.generic" componentType="osgi.bundle"/>
 	</dependencies>
 	<generators>
 		<!-- Place your Generators here -->
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties
index 5c5e00c..2ff2c6a 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
index 1b45a73..02fa36e 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
@@ -2,11 +2,20 @@
 <feature
       id="org.eclipse.ecf.remoteservice.feature"
       label="ECF Remote Services"
-      version="1.1.0.qualifier"
+      version="2.1.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services.  The ECF Remote Services API allows distribution of services over a network.
+      This feature provides the ECF Remote Services API.  The ECF Remote
+Services API allows distribution of services over a network.  This API is required by ECF&apos;s implementation of OSGi R6 Remote Services/Remote Service Admin.  Remote Services are specified in chapter 100 of the OSGi R6 Enterprise specification while RSA is specified in chapter 122 of the OSGi R6 Enterprise specification.  
+
+For the Remote Service and Remote Service Admin specifications see 
+
+http://www.osgi.org/Specifications/HomePage
+
+For tutorials, documentation, and examples with ECF&apos;s Implementation of OSGi RS/RSA see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -26,17 +35,11 @@
    </license>
 
    <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
    </requires>
 
    <plugin
-         id="org.eclipse.ecf.provider.remoteservice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.ecf.remoteservice"
          download-size="0"
          install-size="0"
@@ -44,31 +47,17 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.sharedobject"
+         id="org.eclipse.ecf.remoteservice.asyncproxy"
          download-size="0"
          install-size="0"
-         version="0.0.0"
+         version="1.0.0.qualifier"
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.provider"
+         id="org.eclipse.ecf.remoteservice.asyncproxy"
          download-size="0"
          install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.console"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.servlet"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
+         version="2.0.0.qualifier"
          unpack="false"/>
 
 </feature>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.cquery b/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.cquery
index 2a8d592..a943746 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.cquery
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.cquery
@@ -6,9 +6,9 @@
     <cq:property key="target.os" value="*"/>
     <cq:property key="target.ws" value="*"/>
     
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.provider\.remoteservice(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.remoteservice(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
     <cq:advisorNode namePattern="^org\.eclipse\.ecf\.remoteservice\.feature?" useTargetPlatform="false" useWorkspace="false"/>
-    
+
     <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice?" useTargetPlatform="false" useWorkspace="false"/>
     <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice\.generic?" useTargetPlatform="false" useWorkspace="false"/>
     <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.generic?" useTargetPlatform="false" useWorkspace="false"/>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.mspec b/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.mspec
index 6d06692..41c172e 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.mspec
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/org.eclipse.ecf.remoteservice.mspec
@@ -4,7 +4,9 @@
     materializer="p2" 
     url="org.eclipse.ecf.remoteservice.cquery">
     
-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.provider\.remoteservice(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.asyncproxy(\..+)?" installLocation="${targetPlatformPath}"/>
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice(\..+)?" materializer="workspace"/>
     <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.feature?" materializer="workspace"/>
     
     <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice?" materializer="workspace"/>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/buckminster.cspex
index f887e7f..94e5060 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/buckminster.cspex
@@ -8,6 +8,7 @@
 		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
 		<dependency name="org.apache.commons.httpclient" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.remoteservice.asyncproxy" componentType="osgi.bundle"/>
 		<!-- tests -->
 		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.ecf.tests.remoteservice.rest" componentType="osgi.bundle"/>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties
index dcc81e3..8b7cc10 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
index 910e14e..a45ce6d 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
@@ -6,7 +6,10 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services REST Support.  This API allows clients to easily be created for REST-based services.
+      This feature provides the REST support for ECF Remote Services. 
+This API allows REST-based OSGi Remote Services to easily be created.  For information about REST-based remote services see:
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -25,9 +28,13 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1" match="compatible"/>
+      <import plugin="org.apache.commons.codec" version="1.6" match="compatible"/>
+      <import plugin="org.apache.commons.logging" version="1.1.1" match="compatible"/>
+      <import plugin="org.apache.httpcomponents.httpclient" version="4.2" match="compatible"/>
+      <import plugin="org.apache.httpcomponents.httpcore" version="4.2" match="compatible"/>
+   </requires>
 
    <plugin
          id="org.eclipse.ecf.remoteservice.rest"
@@ -43,25 +50,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.eclipse.ecf.remoteservice.rest.synd"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="com.sun.syndication"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.jdom"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/.project b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/.project
new file mode 100644
index 0000000..c888643
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.remoteservice.rest.synd.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/build.properties b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/build.properties
new file mode 100644
index 0000000..c503dd0
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.properties
new file mode 100644
index 0000000..c914d27
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Remote Services Rest Synd
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.xml
new file mode 100644
index 0000000..a81fa99
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.remoteservice.rest.synd.feature"
+      label="ECF Remote Services Rest Synd"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the REST Syndication support for ECF REST-based Remote Services.  The
+ECF Remote Services API allows distribution of OSGi Remote Services over a network.
+   </description>
+
+   <copyright>
+      #################################################
+# Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the 
+# terms of the Eclipse Public License v1.0 which accompanies this 
+# distribution, and is available at 
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors: Composent, Inc. - initial API and implementation
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.rest.feature" version="1.0" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.remoteservice.rest.synd"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="com.sun.syndication"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.jdom"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/buckminster.cspex
index e9e84f2..fd864dd 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/buckminster.cspex
@@ -7,6 +7,7 @@
 		<!-- the feature -->
 		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.remoteservice.asyncproxy" componentType="osgi.bundle"/>
 		<!-- tests -->
 		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.ecf.tests.remoteservice.r-osgi" componentType="osgi.bundle"/>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties
index e9efe79..7c9406e 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
index ca262b3..3e06d7b 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
@@ -6,7 +6,9 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services R-OSGi Provider.
+      This feature installs the ECF Remote Services R-OSGi Provider.  The R-OSGi provider is an implementation that provides the distribution for OSGi Remote Services.  For information about both OSGi Remote Services and the R-OSGi provider see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -25,9 +27,10 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.provider.generic.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1" match="compatible"/>
+   </requires>
 
    <plugin
          id="ch.ethz.iks.r_osgi.remote"
@@ -47,7 +50,7 @@
          id="org.objectweb.asm"
          download-size="0"
          install-size="0"
-         version="0.0.0"
+         version="5.0.1.v201404251740"
          unpack="false"/>
 
 </feature>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/buckminster.cspex
index a2c418e..b59b7ae 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/buckminster.cspex
@@ -8,6 +8,7 @@
 		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
 		<dependency name="org.apache.commons.httpclient" componentType="osgi.bundle"/>		
+		<dependency name="org.eclipse.ecf.remoteservice.asyncproxy" componentType="osgi.bundle"/>
 		<!-- tests -->
 		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
 		<dependency name="org.apache.commons.codec" componentType="osgi.bundle"/>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.properties
index e0ff371..fbe4479 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.properties
@@ -16,7 +16,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -45,17 +45,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -64,11 +64,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -85,12 +85,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -114,19 +113,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
@@ -139,4 +138,3 @@
 \n\
 Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
-
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml
index 2b8e557..e2731ba 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml
@@ -6,7 +6,9 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services XML-RPC Support
+      This feature installs the ECF Remote Services XML-RPC Provider.  The XML-RPC provider is an implementation that provides the distribution for OSGi Remote Services.  For information about both OSGi Remote Services and the XML-RPC provider see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright url="%noticeURL">
@@ -17,9 +19,11 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1" match="compatible"/>
+      <import feature="org.eclipse.ecf.filetransfer.httpclient.feature" version="3.8" match="compatible"/>
+      <import plugin="org.jdom"/>
+   </requires>
 
    <plugin
          id="org.apache.xmlrpc"
@@ -42,18 +46,4 @@
          version="0.0.0"
          unpack="false"/>
 
-   <plugin
-         id="org.jdom"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.httpclient"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
 </feature>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/.project b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/.project
new file mode 100644
index 0000000..7bec7a8
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.remoteservice.sdk.examples.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/buckminster.cspex
new file mode 100644
index 0000000..0cd9aec
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/buckminster.cspex
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+	xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+	<dependencies>
+		<!-- the feature -->
+		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+
+		<dependency name="org.eclipse.ecf.remoteservice.sdk.feature" componentType="eclipse.feature"/>
+	</dependencies>
+	<generators>
+		<!-- Place your Generators here -->
+	</generators>
+	<artifacts>
+		<!-- Place your Artifacts here -->
+	</artifacts>
+	<actions>
+		<!-- Place your Actions here -->
+	</actions>
+	<groups>
+		<!-- Place your Groups here -->
+	</groups>
+	<alterDependencies>
+		<!-- Place your Dependencies alterations here -->
+	</alterDependencies>
+	<alterArtifacts>
+		<!-- Place your Artifact alterations here -->
+	</alterArtifacts>
+	<alterActions>
+		<!-- Place your Action alterations here -->
+	</alterActions>
+	<alterGroups>
+		<!-- Place your Group alterations here -->
+	</alterGroups>
+</cspecExtension>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/build.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/build.properties
new file mode 100644
index 0000000..be764c4
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/build.properties
@@ -0,0 +1,13 @@
+bin.includes = feature.xml,\
+               notice.html,\
+               license.html,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
+src.includes = about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               feature.xml,\
+               license.html,\
+               notice.html
+generate.feature@org.eclipse.ecf.remoteservice.sdk.examples.source.feature=org.eclipse.ecf.remoteservice.sdk.examples.feature
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.properties
new file mode 100644
index 0000000..3d48c94
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=OSGi Remote Services Examples 
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.xml
new file mode 100644
index 0000000..ae48eea
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.remoteservice.sdk.examples.feature"
+      label="OSGi Remote Services Examples"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Remote Services SDK Examples.  These are examples of OSGi Remote Services that use the ECF implementations of OSGi Remote Services/Remote Service Admin specifications.  For tutorials based upon these examples see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
+   </description>
+
+   <copyright>
+      #################################################
+# Copyright (c) 2014 Composent, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the 
+# terms of the Eclipse Public License v1.0 which accompanies this 
+# distribution, and is available at 
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors: Composent, Inc. - initial API and implementation
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.eventadmin.examples.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.remoteservice.examples.feature"
+         version="0.0.0"/>
+
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.sdk.feature" version="3.8" match="compatible"/>
+   </requires>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.cquery b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.cquery
new file mode 100644
index 0000000..b1a239d
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.cquery
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
+    <cq:rootRequest name="org.eclipse.ecf.remoteservice.sdk.examples.feature" componentType="eclipse.feature"/>
+    <cq:property key="target.arch" value="*"/>
+    <cq:property key="target.os" value="*"/>
+    <cq:property key="target.ws" value="*"/>
+    
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf(\..+)?" useTargetPlatform="false" useWorkspace="false">
+    </cq:advisorNode>
+    <cq:advisorNode namePattern="^com\.mycorp\.examples(\..+)?" useTargetPlatform="false" useWorkspace="false">
+    </cq:advisorNode>
+    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT">
+    </cq:advisorNode>
+    
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.mspec b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.mspec
new file mode 100644
index 0000000..b684a23
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.mspec
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf.remoteservice.sdk.examples.feature" 
+    materializer="p2" 
+    url="org.eclipse.ecf.remoteservice.sdk.examples.feature.cquery">
+
+    <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^com\.mycorp\.examples(\..+)?" materializer="workspace"/>
+
+    <!-- commented out for sdk when comparing to platform
+    <md:mspecNode namePattern=".*" installLocation="${target.location}"/>
+    -->
+    
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/about.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/about.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/epl-v10.html
new file mode 100644
index 0000000..9e4b628
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/epl-v10.html
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<p align=center><b>Eclipse Public License - v 1.0</b></p>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/feature.properties
new file mode 100644
index 0000000..9e3bcd4
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2010 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=OSGi Remote Services SDK
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/plugin.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/plugin.properties
new file mode 100644
index 0000000..1b1ac0a
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/plugin.properties
@@ -0,0 +1,6 @@
+# "featureName" property - name of the feature
+featureName=ECF Remote Service Examples SDK Source
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse.org - ECF
+
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/about.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/about.html
new file mode 100644
index 0000000..a79027a
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/about.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+	<h3>About This Content</h3>
+
+		<p>June 25, 2008</p>	
+		<h3>License</h3>
+
+		<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
+		Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
+		Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+		at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+		<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+		being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+		apply to your use of any object code in the Content.  Check the Redistributor's license 
+		that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+		indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+		and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+
+<h4>Apache HttpClient v3.0.1</h4>
+
+<p>This plugin is based on software developed by the Apache Httpclient project at <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>Apache Commons Codec v1.3</h4>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/codec/">http://jakarta.apache.org/commons/codec/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>Apache Commons Logging v1.1</h4>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>IRCLib API v1.10</h4>
+
+<p>This plugin is based on software developed by <a href="http://schwering.org">Christoph Schwering</a> at 
+<a href="http://moepii.sourceforge.net/">http://moepii.sourceforge.net/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>JmDNS API v2.0</h4>
+
+<p>This plugin is based on software developed by JmDNS project team at 
+<a href="http://jmdns.sourceforge.net">http://jmdns.sourceforge.net</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>Jive Software Smack API v2.1.1</h4>
+
+<p>This plugin is based on software developed by <a href="http://www.jivesoftware.org">Jive Software</a> project team at 
+<a href="http://www.igniterealtime.org/">http://www.igniterealtime.org/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+<p>
+More specifically:</p>
+
+<p></p>
+
+<pre>
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</pre>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/build.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/build.properties
new file mode 100644
index 0000000..d93a255
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/build.properties
@@ -0,0 +1,6 @@
+bin.includes = plugin.xml,\
+               plugin.properties,\
+               about.html,\
+               src/,\
+               META-INF/
+sourcePlugin = true
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/plugin.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/plugin.properties
new file mode 100644
index 0000000..46e3349
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/plugin.properties
@@ -0,0 +1,2 @@
+pluginName=ECF Remote Service SDK Source
+providerName=Eclipse.org - ECF
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
index 0156a2e..658e177 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
@@ -10,4 +10,4 @@
                feature.xml,\
                about.html,\
                epl-v10.html
-generate.feature@org.eclipse.ecf.remoteservice.sdk.feature.source=org.eclipse.ecf.remoteservice.sdk.feature
+generate.feature@org.eclipse.ecf.remoteservice.sdk.source.feature=org.eclipse.ecf.remoteservice.sdk.feature
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties
index 06e7c74..e8071e8 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Remote Services SOA Components
+featureName=ECF OSGi Remote Services SDK
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
index 739f1dd..794a6b9 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
@@ -1,12 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.remoteservice.sdk.feature"
-      label="ECF Remote Services Target Components"
-      version="3.8.0.qualifier"
+      label="ECF OSGi Remote Services SDK"
+      version="3.8.1.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services Target Components.  This is the set of bundles (API, examples, and providers), that allow OSGi frameworks to expose and access remote services.
+      This feature provides an all-in-one distribution of ECFs implementation
+of the OSGi Remote Service (chapter 100) and
+Remote Service Admin (chapter 122) standards.  Included are multiple
+discovery and 
+remote services provider implementations, allowing the remote
+service developer to modularly select, use, or
+create for themselves implementations needed to discover and use
+OSGi Remote Services and Remote Service Admin.  For example, discovery based
+upon
+discovery protocols Zeroconf, SLP, DNSSD, and Zookeeper are present
+in this distribution.  Also present are 
+multiple distribution providers such as r-OSGi, ECF generic, XML-RPC, SOAP,
+and multiple REST-based transports.  The SDK also supports the
+creation
+of custom discovery and/or distribution providers via open, community-tested and maintained 
+APIs.
+Also included in this SDK is a distributed implementation of
+the OSGi Event Admin service.  Note that the contents of this
+feature do not require Eclipse or Equinox specifically, but rather
+may be run
+on other frameworks (e.g. Felix) and with other tools.  For tutorials, examples, and documentation about OSGi Remote Services see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -26,18 +48,10 @@
    </license>
 
    <includes
-         id="org.eclipse.ecf.eventadmin.examples.feature"
-         version="0.0.0"/>
-
-   <includes
          id="org.eclipse.ecf.eventadmin.feature"
          version="0.0.0"/>
 
    <includes
-         id="org.eclipse.ecf.remoteservice.examples.feature"
-         version="0.0.0"/>
-
-   <includes
          id="org.eclipse.ecf.remoteservice.feature"
          version="0.0.0"/>
 
@@ -46,6 +60,10 @@
          version="0.0.0"/>
 
    <includes
+         id="org.eclipse.ecf.remoteservice.rest.synd.feature"
+         version="0.0.0"/>
+
+   <includes
          id="org.eclipse.ecf.remoteservice.rosgi.feature"
          version="0.0.0"/>
 
@@ -54,6 +72,10 @@
          version="0.0.0"/>
 
    <includes
+         id="org.eclipse.ecf.remoteservice.servlet.feature"
+         version="0.0.0"/>
+
+   <includes
          id="org.eclipse.ecf.server.generic.feature"
          version="0.0.0"/>
 
@@ -89,4 +111,33 @@
          id="org.eclipse.ecf.xmpp.feature"
          version="0.0.0"/>
 
+   <includes
+         id="org.eclipse.ecf.console.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.provider.generic.datashare.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.provider.generic.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.provider.generic.remoteservice.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.sharedobject.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.presence.feature"
+         version="0.0.0"/>
+
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
 </feature>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.cquery b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.cquery
new file mode 100644
index 0000000..81f11b0
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.cquery
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
+    <cq:rootRequest name="org.eclipse.ecf.remoteservice.sdk.feature" componentType="eclipse.feature"/>
+    <cq:property key="target.arch" value="*"/>
+    <cq:property key="target.os" value="*"/>
+    <cq:property key="target.ws" value="*"/>
+    <cq:advisorNode namePattern="^ch\.ethz\.iks(\..+)?" useTargetPlatform="false" useWorkspace="false">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">This name pattern matches ch.ethz.iks.anything.
+
+       The regex (\..+)? matches zero or more occurrences 
+       of . followed by one of more of any character.
+
+       Skip Component is not checked.
+    </cq:documentation>
+
+    </cq:advisorNode>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf(\..+)?" useTargetPlatform="false" useWorkspace="false">
+        
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">This name pattern matchesorg.eclipse.ecf.anything.
+
+       The regex (\..+)? matches zero or more occurrences 
+       of . followed by one of more of any character.
+
+       Skip Component is not checked.
+    </cq:documentation>
+
+    </cq:advisorNode>
+    <cq:advisorNode namePattern="^org\.eclipse\.team\.ecf(\..+)?" useTargetPlatform="false" useWorkspace="false">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">This name pattern matches org.eclipse.team.ecf.anything.
+
+       The regex (\..+)? matches zero or more occurrences 
+       of . followed by one of more of any character.
+
+       Skip Component is not checked.
+    </cq:documentation>
+    
+    </cq:advisorNode>
+    <cq:advisorNode namePattern="^org\.jivesoftware\.smack$" useTargetPlatform="false" useWorkspace="false">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">The name pattern matches org.jivesoftware.smack exactly.
+
+       Skip Component is not checked.</cq:documentation>
+    </cq:advisorNode>
+    
+    <cq:advisorNode namePattern="^com\.mycorp\.examples(\..+)?" useTargetPlatform="false" useWorkspace="false">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">The name pattern matches com.mycorp.examplesanything.
+
+       The regex (\..+)? matches zero or more occurrences 
+       of . followed by one of more of any character.
+
+       Skip Component is not checked.</cq:documentation>
+    </cq:advisorNode>
+    
+    <cq:advisorNode namePattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">The name pattern matches org.eclipse.equinox.p2.user.ui exactly.
+
+       Skip Component is checked so that this component which comes from 
+       the platform is not resolved.
+    </cq:documentation>
+    
+    </cq:advisorNode>
+    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">Everything not picked up by the previous name patterns is
+       rejected.
+    </cq:documentation>
+    
+    </cq:advisorNode>
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.mspec b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.mspec
new file mode 100644
index 0000000..547fd1d
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.mspec
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf.remoteservice.sdk.feature" 
+    materializer="p2" 
+    url="org.eclipse.ecf.remoteservice.sdk.feature.cquery">
+
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.asyncproxy(\..+)?" installLocation="${targetPlatformPath}"/>
+    
+    <md:mspecNode namePattern="^ch\.ethz\.iks(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.team\.ecf(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.jivesoftware\.smack$" materializer="workspace"/>
+    <md:mspecNode namePattern="^com\.mycorp\.examples(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" materializer="workspace"/>
+
+    <!-- commented out for sdk when comparing to platform
+    <md:mspecNode namePattern=".*" installLocation="${target.location}"/>
+    -->
+    
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
index ff6e8cb..9e3bcd4 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Remote Services Target Components Source
+featureName=OSGi Remote Services SDK
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml
deleted file mode 100644
index 80c368d..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.sdk.feature"
-      label="ECF Remote Services Target Components"
-      version="3.5.1.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services Target Components
-   </description>
-
-   <copyright>
-      #################################################
-# Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
-# This program and the accompanying materials are made available under the 
-# terms of the Eclipse Public License v1.0 which accompanies this 
-# distribution, and is available at 
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.eventadmin.examples.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.eventadmin.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.examples.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.rest.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.rosgi.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.soap.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.server.generic.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.osgi.services.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.discovery.jmdns.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.discovery.slp.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.discovery.dnssd.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.discovery.zookeeper.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.datashare.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.discovery.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.xmpp.feature"
-         version="0.0.0"/>
-
-</feature>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html
index c184ca3..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,10 +58,10 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/notice.html
deleted file mode 100644
index 5ad00ba..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/notice.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/plugin.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/plugin.properties
new file mode 100644
index 0000000..6a286b5
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/plugin.properties
@@ -0,0 +1,6 @@
+# "featureName" property - name of the feature
+featureName=ECF Remote Service SDK Source
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse.org - ECF
+
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/about.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/about.html
new file mode 100644
index 0000000..a79027a
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/about.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+	<h3>About This Content</h3>
+
+		<p>June 25, 2008</p>	
+		<h3>License</h3>
+
+		<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
+		Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
+		Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+		at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+		<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+		being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+		apply to your use of any object code in the Content.  Check the Redistributor's license 
+		that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+		indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+		and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+
+<h4>Apache HttpClient v3.0.1</h4>
+
+<p>This plugin is based on software developed by the Apache Httpclient project at <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>Apache Commons Codec v1.3</h4>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/codec/">http://jakarta.apache.org/commons/codec/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>Apache Commons Logging v1.1</h4>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>IRCLib API v1.10</h4>
+
+<p>This plugin is based on software developed by <a href="http://schwering.org">Christoph Schwering</a> at 
+<a href="http://moepii.sourceforge.net/">http://moepii.sourceforge.net/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>JmDNS API v2.0</h4>
+
+<p>This plugin is based on software developed by JmDNS project team at 
+<a href="http://jmdns.sourceforge.net">http://jmdns.sourceforge.net</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>Jive Software Smack API v2.1.1</h4>
+
+<p>This plugin is based on software developed by <a href="http://www.jivesoftware.org">Jive Software</a> project team at 
+<a href="http://www.igniterealtime.org/">http://www.igniterealtime.org/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+<p>
+More specifically:</p>
+
+<p></p>
+
+<pre>
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</pre>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/build.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/build.properties
new file mode 100644
index 0000000..d93a255
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/build.properties
@@ -0,0 +1,6 @@
+bin.includes = plugin.xml,\
+               plugin.properties,\
+               about.html,\
+               src/,\
+               META-INF/
+sourcePlugin = true
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/plugin.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/plugin.properties
new file mode 100644
index 0000000..46e3349
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/plugin.properties
@@ -0,0 +1,2 @@
+pluginName=ECF Remote Service SDK Source
+providerName=Eclipse.org - ECF
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/.project b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/.project
new file mode 100644
index 0000000..0699b7c
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.remoteservice.servlet.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.remoteservice.servlet.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/build.properties b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/build.properties
new file mode 100644
index 0000000..ad3dc89
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               notice.html,\
+               license.html,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
+src.includes = about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               feature.xml,\
+               license.html,\
+               notice.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.properties
new file mode 100644
index 0000000..a26ec82
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF Remote Services Servlet API
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.xml
new file mode 100644
index 0000000..540dc18
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.remoteservice.servlet.feature"
+      label="ECF Remote Services Servlet API Feature"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the Servlet Support for ECF Remote Services.  The Servlet support allows the easy creation of Servlet-based Remote Services that are in full compliance with the OSGi Remote Service/Remote Service Admin specification.  Please see here
+
+https://wiki.eclipse.org/Tutorial:_Creating_a_RESTful_Remote_Service_Provider
+
+for a tutorial showing how to create a RESTful Remote Service provider using this Servlet Support.
+
+For the Remote Service and Remote Service Admin specifications see 
+
+http://www.osgi.org/Specifications/HomePage
+
+For tutorials, documentation, and examples with ECF&apos;s Implementation of OSGi RS/RSA see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
+   </description>
+
+   <copyright>
+      #################################################
+# Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
+# This program and the accompanying materials are made available under the 
+# terms of the Eclipse Public License v1.0 which accompanies this 
+# distribution, and is available at 
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors: Composent, Inc. - initial API and implementation
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1" match="compatible"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.remoteservice.servlet"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="javax.servlet"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.remoteservice.servlet.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.servlet.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.properties
index 3cf6924..863f5a7 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties
index 35d5f6d..f189039 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
index b2760e0..db7df58 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
@@ -6,7 +6,9 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services SOAP Support.
+      This feature installs the SOAP support for ECF Remote Services.  This SOAP support is an implementation that provides the distribution for OSGi Remote Services.  For information about both OSGi Remote Services and the SOAP support see
+
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -25,9 +27,9 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1" match="compatible"/>
+   </requires>
 
    <plugin
          id="org.eclipse.ecf.remoteservice.soap"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.sdk/build.properties b/releng/features/org.eclipse.ecf.sdk/build.properties
index 85a7f5d..4cc9900 100644
--- a/releng/features/org.eclipse.ecf.sdk/build.properties
+++ b/releng/features/org.eclipse.ecf.sdk/build.properties
@@ -1,33 +1,32 @@
 bin.includes = feature.xml,\
                about.html,\
-               asl-v20.txt
+               asl-v20.txt,\
+               license.html
 src.includes = about.html,\
                asl-v20.txt,\
-               feature.xml
+               feature.xml,\
+               license.html
                
 generatedVersionLength=20
 
 generate.feature@org.eclipse.ecf.core.source=org.eclipse.ecf.core
-generate.feature@org.eclipse.ecf.remoteservice.sdk.feature.source=org.eclipse.ecf.remoteservice.sdk.feature
-generate.feature@org.eclipse.ecf.filetransfer.httpclient.feature.source=org.eclipse.ecf.filetransfer.httpclient.feature
-generate.feature@org.eclipse.ecf.filetransfer.httpclient4.feature.source=org.eclipse.ecf.filetransfer.httpclient4.feature
-generate.feature@org.eclipse.ecf.filetransfer.feature.source=org.eclipse.ecf.filetransfer.feature
+generate.feature@org.eclipse.ecf.remoteservice.sdk.source.feature=org.eclipse.ecf.remoteservice.sdk.feature
+generate.feature@org.eclipse.ecf.remoteservice.sdk.examples.source.feature=org.eclipse.ecf.remoteservice.sdk.examples.feature
 
-category.id.core=Eclipse Communication Framework (ECF)
-category.desciption.core=Category for the ECF Target Components
+category.id.core=ECF SDK for Eclipse
+category.description.core=All-in-one distribution of ECF for Eclipse.  Included are Eclipse-specific APIs and Applications (e.g. docshare, collab, server apps), along with the entire OSGi Remote Service SDK.
 category.members.core=org.eclipse.ecf.core,org.eclipse.ecf.core.source
 
-category.id.rmt=Eclipse Communication Framework Remote Services (ECF)
-category.desciption.rmt=Category for the ECF Remote Services Target Components
-category.members.rmt=org.eclipse.ecf.remoteservice.sdk.feature,org.eclipse.ecf.remoteservice.sdk.feature.source
+category.id.rmt=ECF OSGi Remote Services SDK
+category.description.rmt=The OSGi Remote Services/Remote Service Admin SDK.  Included are ECF's implementation of OSGi Remote Services and Remote Service Admin specifications, as well as multiple discovery providers (e.g. zookeeper, dnssd, zeroconf, jslp), distribution providers (r-osgi and generic) and remote service/remote service admin examples.
+category.members.rmt=org.eclipse.ecf.remoteservice.sdk.feature,org.eclipse.ecf.remoteservice.sdk.source.feature,org.eclipse.ecf.remoteservice.sdk.examples.feature,org.eclipse.ecf.remoteservice.sdk.examples.source.feature
 
-category.id.ft=Eclipse Communication Framework File Transfer Features (ECF)
-category.desciption.ft=Category for the ECF File Transfer Features
-category.members.ft=org.eclipse.ecf.filetransfer.httpclient.feature,org.eclipse.ecf.filetransfer.feature,org.eclipse.ecf.filetransfer.httpclient4.feature,org.eclipse.ecf.filetransfer.httpclient.feature.source,org.eclipse.ecf.filetransfer.feature.source,org.eclipse.ecf.filetransfer.httpclient4.feature.source
+category.id.ft=ECF Supplemental File Transfer Providers.  Not needed for Eclipse Luna or Kepler.
+category.description.ft=ECF Supplemental File Transfer Providers.  Included are ECF's implementation of the HttpClient3-based provider, the HttpClient4-based provider, and the JRE/URLConnection-based file transfer provider.
+category.members.ft=org.eclipse.ecf.core.feature,org.eclipse.ecf.core.source.feature,org.eclipse.ecf.core.ssl.feature,org.eclipse.ecf.core.ssl.source.feature,org.eclipse.ecf.filetransfer.feature,org.eclipse.ecf.filetransfer.source.feature,org.eclipse.ecf.filetransfer.ssl.feature,org.eclipse.ecf.filetransfer.ssl.source.feature,org.eclipse.ecf.filetransfer.httpclient.feature,org.eclipse.ecf.filetransfer.httpclient.source.feature,org.eclipse.ecf.filetransfer.httpclient.ssl.feature,org.eclipse.ecf.filetransfer.httpclient.ssl.source.feature,org.eclipse.ecf.filetransfer.httpclient4.feature,org.eclipse.ecf.filetransfer.httpclient4.source.feature,org.eclipse.ecf.filetransfer.httpclient4.ssl.feature,org.eclipse.ecf.filetransfer.httpclient4.ssl.source.feature
 
-category.id.dft=Eclipse Communication Framework Uncategorized Features (ECF)
-category.desciption.dft=Category for the ECF Uncategorized Features
-category.default=dft
-
+category.id.fp=ECF Patch for Eclipse Kepler (4.3).  Not needed for Eclipse Luna (4.4).
+category.description.fp=ECF Core and File Transfer Feature Patch for Eclipse Kepler (4.3).   Included are ECF core and httpclient4-based filetransfer bundles.  This patch allows Eclipse Kepler users to replace an older version of ECF core and filetransfer (these parts of ECF come as part of Eclipse in Kepler) with the most recent ECF versions.  Please NOTE:  This patch is only for Eclipse Kepler (4.3) and so will not install into Eclipse Luna (4.4).
+category.members.fp=org.eclipse.ecf.core.featurepatch
 
                
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.sdk/feature.xml b/releng/features/org.eclipse.ecf.sdk/feature.xml
index ae88205..29e12e1 100644
--- a/releng/features/org.eclipse.ecf.sdk/feature.xml
+++ b/releng/features/org.eclipse.ecf.sdk/feature.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.sdk"
-      label="ECF Target Components Feature"
-      version="3.8.0.qualifier"
+      label="ECF SDK Feature"
+      version="3.8.1.qualifier"
       provider-name="Eclipse.org">
 
    <description url="http://www.eclipse.org/ecf">
-      Eclipse Communications Framework Target Components
+      Eclipse Communication Framework SDK
    </description>
 
    <copyright>
@@ -308,15 +308,35 @@
    </license>
 
    <includes
-         id="org.eclipse.ecf.core"
-         version="0.0.0"/>
-
-   <includes
          id="org.eclipse.ecf.remoteservice.sdk.feature"
          version="0.0.0"/>
 
    <includes
-         id="org.eclipse.ecf.filetransfer.httpclient.feature"
+         id="org.eclipse.ecf.core"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.remoteservice.sdk.examples.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.core.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.core.ssl.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.filetransfer.httpclient4.ssl.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.filetransfer.ssl.feature"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.filetransfer.httpclient4.feature"
          version="0.0.0"/>
 
    <includes
@@ -324,7 +344,7 @@
          version="0.0.0"/>
 
    <includes
-         id="org.eclipse.ecf.filetransfer.httpclient4.feature"
+         id="org.eclipse.ecf.core.featurepatch"
          version="0.0.0"/>
 
 </feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.sdk/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.sdk/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.sdk/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec b/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec
index 46e0f04..31880fd 100644
--- a/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec
+++ b/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec
@@ -4,6 +4,8 @@
     materializer="p2" 
     url="org.eclipse.ecf.sdk.cquery">
 
+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.asyncproxy(\..+)?" installLocation="${targetPlatformPath}"/>
+    
     <md:mspecNode namePattern="^ch\.ethz\.iks(\..+)?" materializer="workspace"/>
     <md:mspecNode namePattern="^org\.eclipse\.team\.ecf(\..+)?" materializer="workspace"/>
     <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/.project b/releng/features/org.eclipse.ecf.sharedobject.feature/.project
new file mode 100644
index 0000000..3923f11
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.sharedobject.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/releng/features/org.eclipse.ecf.sharedobject.feature/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
copy to releng/features/org.eclipse.ecf.sharedobject.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.sharedobject.feature/buckminster.cspex
new file mode 100644
index 0000000..d44f5ec
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/buckminster.cspex
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+	xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+	<dependencies>
+		<!-- the feature -->
+		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
+		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+	</dependencies>
+	<generators>
+		<!-- Place your Generators here -->
+	</generators>
+	<artifacts>
+		<!-- Place your Artifacts here -->
+	</artifacts>
+	<actions>
+		<!-- Place your Actions here -->
+	</actions>
+	<groups>
+		<!-- Place your Groups here -->
+	</groups>
+	<alterDependencies>
+		<!-- Place your Dependencies alterations here -->
+	</alterDependencies>
+	<alterArtifacts>
+		<!-- Place your Artifact alterations here -->
+	</alterArtifacts>
+	<alterActions>
+		<!-- Place your Action alterations here -->
+	</alterActions>
+	<alterGroups>
+		<!-- Place your Group alterations here -->
+	</alterGroups>
+</cspecExtension>
+
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/build.properties b/releng/features/org.eclipse.ecf.sharedobject.feature/build.properties
new file mode 100644
index 0000000..c503dd0
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html,\
+               notice.html
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               about.html
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/epl-v10.html b/releng/features/org.eclipse.ecf.sharedobject.feature/epl-v10.html
new file mode 100644
index 0000000..fd39122
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>&quot;Contribution&quot; means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>&quot;Contributor&quot; means any person or entity that distributes
+the Program.</p>
+
+<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>&quot;Program&quot; means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and
+indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
+against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/feature.properties b/releng/features/org.eclipse.ecf.sharedobject.feature/feature.properties
new file mode 100644
index 0000000..04b9db1
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/feature.properties
@@ -0,0 +1,141 @@
+############################################################################
+# Copyright (c) 2014 Composent Inc., IBM Corp. and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+############################################################################
+featureName=ECF SharedObject API Feature
+providerName=Eclipse.org - ECF
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/feature.xml b/releng/features/org.eclipse.ecf.sharedobject.feature/feature.xml
new file mode 100644
index 0000000..0124108
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/feature.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.sharedobject.feature"
+      label="ECF SharedObject Feature"
+      version="1.0.0.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Shared Object API.   The ECF Shared Object API may be used to implement modular implementations for other APIs...e.g. Datashare, Remote Services, etc.
+   </description>
+
+   <copyright>
+      Copyright (c) 2009 Composent, Inc. and others. All rights
+reserved.
+This program and the accompanying materials are made available
+under the terms of the Eclipse Public License v1.0 which accompanies
+this distribution, and is available at 
+http://www.eclipse.org/legal/epl-v10.html
+ 
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.identity"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.sharedobject"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/releng/features/org.eclipse.ecf.sharedobject.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to releng/features/org.eclipse.ecf.sharedobject.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.cquery b/releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.cquery
new file mode 100644
index 0000000..b919afc
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.cquery
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
+    <cq:rootRequest name="org.eclipse.ecf.sharedobject.feature" componentType="eclipse.feature"/>
+    <cq:property key="target.arch" value="*"/>
+    <cq:property key="target.os" value="*"/>
+    <cq:property key="target.ws" value="*"/>
+
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf(\..+)?" useTargetPlatform="false" useWorkspace="false">
+        
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">This name pattern matchesorg.eclipse.ecf.anything.
+
+       The regex (\..+)? matches zero or more occurrences 
+       of . followed by one of more of any character.
+
+       Skip Component is not checked.
+    </cq:documentation>
+
+    </cq:advisorNode>
+    <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">The name pattern matches org.eclipse.equinox.p2.user.ui exactly.
+
+       Skip Component is checked so that this component which comes from 
+       the platform is not resolved.
+    </cq:documentation>
+    
+    </cq:advisorNode>
+    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT">
+    
+    <cq:documentation xmlns="http://www.w3.org/1999/xhtml">Everything not picked up by the previous name patterns is
+       rejected.
+    </cq:documentation>
+    
+    </cq:advisorNode>
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.mspec b/releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.mspec
new file mode 100644
index 0000000..e96e109
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.mspec
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf.sharedobject" 
+    materializer="p2" 
+    url="org.eclipse.ecf.sharedobject.cquery">
+
+    <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+
+    <!-- commented out for sdk when comparing to platform
+    <md:mspecNode namePattern=".*" installLocation="${target.location}"/>
+    -->
+    
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.tests.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.tests.feature/buckminster.cspex
index 4466c35..3df48a2 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.tests.feature/buckminster.cspex
@@ -6,9 +6,11 @@
 	<dependencies>
 		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
-		<dependency name="org.eclipse.ecf.core" componentType="eclipse.feature"/>
-		<!-- o.e.ecf.core does not include filetransfer, hence include featurepatch -->
-		<dependency name="org.eclipse.ecf.filetransfer" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.sync" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.provider.datashare.nio" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.provider.msn" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.osgi.services.remoteserviceadmin" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.remoteservice.asyncproxy" componentType="osgi.bundle"/>
 	</dependencies>
 	<generators>
 		<!-- Place your Generators here -->
diff --git a/releng/features/org.eclipse.ecf.tests.feature/feature.properties b/releng/features/org.eclipse.ecf.tests.feature/feature.properties
index 7876961..d72f946 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.tests.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.tests.feature/feature.xml b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
index 489ebcb..76f9a63 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
@@ -307,38 +307,6 @@
 limitations under the License.
    </license>
 
-   <requires>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.ecf.discovery"/>
-      <import plugin="org.eclipse.ecf.presence"/>
-      <import plugin="org.eclipse.ecf.sharedobject"/>
-      <import plugin="org.eclipse.core.runtime"/>
-      <import plugin="org.eclipse.ecf.protocol.msn" version="0.3.1" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.provider.datashare.nio"/>
-      <import plugin="org.eclipse.ecf.provider.jmdns"/>
-      <import plugin="org.eclipse.ecf.provider.jslp"/>
-      <import plugin="ch.ethz.iks.slp" version="1.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.provider.xmpp"/>
-      <import plugin="org.eclipse.ecf.datashare" version="2.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.equinox.app" version="1.2.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.provider"/>
-      <import plugin="org.eclipse.ecf.server.generic"/>
-      <import plugin="org.junit" version="3.8.2" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.storage" version="1.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.equinox.security"/>
-      <import plugin="org.eclipse.ecf.identity"/>
-      <import plugin="org.eclipse.ecf.sync"/>
-      <import plugin="org.eclipse.jface.text"/>
-      <import plugin="org.eclipse.ecf.osgi.services.distribution" version="1.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.remoteservice" version="3.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf" version="3.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.equinox.common" version="3.5.1" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.equinox.concurrent" version="1.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.provider.discovery"/>
-      <import plugin="org.eclipse.ecf.provider.r_osgi"/>
-      <import plugin="ch.ethz.iks.r_osgi.remote"/>
-   </requires>
-
    <plugin
          id="org.eclipse.ecf.tests"
          download-size="0"
diff --git a/releng/features/org.eclipse.ecf.tests.feature/license.html b/releng/features/org.eclipse.ecf.tests.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/license.html
+++ b/releng/features/org.eclipse.ecf.tests.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.tests.feature/notice.html b/releng/features/org.eclipse.ecf.tests.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.tests.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.properties b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.properties
index 8a2ebd6..a7d1b0e 100644
--- a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/license.html b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/license.html
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/notice.html b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.xmpp.feature/buckminster.cspex
index 711017b..7b3e5f9 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/buckminster.cspex
@@ -7,6 +7,7 @@
 		<!-- the feature -->
 		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.remoteservice.asyncproxy" componentType="osgi.bundle"/>
 		<!-- tests -->
 		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
 		<dependency name="org.eclipse.ecf.tests.provider.xmpp" componentType="osgi.bundle"/>
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties b/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties
index 3f2be14..922dca2 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
index 922da0d..1bc6757 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
@@ -6,7 +6,9 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides support for the XMPP protocol.
+      This feature installs the XMPP/XMPPS/Google Talk provider.  The XMPP provider implements the Presence API for presence and instant messaging, the Datashare API for channel-based asynchronous messaging, the Remote Service API for providing OSGi Remote Services via XMPP/XMPPS/Google Talk services, and the Shared Object API.   For tutorials,
+examples, and documentation about OSGi Remote Services see
+https://wiki.eclipse.org/ECF#OSGi_Remote_Services
    </description>
 
    <copyright>
@@ -24,6 +26,12 @@
       %license
    </license>
 
+   <requires>
+      <import feature="org.eclipse.ecf.presence.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.datashare.feature" version="1.0" match="compatible"/>
+      <import feature="org.eclipse.ecf.remoteservice.feature" version="2.1" match="compatible"/>
+   </requires>
+
    <plugin
          id="org.eclipse.ecf.provider.xmpp"
          download-size="0"
@@ -55,13 +63,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.presence"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.xbill.dns"
          download-size="0"
          install-size="0"
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/license.html b/releng/features/org.eclipse.ecf.xmpp.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/license.html
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/notice.html b/releng/features/org.eclipse.ecf.xmpp.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/releng/features/org.eclipse.ecf.xmpp.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/org.eclipse.ecf.releng.bm/ecf.rmap b/releng/org.eclipse.ecf.releng.bm/ecf.rmap
index 73efdd1..6ac0fac 100644
--- a/releng/org.eclipse.ecf.releng.bm/ecf.rmap
+++ b/releng/org.eclipse.ecf.releng.bm/ecf.rmap
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <rm:rmap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0" xmlns:pde="http://www.eclipse.org/buckminster/PDEMapProvider-1.0" xmlns:rm="http://www.eclipse.org/buckminster/RMap-1.0">
+  <rm:locator pattern="^org\.eclipse\.ecf\.remoteservice\.asyncproxy(\..+)?" searchPathRef="org.eclipse.ecf.remoteservice.asyncproxy"/>
   <rm:locator pattern="^ch\.ethz\.iks(\..+)?" searchPathRef="org.eclipse.ecf"/>
   <rm:locator pattern="^org\.eclipse\.ecf(\..+)?" searchPathRef="org.eclipse.ecf"/>
   <rm:locator pattern="^org\.eclipse\.team\.ecf(\..+)?" searchPathRef="org.eclipse.ecf"/>
@@ -71,6 +72,11 @@
    </rm:searchPath>
     
    <rm:searchPath name="org.eclipse.ecf">
+    <rm:provider componentTypes="osgi.bundle" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://download.eclipse.org/rt/ecf/asyncproxy/site.p2/?importType=binary"/>
+    </rm:provider>
     <rm:provider componentTypes="osgi.bundle,eclipse.feature" readerType="local">
       <rm:uri format="file:{0}/{1}/">
         <bc:propertyRef key="projectsPath"/>
@@ -85,6 +91,27 @@
       </rm:uri>
     </rm:provider>
   </rm:searchPath>
+  
+  <rm:searchPath name="org.eclipse.ecf.remoteservice.asyncproxy">
+    <rm:provider componentTypes="osgi.bundle" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://download.eclipse.org/rt/ecf/asyncproxy/site.p2/?importType=binary"/>
+    </rm:provider>
+    <!--
+    <rm:provider componentTypes="osgi.bundle" readerType="local">
+      <rm:uri format="file:{0}/org.eclipse.ecf.remoteservice.asyncproxy.j8/">
+        <bc:propertyRef key="projectsPath"/>
+      </rm:uri>
+    </rm:provider>
+    <rm:provider componentTypes="osgi.bundle" readerType="local">
+      <rm:uri format="file:{0}/org.eclipse.ecf.remoteservice.asyncproxy/">
+        <bc:propertyRef key="projectsPath"/>
+      </rm:uri>
+    </rm:provider>
+    -->
+  </rm:searchPath>
+  
   <rm:searchPath name="org.pluginbuilder">
     <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">
       <rm:property key="buckminster.source" value="false"/>
@@ -132,6 +159,11 @@
       <rm:property key="buckminster.mutable" value="false"/>
       <rm:uri format="http://ftp.osuosl.org/pub/eclipse/tools/orbit/downloads/drops/R20130517111416/repository"/>
     </rm:provider>
+    <rm:provider componentTypes="osgi.bundle" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository"/>
+    </rm:provider>
     <!-- As a last resort, go to platform repo (e.g. right now Orbit does not host org.sat4j.core [2.3.5,3.0.0) which only exists in 4.3 -->
     <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">
       <rm:property key="buckminster.source" value="false"/>
diff --git a/releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/karaf-features-rssdk.xml b/releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/karaf-features-rssdk.xml
new file mode 100644
index 0000000..49386b0
--- /dev/null
+++ b/releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/karaf-features-rssdk.xml
@@ -0,0 +1,297 @@
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="ECF RemoteServices SDK v3.8.0">
+<feature name="ecf.rs.sdk" version="3.8.0" description="ECF 3.8.0 RemoteServices SDK.  See https://wiki.eclipse.org/ECF#OSGi_Remote_Services">
+
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/spf/org.eclipse.ecf.saxparserfactory_1.0.0.v20130605-1748.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.equinox.supplement_1.4.100.v20120522-1813.jar</bundle>
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.osgi.services_3.3.100.v20120522-1822.jar</bundle>
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.equinox.log_1.2.300.v20120912-130548.jar</bundle>
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.equinox.common_3.6.100.v20120522-1841.jar</bundle>
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.equinox.registry_3.5.200.v20120522-1841.jar</bundle>
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.equinox.event_1.2.200.v20120522-2049.jar</bundle>
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.core.jobs_3.5.300.v20120912-155018.jar</bundle>
+	<bundle>http://download.eclipse.org/equinox/drops/R-3.8.2-201302041200/org.eclipse.equinox.concurrent_1.0.300.v20120912-130548.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.sun.syndication_0.9.0.v200803061811.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/javax.servlet_3.0.0.v201112011016.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.commons.codec_1.6.0.v201305230611.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.commons.logging_1.1.1.v201101211721.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.httpcomponents.httpclient_4.2.6.v201311072007.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.httpcomponents.httpcore_4.2.5.v201311072007.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.log4j_1.2.15.v201012070815.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.jdom_1.1.1.v201101151400.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.jivesoftware.smack_3.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.json_1.0.0.v201011060100.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.objectweb.asm_3.3.1.v201105211655.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.identity_3.2.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf_3.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.filetransfer_5.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.sharedobject_2.4.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.datashare_3.0.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery_5.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence_2.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice_8.3.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.servlet_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.eventadmin_1.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.rest_2.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.rest.synd_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.soap_1.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider_4.4.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.remoteservice_4.0.100.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer_3.2.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.httpclient4_1.0.300.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.datashare.nio_0.9.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.datashare_1.4.100.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.jmdns_4.2.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/ch.ethz.iks.r_osgi.remote_1.0.0.RC4_v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.r_osgi_3.3.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp.datashare_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp.remoteservice_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp_3.2.200.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.osgi.services.remoteserviceadmin_1.5.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.osgi.services.remoteserviceadmin_4.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.osgi.services.distribution_2.0.300.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.dnssd" version="3.8.0" description="ECF Discovery DNSSD Provider">
+	<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.dnssd_1.1.0.v20140309-0741.jar</bundle>
+	<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.xbill.dns_2.0.8.v201112050911.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.dnssd.source" version="3.8.0" description="ECF Discovery DNSSD Provider Source">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.dnssd.source_1.1.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.slp" version="3.8.0" description="ECF Discovery SLP Provider">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/ch.ethz.iks.slp_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.jslp_3.1.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.slp.source" version="3.8.0" description="ECF Discovery SLP Provider Source">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.dnssd.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/ch.ethz.iks.slp.source_1.1.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.zeroconf.source" version="3.8.0" description="ECF Discovery Zeroconf/JMDNS Provider Source">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.jmdns.source_4.2.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.zookeeper" version="3.8.0" description="ECF Discovery Zookeeper Provider">
+	<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.hadoop.zookeeper_3.3.3.v201105210832.jar</bundle>
+	<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.zookeeper_1.1.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.zookeeper.source" version="3.8.0" description="ECF Discovery Zookeeper Provider Source">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.zookeeper.source_1.1.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.composite" version="3.8.0" description="ECF Discovery Composite Provider">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.discovery_2.2.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf rs.sdk.discovery.composite.source" version="3.8.0" description="ECF Discovery Composite Provider Source">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.discovery.source_2.2.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf.rs.examples.timeservice" version="3.8.0" description="ECF RemoteService TimeService Example.  See https://wiki.eclipse.org/ECF#Introductory_Materials">
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer.ds_1.0.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer.filediscovery.rest_1.1.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer.filediscovery_1.1.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer_1.0.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.host_1.0.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.provider.rest.common_2.0.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.provider.rest.consumer_1.1.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.provider.rest.host_1.1.0.v20140309-0741.jar</bundle>
+<bundle start="false">http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice_1.0.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf.rs.examples.timeservice.source" version="3.8.0" description="ECF RemoteService TimeService Example Source.  See https://wiki.eclipse.org/ECF#Introductory_Materials">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer.ds.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer.filediscovery.rest.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer.filediscovery.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.consumer.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.host.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.provider.rest.common.source_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.provider.rest.consumer.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.provider.rest.host.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/com.mycorp.examples.timeservice.source_1.0.0.v20140309-0741.jar</bundle>
+</feature>
+
+<feature name="ecf.rs.sdk.source" version="3.8.0"  description="ECF 3.8.0 RemoteServices SDK Source Code.  See https://wiki.eclipse.org/ECF#OSGi_Remote_Services">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/ch.ethz.iks.r_osgi.remote.source_1.0.0.RC4_v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.datashare.source_3.0.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.source_5.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.filetransfer.source_5.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.httpclient4.source_1.0.300.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.source_3.2.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.identity.source_3.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.osgi.services.distribution.source_2.0.300.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.osgi.services.remoteserviceadmin.source_4.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence.source_2.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.datashare.nio.source_0.9.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.datashare.source_1.4.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.jslp.source_3.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.r_osgi.source_3.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.remoteservice.source_4.0.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.source_4.4.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp.datashare.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp.remoteservice.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp.source_3.2.200.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.eventadmin.source_1.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.rest.source_2.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.rest.synd.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.servlet.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.soap.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.source_8.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.sharedobject.source_2.4.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.source_3.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.osgi.services.remoteserviceadmin.source_1.5.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.jivesoftware.smack.source_3.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.commons.codec.source_1.6.0.v201305230611.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.commons.logging.source_1.1.1.v201101211721.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.httpcomponents.httpclient.source_4.2.6.v201311072007.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.apache.httpcomponents.httpcore.source_4.2.5.v201311072007.jar</bundle>
+</feature>
+
+<feature name="ecf.eclipsesdk.donotinstall" version="3.8.0" description="ECF Eclipse SDK - Do not install into Karaf">
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.console.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.console_1.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.browser.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.edit.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.browser_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.edit.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.edit_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.model.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.model_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.properties.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.properties.tabbed.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.properties.tabbed_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.properties_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.userinput.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui.userinput_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.discovery.ui_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.doc.source_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.doc_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.docshare.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.docshare_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.example.clients.source_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.example.clients_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.example.collab.editor.source_1.0.200.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.example.collab.editor_1.0.200.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.example.collab.source_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.example.collab_2.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.filetransfer.ui.source_1.5.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.filetransfer.ui_1.5.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence.bot.source_1.3.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence.bot_1.3.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence.collab.ui.source_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence.collab.ui_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence.ui.source_2.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.presence.ui_2.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.protocol.bittorrent.source_0.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.protocol.bittorrent_0.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.protocol.msn.source_1.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.protocol.msn_1.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.bittorrent.source_0.3.200.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.bittorrent.ui.source_0.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.bittorrent.ui_0.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.bittorrent_0.3.200.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.efs.source_1.5.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.efs_1.5.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl_1.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.scp.source_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.scp_2.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.ssl.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.irc.source_1.3.200.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.irc.ui.source_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.irc.ui_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.irc_1.3.200.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.msn.source_1.2.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.msn.ui.source_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.msn.ui_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.msn_1.2.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.ui.source_1.4.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.ui_1.4.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.ui.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservice.ui_3.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp.ui.source_2.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.provider.xmpp.ui_2.1.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservices.tooling.pde.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.remoteservices.tooling.pde_1.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.ssl.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.ssl_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.storage.source_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.storage_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.sync.source_2.0.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.sync_2.0.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.telephony.call.source_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.telephony.call.ui.source_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.telephony.call.ui_1.3.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.telephony.call_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.ui.capabilities.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.ui.capabilities_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.ui.source_2.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.ui_2.1.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.team.ecf.core.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.team.ecf.core_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.team.ecf.ui.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.team.ecf.ui_1.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.server.generic_7.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.server.generic.source_7.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.eventadmin.app.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.eventadmin.app_1.0.0.v20140309-0741.jar</bundle>
+	
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef.source_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef_1.1.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.consumer.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.consumer2.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.consumer2_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.consumer_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.source_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer_2.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.ds.host.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.ds.host_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.host.source_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.host_3.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello.source_3.0.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.hello_3.0.100.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.rest.rss.source_1.0.0.v20140309-0741.jar</bundle>
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.examples.remoteservices.rest.rss_1.0.0.v20140309-0741.jar</bundle>
+
+	<bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.server_2.1.0.v20140309-0741.jar</bundle>
+    <bundle>http://download.eclipse.org/rt/ecf/latest/site.p2/plugins/org.eclipse.ecf.server.source_2.1.0.v20140309-0741.jar</bundle>
+	
+</feature>
+
+</features>
diff --git a/releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/saxparserfactory/org.eclipse.ecf.saxparserfactory_1.0.0.v20130605-1748.jar b/releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/saxparserfactory/org.eclipse.ecf.saxparserfactory_1.0.0.v20130605-1748.jar
new file mode 100644
index 0000000..de46f6f
--- /dev/null
+++ b/releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/saxparserfactory/org.eclipse.ecf.saxparserfactory_1.0.0.v20130605-1748.jar
Binary files differ
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Client Equinox App.product b/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Client Equinox App.product
index 38aa0ce..d87010d 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Client Equinox App.product
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Client Equinox App.product
@@ -31,7 +31,7 @@
       <plugin id="org.eclipse.ecf.identity"/>
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.server.generic"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Server Equinox App.product b/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Server Equinox App.product
index 55722bf..e5a53e8 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Server Equinox App.product
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/products/Generic Server Equinox App.product
@@ -31,7 +31,7 @@
       <plugin id="org.eclipse.ecf.identity"/>
       <plugin id="org.eclipse.ecf.provider"/>
       <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/> <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
       <plugin id="org.eclipse.ecf.server.generic"/>
       <plugin id="org.eclipse.ecf.sharedobject"/>
       <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
diff --git a/server-side/bundles/org.eclipse.ecf.server/plugin.properties b/server-side/bundles/org.eclipse.ecf.server/plugin.properties
index 8106638..8c4b114 100644
--- a/server-side/bundles/org.eclipse.ecf.server/plugin.properties
+++ b/server-side/bundles/org.eclipse.ecf.server/plugin.properties
@@ -1,11 +1,10 @@
 ############################################################################
-# Copyright (c) 2007 Composent Inc., IBM Corp, and others.
+# Copyright (c) 2014 Composent Inc., and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF Server API
 plugin.provider=Eclipse.org - ECF
-
+plugin.name=ECF Server API
diff --git a/server-side/features/org.eclipse.ecf.server.feature/build.properties b/server-side/features/org.eclipse.ecf.server.feature/build.properties
index 6379b39..2a99c18 100644
--- a/server-side/features/org.eclipse.ecf.server.feature/build.properties
+++ b/server-side/features/org.eclipse.ecf.server.feature/build.properties
@@ -2,9 +2,11 @@
                lib/,\
                feature.xml,\
                conf/,\
-               about.html
+               about.html,\
+               license.html
 src.includes = conf/,\
                feature.xml,\
                lib/,\
                bin/,\
-               about.html
+               about.html,\
+               license.html
diff --git a/server-side/features/org.eclipse.ecf.server.feature/feature.xml b/server-side/features/org.eclipse.ecf.server.feature/feature.xml
index 71581e5..273dd18 100644
--- a/server-side/features/org.eclipse.ecf.server.feature/feature.xml
+++ b/server-side/features/org.eclipse.ecf.server.feature/feature.xml
@@ -6,7 +6,7 @@
       provider-name="Eclipse.org">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides a ECF server support.
+      This feature provides ECF server support for OSGi servers.
    </description>
 
    <copyright url="http://www.eclipse.org/ecf">
diff --git a/releng/features/org.eclipse.ecf.core.feature/notice.html b/server-side/features/org.eclipse.ecf.server.feature/license.html
similarity index 96%
copy from releng/features/org.eclipse.ecf.core.feature/notice.html
copy to server-side/features/org.eclipse.ecf.server.feature/license.html
index f19c483..c3d34c3 100644
--- a/releng/features/org.eclipse.ecf.core.feature/notice.html
+++ b/server-side/features/org.eclipse.ecf.server.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties
index 4d841b9..54edcdd 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+April 9, 2014\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -46,17 +46,17 @@
 repository ("Repository") in software modules ("Modules") and made available\n\
 as downloadable archives ("Downloads").\n\
 \n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
 The terms and conditions governing Plug-ins and Fragments should be\n\
 contained in files named "about.html" ("Abouts"). The terms and\n\
@@ -65,11 +65,11 @@
 Licenses may be located in any directory of a Download or Module\n\
 including, but not limited to the following locations:\n\
 \n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
 \n\
 Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
 Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
@@ -86,12 +86,11 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
 IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
 TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
@@ -115,19 +114,19 @@
 making it available in accordance with the Specification, you further acknowledge your\n\
 agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
 \n\
 Cryptography\n\
 \n\
diff --git a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml
index 689790c..0219878 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml
@@ -6,7 +6,7 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Generic Server Support.
+      This feature provides ECF server support for OSGi servers that use the ECF Generic Provider.
    </description>
 
    <copyright>
@@ -25,9 +25,9 @@
       %license
    </license>
 
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
+   <requires>
+      <import feature="org.eclipse.ecf.provider.generic.remoteservice.feature" version="1.0" match="compatible"/>
+   </requires>
 
    <plugin
          id="org.eclipse.ecf.server"
diff --git a/server-side/features/org.eclipse.ecf.server.generic.feature/license.html b/server-side/features/org.eclipse.ecf.server.generic.feature/license.html
index f19c483..c3d34c3 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/license.html
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+<p>April 9, 2014</p>
 
 <h3>Usage Of Content</h3>
 
@@ -62,7 +62,6 @@
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
        <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
diff --git a/server-side/features/org.eclipse.ecf.server.generic.feature/notice.html b/server-side/features/org.eclipse.ecf.server.generic.feature/notice.html
deleted file mode 100644
index f19c483..0000000
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/notice.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/.classpath b/tests/bundles/org.eclipse.ecf.tests.core/.classpath
new file mode 100644
index 0000000..2fbb7a2
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/.gitignore b/tests/bundles/org.eclipse.ecf.tests.core/.gitignore
new file mode 100644
index 0000000..5e56e04
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/.project b/tests/bundles/org.eclipse.ecf.tests.core/.project
new file mode 100644
index 0000000..4cb2330
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.tests.core</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3568415
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..798aa9e
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF Core Tests
+Bundle-SymbolicName: org.eclipse.ecf.tests.core
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.ecf.internal.tests.core.Activator
+Bundle-Vendor: Eclipse.org - ECF
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Import-Package: org.osgi.framework;version="1.3.0",
+ org.osgi.util.tracker;version="1.5.1"
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.ecf;bundle-version="3.3.0",
+ org.junit;bundle-version="4.11.0",
+ org.eclipse.equinox.common;bundle-version="3.6.200",
+ org.eclipse.ecf.tests;bundle-version="2.1.0"
+Export-Package: org.eclipse.ecf.tests.core.identity;x-internal:=true,
+ org.eclipse.ecf.tests.core.util;x-internal:=true
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/build.properties b/tests/bundles/org.eclipse.ecf.tests.core/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/org.eclipse.ecf.tests.core.launch b/tests/bundles/org.eclipse.ecf.tests.core/org.eclipse.ecf.tests.core.launch
new file mode 100644
index 0000000..124ab50
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/org.eclipse.ecf.tests.core.launch
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.ecf.tests.core"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.ecf.tests.core"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.core"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/internal/tests/core/Activator.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/internal/tests/core/Activator.java
new file mode 100644
index 0000000..259d327
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/internal/tests/core/Activator.java
@@ -0,0 +1,106 @@
+package org.eclipse.ecf.internal.tests.core;
+
+import org.eclipse.ecf.core.IContainerFactory;
+import org.eclipse.ecf.core.IContainerManager;
+import org.eclipse.ecf.core.identity.IIDFactory;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class Activator implements BundleActivator {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.ecf.tests.core";
+
+	// The shared instance
+	private static Activator plugin;
+
+	private static ServiceTracker idFactoryServiceTracker;
+	private static IIDFactory idFactory;
+
+	private static ServiceTracker containerFactoryServiceTracker;
+	private static IContainerFactory containerFactory;
+
+	private static ServiceTracker containerManagerServiceTracker;
+
+	private static BundleContext context;
+	
+	public static BundleContext getContext() {
+		return context;
+	}
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext ctxt) throws Exception {
+		plugin = this;
+		context = ctxt;
+		idFactoryServiceTracker = new ServiceTracker(context,
+				IIDFactory.class.getName(), null);
+		idFactoryServiceTracker.open();
+		idFactory = (IIDFactory) idFactoryServiceTracker.getService();
+		containerFactoryServiceTracker = new ServiceTracker(context,
+				IContainerFactory.class.getName(), null);
+		containerFactoryServiceTracker.open();
+		containerFactory = (IContainerFactory) containerFactoryServiceTracker
+				.getService();
+		containerManagerServiceTracker = new ServiceTracker(context,
+				IContainerManager.class.getName(), null);
+		containerManagerServiceTracker.open();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		if (idFactoryServiceTracker != null) {
+			idFactoryServiceTracker.close();
+			idFactoryServiceTracker = null;
+		}
+		if (containerFactoryServiceTracker != null) {
+			containerFactoryServiceTracker.close();
+			containerFactoryServiceTracker = null;
+		}
+		if (containerManagerServiceTracker != null) {
+			containerManagerServiceTracker.close();
+			containerManagerServiceTracker = null;
+		}
+		plugin = null;
+		idFactory = null;
+	}
+
+	/**
+	 * Returns the shared instance
+	 * 
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+	public IIDFactory getIDFactory() {
+		return idFactory;
+	}
+
+	public IContainerFactory getContainerFactory() {
+		return containerFactory;
+	}
+
+	/**
+	 * @return container manager.
+	 */
+	public IContainerManager getContainerManager() {
+		return (IContainerManager) containerManagerServiceTracker.getService();
+	}
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryAbstractTestCase.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryAbstractTestCase.java
old mode 100755
new mode 100644
similarity index 100%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryAbstractTestCase.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryAbstractTestCase.java
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java
old mode 100755
new mode 100644
similarity index 89%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java
index 73664f9..0aca3c4
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java
@@ -245,42 +245,6 @@
 		assertNotNull(base);
 	}
 
-	public void testCreateDefaultClientContainer() throws Exception {
-		final IContainer client = ContainerFactory.getDefault()
-				.createContainer("ecf.generic.client");
-		assertNotNull(client);
-		// dispose
-		client.dispose();
-	}
-
-	public void testCreateDefaultServerContainer() throws Exception {
-		final IContainer server = ContainerFactory.getDefault()
-				.createContainer("ecf.generic.server");
-		assertNotNull(server);
-		// dispose
-		server.dispose();
-	}
-
-	public void testCreateDefaultServerContainer1() throws Exception {
-		final IContainer server = ContainerFactory.getDefault()
-				.createContainer(
-						"ecf.generic.server",
-						IDFactory.getDefault().createStringID(
-								"ecftcp://localhost:3282/server"));
-		assertNotNull(server);
-		// dispose
-		server.dispose();
-	}
-
-	public void testCreateDefaultServerContainer2() throws Exception {
-		final IContainer server = ContainerFactory.getDefault()
-				.createContainer("ecf.generic.server",
-						new Object[] { "ecftcp://localhost:3282/server" });
-		assertNotNull(server);
-		// dispose
-		server.dispose();
-	}
-
 	public void testContainerTypeDescriptionGetName() {
 		final ContainerTypeDescription desc = ContainerFactory.getDefault()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java
old mode 100755
new mode 100644
similarity index 96%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java
index 9984a02..7a4e8fb
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java
@@ -43,7 +43,8 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#tearDown()
+	 * @see
+	 * org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#tearDown()
 	 */
 	protected void tearDown() throws Exception {
 		removeDescription();
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java
old mode 100755
new mode 100644
similarity index 97%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java
index 8a7a765..c51e6a3
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java
@@ -18,7 +18,7 @@
 import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.core.IContainerFactory;
 import org.eclipse.ecf.core.provider.IContainerInstantiator;
-import org.eclipse.ecf.internal.tests.Activator;
+import org.eclipse.ecf.internal.tests.core.Activator;
 
 public abstract class ContainerFactoryServiceAbstractTestCase extends TestCase {
 
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java
old mode 100755
new mode 100644
similarity index 66%
copy from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java
copy to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java
index 73664f9..85333f3
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java
@@ -16,23 +16,20 @@
 import org.eclipse.ecf.core.AbstractContainer;
 import org.eclipse.ecf.core.ContainerConnectException;
 import org.eclipse.ecf.core.ContainerCreateException;
-import org.eclipse.ecf.core.ContainerFactory;
 import org.eclipse.ecf.core.ContainerTypeDescription;
 import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.core.IContainerFactory;
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.provider.IContainerInstantiator;
 import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.internal.tests.core.Activator;
 
-public class ContainerFactoryCreateTest extends
-		ContainerFactoryAbstractTestCase {
+public class ContainerFactoryServiceCreateTest extends
+		ContainerFactoryServiceAbstractTestCase {
 
-	private static final String INTENTTWO = "intenttwo";
-
-	private static final String INTENTONE = "intentone";
-
-	protected static final String CONTAINER_TYPE_NAME = ContainerFactoryCreateTest.class
+	protected static final String CONTAINER_TYPE_NAME = ContainerFactoryServiceCreateTest.class
 			.getName();
 
 	protected static final String BASE_CONTAINER_TYPE_NAME = "ecf.base";
@@ -58,6 +55,10 @@
 		super.tearDown();
 	}
 
+	protected IContainerFactory getContainerFactoryService() {
+		return Activator.getDefault().getContainerFactory();
+	}
+
 	protected ContainerTypeDescription createContainerTypeDescription() {
 		return new ContainerTypeDescription(CONTAINER_TYPE_NAME,
 				new IContainerInstantiator() {
@@ -101,38 +102,35 @@
 
 					public String[] getSupportedIntents(
 							ContainerTypeDescription description) {
-						return new String[] { INTENTONE, INTENTTWO };
+						return null;
 					}
 				}, DESCRIPTION);
 	}
 
 	public void testCreateContainer1() throws Exception {
-		try {
-			ContainerFactory.getDefault().createContainer("bogus");
-			fail();
-		} catch (Exception e) {
-
-		}
+		final IContainer container = getContainerFactoryService()
+				.createContainer(CONTAINER_TYPE_NAME);
+		assertNotNull(container);
 	}
 
 	public void testCreateContainer2() throws Exception {
-		final IContainer container = ContainerFactory.getDefault()
+		final IContainer container = getContainerFactoryService()
 				.createContainer(CONTAINER_TYPE_NAME);
 		assertNotNull(container);
 	}
 
 	public void testCreateContainer3() throws Exception {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
 		assertNotNull(desc);
-		final IContainer container = ContainerFactory.getDefault()
+		final IContainer container = getContainerFactoryService()
 				.createContainer(desc);
 		assertNotNull(container);
 	}
 
 	public void testCreateContainer4() throws Exception {
 		try {
-			ContainerFactory.getDefault().createContainer((String) null,
+			getContainerFactoryService().createContainer((String) null,
 					(Object[]) null);
 			fail();
 		} catch (final ContainerCreateException e) {
@@ -141,7 +139,7 @@
 
 	public void testCreateContainer5() throws Exception {
 		try {
-			ContainerFactory.getDefault().createContainer(
+			getContainerFactoryService().createContainer(
 					(ContainerTypeDescription) null);
 			fail();
 		} catch (final ContainerCreateException e) {
@@ -149,152 +147,107 @@
 	}
 
 	public void testCreateContainer6() throws Exception {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
 		assertNotNull(desc);
-		final IContainer container = ContainerFactory.getDefault()
+		final IContainer container = getContainerFactoryService()
 				.createContainer(desc, IDFactory.getDefault().createGUID());
 		assertNotNull(container);
 	}
 
 	public void testCreateContainer7() throws Exception {
-		final IContainer container = ContainerFactory.getDefault()
+		final IContainer container = getContainerFactoryService()
 				.createContainer(CONTAINER_TYPE_NAME,
 						IDFactory.getDefault().createGUID());
 		assertNotNull(container);
 	}
 
 	public void testCreateContainer8() throws Exception {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
 		assertNotNull(desc);
-		final IContainer container = ContainerFactory.getDefault()
+		final IContainer container = getContainerFactoryService()
 				.createContainer(desc, IDFactory.getDefault().createGUID(),
 						new Object[] { "param" });
 		assertNotNull(container);
 	}
 
 	public void testCreateContainer9() throws Exception {
-		final IContainer container = ContainerFactory.getDefault()
+		final IContainer container = getContainerFactoryService()
 				.createContainer(CONTAINER_TYPE_NAME,
 						IDFactory.getDefault().createGUID(),
 						new Object[] { "param" });
 		assertNotNull(container);
 	}
 
-	public void testCreateBadContainer() throws Exception {
-		try {
-			ContainerFactory.getDefault().createContainer(
-					"asdfasdfasdfsadfsadf");
-			fail();
-		} catch (ContainerCreateException e) {
-		}
-	}
-
 	public void testCreateBaseContainer0() throws Exception {
-		final IContainer base = ContainerFactory.getDefault().createContainer();
+		final IContainer base = getContainerFactoryService().createContainer();
 		assertNotNull(base);
 	}
 
 	public void testCreateBaseContainer1() throws Exception {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(BASE_CONTAINER_TYPE_NAME);
 		assertNotNull(desc);
-		final IContainer base = ContainerFactory.getDefault().createContainer(
+		final IContainer base = getContainerFactoryService().createContainer(
 				desc, IDFactory.getDefault().createGUID());
 		assertNotNull(base);
 	}
 
 	public void testCreateBaseContainer2() throws Exception {
-		final IContainer base = ContainerFactory.getDefault().createContainer(
+		final IContainer base = getContainerFactoryService().createContainer(
 				BASE_CONTAINER_TYPE_NAME, IDFactory.getDefault().createGUID());
 		assertNotNull(base);
 	}
 
 	public void testCreateBaseContainer3() throws Exception {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(BASE_CONTAINER_TYPE_NAME);
 		assertNotNull(desc);
-		final IContainer base = ContainerFactory.getDefault().createContainer(
+		final IContainer base = getContainerFactoryService().createContainer(
 				desc,
 				new Object[] { IDFactory.getDefault().createGUID().getName() });
 		assertNotNull(base);
 	}
 
 	public void testCreateBaseContainer4() throws Exception {
-		final IContainer base = ContainerFactory.getDefault().createContainer(
+		final IContainer base = getContainerFactoryService().createContainer(
 				BASE_CONTAINER_TYPE_NAME,
 				new Object[] { IDFactory.getDefault().createGUID() });
 		assertNotNull(base);
 	}
 
 	public void testCreateBaseContainer5() throws Exception {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(BASE_CONTAINER_TYPE_NAME);
 		assertNotNull(desc);
-		final IContainer base = ContainerFactory.getDefault().createContainer(
+		final IContainer base = getContainerFactoryService().createContainer(
 				desc, IDFactory.getDefault().createGUID(),
 				new Object[] { "param" });
 		assertNotNull(base);
 	}
 
 	public void testCreateBaseContainer6() throws Exception {
-		final IContainer base = ContainerFactory.getDefault().createContainer(
+		final IContainer base = getContainerFactoryService().createContainer(
 				BASE_CONTAINER_TYPE_NAME, IDFactory.getDefault().createGUID(),
 				new Object[] { "param" });
 		assertNotNull(base);
 	}
 
-	public void testCreateDefaultClientContainer() throws Exception {
-		final IContainer client = ContainerFactory.getDefault()
-				.createContainer("ecf.generic.client");
-		assertNotNull(client);
-		// dispose
-		client.dispose();
-	}
-
-	public void testCreateDefaultServerContainer() throws Exception {
-		final IContainer server = ContainerFactory.getDefault()
-				.createContainer("ecf.generic.server");
-		assertNotNull(server);
-		// dispose
-		server.dispose();
-	}
-
-	public void testCreateDefaultServerContainer1() throws Exception {
-		final IContainer server = ContainerFactory.getDefault()
-				.createContainer(
-						"ecf.generic.server",
-						IDFactory.getDefault().createStringID(
-								"ecftcp://localhost:3282/server"));
-		assertNotNull(server);
-		// dispose
-		server.dispose();
-	}
-
-	public void testCreateDefaultServerContainer2() throws Exception {
-		final IContainer server = ContainerFactory.getDefault()
-				.createContainer("ecf.generic.server",
-						new Object[] { "ecftcp://localhost:3282/server" });
-		assertNotNull(server);
-		// dispose
-		server.dispose();
-	}
-
 	public void testContainerTypeDescriptionGetName() {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
 		assertTrue(desc.getName().equals(CONTAINER_TYPE_NAME));
 	}
 
 	public void testContainerTypeDescriptionGetDescription() {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
 		assertTrue(desc.getDescription().equals(DESCRIPTION));
 	}
 
 	public void testContainerTypeDescriptionGetSupportedAdapterTypes() {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
 		final String[] adapterTypes = desc.getSupportedAdapterTypes();
 		assertTrue(adapterTypes.length > 0);
@@ -302,7 +255,7 @@
 	}
 
 	public void testContainerTypeDescriptionGetSupportedParemeterTypes() {
-		final ContainerTypeDescription desc = ContainerFactory.getDefault()
+		final ContainerTypeDescription desc = getContainerFactoryService()
 				.getDescriptionByName(CONTAINER_TYPE_NAME);
 		final Class[][] parameterTypes = desc.getSupportedParameterTypes();
 		assertTrue(parameterTypes.length == 1);
@@ -311,4 +264,5 @@
 		assertTrue(parameterTypes[0][1].equals(Class.class));
 
 	}
+
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java
old mode 100755
new mode 100644
similarity index 96%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java
index 018af2f..474507b
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java
@@ -43,7 +43,8 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#tearDown()
+	 * @see
+	 * org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#tearDown()
 	 */
 	protected void tearDown() throws Exception {
 		removeDescription();
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java
old mode 100755
new mode 100644
similarity index 73%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java
index b310f76..0a69c63
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java
@@ -1,13 +1,13 @@
 /****************************************************************************
-* Copyright (c) 2004 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
+ * Copyright (c) 2004 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
 
 package org.eclipse.ecf.tests.core;
 
@@ -24,33 +24,39 @@
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.provider.IContainerInstantiator;
 import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.internal.tests.Activator;
+import org.eclipse.ecf.internal.tests.core.Activator;
 
-public class ContainerManagerServiceTest extends ContainerFactoryServiceAbstractTestCase {
+public class ContainerManagerServiceTest extends
+		ContainerFactoryServiceAbstractTestCase {
 
-	protected static final String CONTAINER_TYPE_NAME = ContainerManagerServiceTest.class.getName();
-	
+	protected static final String CONTAINER_TYPE_NAME = ContainerManagerServiceTest.class
+			.getName();
+
 	private IContainerManager containerManager = null;
-	
+
 	private IContainerManagerListener containerManagerListener = new IContainerManagerListener() {
 
 		public void containerAdded(IContainer container) {
-			System.out.println("containerAdded("+container+")");
+			System.out.println("containerAdded(" + container + ")");
 		}
 
 		public void containerRemoved(IContainer container) {
-			System.out.println("containerRemoved("+container+")");
-		}};
-		
+			System.out.println("containerRemoved(" + container + ")");
+		}
+	};
+
 	protected IContainer[] createContainers(int length) throws Exception {
-		IContainer [] result = new IContainer[length];
-		for(int i=0; i < length; i++) {
-			result[i] = Activator.getDefault().getContainerFactory().createContainer();
+		IContainer[] result = new IContainer[length];
+		for (int i = 0; i < length; i++) {
+			result[i] = Activator.getDefault().getContainerFactory()
+					.createContainer();
 		}
 		return result;
 	}
-	
-	/* (non-Javadoc)
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#setUp()
 	 */
 	protected void setUp() throws Exception {
@@ -59,9 +65,12 @@
 		containerManager = Activator.getDefault().getContainerManager();
 		containerManager.addListener(containerManagerListener);
 	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#tearDown()
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#tearDown()
 	 */
 	protected void tearDown() throws Exception {
 		getFixture().removeDescription(createContainerTypeDescription());
@@ -69,7 +78,7 @@
 		containerManager = null;
 		super.tearDown();
 	}
-	
+
 	protected ContainerTypeDescription createContainerTypeDescription() {
 		return new ContainerTypeDescription(CONTAINER_TYPE_NAME,
 				new IContainerInstantiator() {
@@ -78,9 +87,9 @@
 							Object[] parameters)
 							throws ContainerCreateException {
 						return new AbstractContainer() {
-							
+
 							protected ID id = null;
-							
+
 							public void connect(ID targetID,
 									IConnectContext connectContext)
 									throws ContainerConnectException {
@@ -100,7 +109,8 @@
 							public ID getID() {
 								if (id == null) {
 									try {
-										id = IDFactory.getDefault().createGUID();
+										id = IDFactory.getDefault()
+												.createGUID();
 									} catch (IDCreateException e) {
 										// TODO Auto-generated catch block
 										e.printStackTrace();
@@ -119,7 +129,7 @@
 
 					public Class[][] getSupportedParameterTypes(
 							ContainerTypeDescription description) {
-						return new Class[][] { { String.class , Class.class }};
+						return new Class[][] { { String.class, Class.class } };
 					}
 
 					public String[] getSupportedIntents(
@@ -128,19 +138,19 @@
 					}
 				}, DESCRIPTION);
 	}
-	
+
 	public void testGetContainerManager() throws Exception {
 		assertNotNull(containerManager);
 	}
-	
+
 	public void testGetContainersOne() throws Exception {
 		IContainer[] c = createContainers(1);
 		assertNotNull(c);
-		IContainer [] containers = containerManager.getAllContainers();
+		IContainer[] containers = containerManager.getAllContainers();
 		assertNotNull(containers);
-		//assertTrue(containers.length == 1);
+		// assertTrue(containers.length == 1);
 	}
-	
+
 	public void testGetContainerOne() throws Exception {
 		IContainer[] c = createContainers(1);
 		assertNotNull(c);
@@ -148,21 +158,21 @@
 		assertNotNull(container);
 		assertTrue(container.getID().equals(c[0].getID()));
 	}
-	
+
 	public void testGetContainerN() throws Exception {
 		IContainer[] c = createContainers(10);
 		assertNotNull(c);
-		for(int i=0; i < 10; i++) {
+		for (int i = 0; i < 10; i++) {
 			IContainer container = containerManager.getContainer(c[i].getID());
 			assertNotNull(container);
 			assertTrue(container.getID().equals(c[i].getID()));
 		}
 	}
-	
+
 	public void testHasContainerN() throws Exception {
 		IContainer[] c = createContainers(10);
 		assertNotNull(c);
-		for(int i=0; i < 10; i++) {
+		for (int i = 0; i < 10; i++) {
 			assertTrue(containerManager.hasContainer(c[i].getID()));
 		}
 	}
@@ -170,20 +180,20 @@
 	public void testGetContainerDescriptionN() throws Exception {
 		IContainer[] c = createContainers(10);
 		assertNotNull(c);
-		for(int i=0; i < 10; i++) {
-			ContainerTypeDescription description = containerManager.getContainerTypeDescription(c[i].getID());
+		for (int i = 0; i < 10; i++) {
+			ContainerTypeDescription description = containerManager
+					.getContainerTypeDescription(c[i].getID());
 			assertNotNull(description);
 		}
 	}
-	
+
 	public void testClearContainers() throws Exception {
-		IContainer [] c = createContainers(10);
+		IContainer[] c = createContainers(10);
 		assertNotNull(c);
 		containerManager.removeAllContainers();
-		IContainer [] cs = containerManager.getAllContainers();
+		IContainer[] cs = containerManager.getAllContainers();
 		assertTrue(cs != null);
 		assertTrue(cs.length == 0);
 	}
-	
 
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/NoRegistryContainerFactoryTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/NoRegistryContainerFactoryTest.java
new file mode 100644
index 0000000..ca5eb6e
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/NoRegistryContainerFactoryTest.java
@@ -0,0 +1,65 @@
+package org.eclipse.ecf.tests.core;
+
+import junit.framework.TestCase;
+
+import org.eclipse.ecf.core.BaseContainer;
+import org.eclipse.ecf.core.ContainerCreateException;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.core.IContainerFactory;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.provider.IContainerInstantiator;
+import org.eclipse.ecf.internal.tests.core.Activator;
+import org.osgi.framework.ServiceRegistration;
+
+public class NoRegistryContainerFactoryTest extends TestCase {
+
+	static class TestContainer extends BaseContainer {
+		public TestContainer(ID id) {
+			super(id);
+		}
+	}
+	protected ContainerTypeDescription createContainerTypeDescription() {
+		return new ContainerTypeDescription(getClass().getName(),new IContainerInstantiator() {
+
+			public IContainer createInstance(
+					ContainerTypeDescription description, Object[] parameters)
+					throws ContainerCreateException {
+				return new TestContainer(IDFactory.getDefault().createGUID());
+			}
+
+			public String[] getSupportedAdapterTypes(
+					ContainerTypeDescription description) {
+				return null;
+			}
+
+			public Class[][] getSupportedParameterTypes(
+					ContainerTypeDescription description) {
+				return null;
+			}
+
+			public String[] getSupportedIntents(
+					ContainerTypeDescription description) {
+				return null;
+			}});
+	}
+	
+	private ServiceRegistration r;
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		r = Activator.getContext().registerService(ContainerTypeDescription.class, createContainerTypeDescription(), null);
+	}
+	
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		if (r != null) r.unregister();
+	}
+	
+	public void testCreateContainer() throws Exception {
+		IContainerFactory f = Activator.getDefault().getContainerFactory();
+		IContainer c = f.createContainer(getClass().getName());
+		assertNotNull(c);
+	}
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java
old mode 100755
new mode 100644
similarity index 84%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java
index 3e766c7..c1a32a9
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java
@@ -1,13 +1,13 @@
 /****************************************************************************
-* Copyright (c) 2004 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
+ * Copyright (c) 2004 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
 package org.eclipse.ecf.tests.core.identity;
 
 import java.io.ByteArrayOutputStream;
@@ -22,7 +22,9 @@
 
 public class GUIDTest extends IDAbstractTestCase {
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.tests.IDTestCase#createID()
 	 */
 	protected ID createID() throws IDCreateException {
@@ -107,7 +109,8 @@
 	public void testCreateFromExternalForm() throws Exception {
 		final ID id1 = createID();
 		final String externalForm = id1.toExternalForm();
-		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
+		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(),
+				externalForm);
 		assertTrue(id1.equals(id2));
 	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java
old mode 100755
new mode 100644
similarity index 62%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java
index b336d2c..310c0ba
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java
@@ -9,38 +9,42 @@
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
 
-package org.eclipse.ecf.tests.core;
-
-import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.internal.tests.Activator;
+package org.eclipse.ecf.tests.core.identity;
 
 import junit.framework.TestCase;
 
-/**
- *
- */
-public class ECFStartTest extends TestCase {
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDCreateException;
 
-	IContainerManager containerManager = null;
-	
-	/* (non-Javadoc)
+public abstract class IDAbstractTestCase extends TestCase {
+
+	private ID fixture;
+
+	protected abstract ID createID() throws IDCreateException;
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see junit.framework.TestCase#setUp()
 	 */
 	protected void setUp() throws Exception {
 		super.setUp();
-		containerManager = Activator.getDefault().getContainerManager();
+		fixture = createID();
+		assertNotNull(fixture);
 	}
-	
-	/* (non-Javadoc)
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see junit.framework.TestCase#tearDown()
 	 */
 	protected void tearDown() throws Exception {
 		super.tearDown();
-		containerManager = null;
+		fixture = null;
 	}
-	
-	public void testStarted() throws Exception {
-		assertNotNull(containerManager);
-		assertTrue(ECFStartup.isSet);
+
+	protected ID getFixture() {
+		return fixture;
 	}
+
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java
old mode 100755
new mode 100644
similarity index 93%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java
index d87c4e2..bb5adb1
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java
@@ -11,12 +11,12 @@
 
 package org.eclipse.ecf.tests.core.identity;
 
-import org.eclipse.ecf.internal.tests.Activator;
+import org.eclipse.ecf.internal.tests.core.Activator;
 
 public class IDFactoryServiceTest extends IIDNamespaceTest {
 	/*
 	 * (non-Javadoc)
-	 *
+	 * 
 	 * @see junit.framework.TestCase#setUp()
 	 */
 	protected void setUp() throws Exception {
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java
similarity index 99%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java
index 58a4f48..1cd1445 100644
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java
@@ -16,7 +16,7 @@
 public class IDFactoryTest extends IIDNamespaceTest {
 	/*
 	 * (non-Javadoc)
-	 *
+	 * 
 	 * @see junit.framework.TestCase#setUp()
 	 */
 	protected void setUp() throws Exception {
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java
similarity index 99%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java
index 4fee5ae..c24f3e2 100644
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java
@@ -24,7 +24,7 @@
 
 	/*
 	 * (non-Javadoc)
-	 *
+	 * 
 	 * @see junit.framework.TestCase#tearDown()
 	 */
 	protected void tearDown() throws Exception {
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java
old mode 100755
new mode 100644
similarity index 86%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java
index 9266a1d..8836a25
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java
@@ -1,13 +1,13 @@
 /****************************************************************************
-* Copyright (c) 2004 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
+ * Copyright (c) 2004 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
 package org.eclipse.ecf.tests.core.identity;
 
 import java.io.ByteArrayOutputStream;
@@ -21,7 +21,9 @@
 
 public class LongIDTest extends IDAbstractTestCase {
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.tests.IDTestCase#createID()
 	 */
 	protected ID createID() throws IDCreateException {
@@ -124,7 +126,8 @@
 	public void testCreateFromExternalForm() throws Exception {
 		final ID id1 = createID();
 		final String externalForm = id1.toExternalForm();
-		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
+		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(),
+				externalForm);
 		assertTrue(id1.equals(id2));
 	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java
old mode 100755
new mode 100644
similarity index 90%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java
index e328f0e..75d8988
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java
@@ -15,43 +15,51 @@
 import java.io.NotSerializableException;
 import java.io.ObjectOutputStream;
 
+import junit.framework.TestCase;
+
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDCreateException;
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.identity.StringID;
-import org.eclipse.ecf.tests.ECFAbstractTestCase;
 
-public class NamespaceTest extends ECFAbstractTestCase {
+public class NamespaceTest extends TestCase {
 
 	private static final String DESCRIPTION = "description";
-	
+
 	private Namespace fixture;
-	
-	/* (non-Javadoc)
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see junit.framework.TestCase#setUp()
 	 */
 	protected void setUp() throws Exception {
 		super.setUp();
-		fixture = IDFactory.getDefault().getNamespaceByName(StringID.class.getName());
+		fixture = IDFactory.getDefault().getNamespaceByName(
+				StringID.class.getName());
 		assertNotNull(fixture);
 	}
-	
-	/* (non-Javadoc)
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see junit.framework.TestCase#tearDown()
 	 */
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		fixture = null;
 	}
+
 	protected Namespace createNamespace() {
-		Namespace namespace = new Namespace(this.getClass().getName(), DESCRIPTION) {
+		Namespace namespace = new Namespace(this.getClass().getName(),
+				DESCRIPTION) {
 			private static final long serialVersionUID = 0L;
-	
+
 			public ID createInstance(Object[] args) throws IDCreateException {
 				throw new IDCreateException("can't create instance");
 			}
-	
+
 			public String getScheme() {
 				return NamespaceTest.this.getClass().getName();
 			}
@@ -67,29 +75,29 @@
 		String scheme = fixture.getScheme();
 		assertNotNull(scheme);
 	}
-	
+
 	public void testNamespaceGetName() {
 		String name = fixture.getName();
 		assertNotNull(name);
 		assertTrue(name.equals(StringID.class.getName()));
 	}
-	
+
 	public void testNewNamespaceCreateInstance() {
 		Namespace ns = createNamespace();
 		try {
 			ns.createInstance(null);
 			fail("createInstance did not return null");
 		} catch (IDCreateException e) {
-			
+
 		}
 	}
-	
+
 	public void testNewNamespaceGetScheme() {
 		Namespace ns = createNamespace();
 		String scheme = ns.getScheme();
 		assertTrue(scheme.equals(this.getClass().getName()));
 	}
-	
+
 	public void testNewNamespaceGetDescription() {
 		Namespace ns = createNamespace();
 		String desc = ns.getDescription();
@@ -98,11 +106,11 @@
 
 	public void testNewNamespaceGetSupportedParameterTypesForCreateInstance() {
 		Namespace ns = createNamespace();
-		Class [][] result = ns.getSupportedParameterTypes();
+		Class[][] result = ns.getSupportedParameterTypes();
 		assertTrue(result.length == 1);
 		assertTrue(result[0][0].equals(String.class));
 	}
-	
+
 	public final void testSerializable() throws Exception {
 		ByteArrayOutputStream buf = new ByteArrayOutputStream();
 		ObjectOutputStream out = new ObjectOutputStream(buf);
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/NoRegistryNamespaceTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/NoRegistryNamespaceTest.java
new file mode 100644
index 0000000..9d6c9f1
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/NoRegistryNamespaceTest.java
@@ -0,0 +1,49 @@
+package org.eclipse.ecf.tests.core.identity;
+
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.internal.tests.core.Activator;
+import org.osgi.framework.ServiceRegistration;
+
+import junit.framework.TestCase;
+
+public class NoRegistryNamespaceTest extends TestCase {
+
+	protected Namespace createNamespace() {
+		Namespace namespace = new Namespace(this.getClass().getName(),
+				null) {
+			private static final long serialVersionUID = -1223105025297785358L;
+
+			public ID createInstance(Object[] args) throws IDCreateException {
+				throw new IDCreateException("can't create instance");
+			}
+			public String getScheme() {
+				return getClass().getName();
+			}
+			public Class[][] getSupportedParameterTypes() {
+				return new Class[][] { { String.class } };
+			}
+		};
+		return namespace;
+	}
+
+	private ServiceRegistration r;
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		r = Activator.getContext().registerService(Namespace.class, createNamespace(), null);
+	}
+	
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		if (r != null) r.unregister();
+	}
+	
+	public void testGetNamespace() throws Exception {
+		Namespace n = IDFactory.getDefault().getNamespaceByName(this.getClass().getName());
+		assertNotNull(n);
+		assertTrue(n.getName().equals(getClass().getName()));
+	}
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java
old mode 100755
new mode 100644
similarity index 86%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java
index 826944c..9b62692
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java
@@ -1,13 +1,13 @@
 /****************************************************************************
-* Copyright (c) 2004 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
+ * Copyright (c) 2004 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
 package org.eclipse.ecf.tests.core.identity;
 
 import java.io.ByteArrayOutputStream;
@@ -21,7 +21,9 @@
 
 public class StringIDTest extends IDAbstractTestCase {
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.tests.IDTestCase#createID()
 	 */
 	protected ID createID() throws IDCreateException {
@@ -117,7 +119,8 @@
 	public void testCreateFromExternalForm() throws Exception {
 		final ID id1 = createID();
 		final String externalForm = id1.toExternalForm();
-		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
+		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(),
+				externalForm);
 		assertTrue(id1.equals(id2));
 	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
new file mode 100644
index 0000000..950b301
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
@@ -0,0 +1,99 @@
+/****************************************************************************
+ * Copyright (c) 2011 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.tests.core.identity;
+
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.identity.URIID;
+
+public class URIIDTest extends IDAbstractTestCase {
+
+	public static final String URIIDNAMESPACE = URIID.class.getName();
+	public static final String URI1 = "http://lala/lala/lala";
+	public static final String URI2 = "zooo:barbarbarbarbarbarbarbar";
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.tests.IDTestCase#createID()
+	 */
+	protected ID createID() throws IDCreateException {
+		return createID(URI1);
+	}
+
+	protected ID createID(String val) throws IDCreateException {
+		// return IDFactory.getDefault().createID(URIIDNAMESPACE,val);
+		return IDFactory.getDefault().createStringID(val);
+	}
+
+	// The tests below are commented out because the Platform is using an older
+	// version of ECF
+	// core identity, and these tests are not supported in that older version
+	public void testCreate() throws Exception {
+		// final ID newID = createID();
+		// assertNotNull(newID);
+	}
+
+	/*
+	 * public void testNullCreate() throws Exception { try { createID(null);
+	 * fail(); } catch (final IDCreateException e) { // success } }
+	 * 
+	 * public void testGetName() throws Exception { final ID id =
+	 * createID(URI1); assertTrue(id.getName().equals(URI1)); }
+	 * 
+	 * public void testToExternalForm() throws Exception { final ID id =
+	 * createID(URI1); assertNotNull(id.toExternalForm()); }
+	 * 
+	 * public void testToString() throws Exception { final ID id =
+	 * createID(URI1); assertNotNull(id.toString()); }
+	 * 
+	 * public void testIsEqual() throws Exception { final ID id1 = createID();
+	 * final ID id2 = createID(); assertTrue(id1.equals(id2)); }
+	 * 
+	 * public void testHashCode() throws Exception { final ID id1 = createID();
+	 * final ID id2 = createID(); assertTrue(id1.hashCode() == id2.hashCode());
+	 * }
+	 * 
+	 * public void testCompareToEqual() throws Exception { final ID id1 =
+	 * createID(); final ID id2 = createID(); assertTrue(id1.compareTo(id2) ==
+	 * 0); assertTrue(id2.compareTo(id1) == 0); }
+	 * 
+	 * public void testCompareToNotEqual() throws Exception { final ID id1 =
+	 * createID(URI1); final ID id2 = createID(URI2);
+	 * assertTrue(id1.compareTo(id2) < 0); assertTrue(id2.compareTo(id1) > 0); }
+	 * 
+	 * public void testGetNamespace() throws Exception { final ID id =
+	 * createID(); final Namespace ns = id.getNamespace(); assertNotNull(ns); }
+	 * 
+	 * public void testEqualNamespaces() throws Exception { final ID id1 =
+	 * createID(); final ID id2 = createID(); final Namespace ns1 =
+	 * id1.getNamespace(); final Namespace ns2 = id2.getNamespace();
+	 * assertTrue(ns1.equals(ns2)); assertTrue(ns2.equals(ns2)); }
+	 * 
+	 * public void testSerializable() throws Exception { final
+	 * ByteArrayOutputStream buf = new ByteArrayOutputStream(); final
+	 * ObjectOutputStream out = new ObjectOutputStream(buf); try {
+	 * out.writeObject(createID()); } catch (final NotSerializableException ex)
+	 * { fail(ex.getLocalizedMessage()); } finally { out.close(); } }
+	 * 
+	 * public void testCreateFromExternalForm() throws Exception { final ID id1
+	 * = createID(); final String externalForm = id1.toExternalForm(); final ID
+	 * id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
+	 * assertTrue(id1.equals(id2)); }
+	 * 
+	 * public void testCreateFromURIForm() throws Exception { final ID id1 =
+	 * IDFactory.getDefault().createID(URIIDNAMESPACE,new Object[] { new
+	 * URI(URI1) }); final String externalForm = id1.toExternalForm(); final ID
+	 * id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
+	 * assertTrue(id1.equals(id2)); }
+	 */
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/Base64Test.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/Base64Test.java
new file mode 100644
index 0000000..cc12907
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/Base64Test.java
@@ -0,0 +1,38 @@
+/****************************************************************************
+ * Copyright (c) 2004 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.ecf.tests.core.util;
+
+import org.eclipse.ecf.core.util.Base64;
+
+import junit.framework.TestCase;
+
+public class Base64Test extends TestCase {
+
+	private static final String INPUT = "the quick brown fox jumped over the lazy dog";
+
+	protected String encode() {
+		return Base64.encode(INPUT.getBytes());
+	}
+
+	public void testEncode() {
+		String encoded = encode();
+		assertNotNull(encoded);
+		assertTrue(encoded.length() > 0);
+	}
+
+	public void testDecode() {
+		String encoded = encode();
+		byte[] bytes = Base64.decode(encoded);
+		assertNotNull(bytes);
+		assertTrue(INPUT.equals(new String(bytes)));
+	}
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java
similarity index 78%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java
index b199a42..07f4d75 100644
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java
@@ -4,32 +4,36 @@
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.ecf.core.status.SerializableStatus;
-import org.eclipse.ecf.internal.tests.Activator;
+import org.eclipse.ecf.internal.tests.core.Activator;
 
 public class SerializableStatusTest extends TestCase {
 
-	
 	protected IStatus createOKStatus() {
 		return SerializableStatus.OK_STATUS;
 	}
-	
+
 	protected IStatus createErrorStatus() {
-		return new SerializableStatus(IStatus.ERROR,Activator.PLUGIN_ID,IStatus.ERROR,"error",new IllegalArgumentException("myexception"));
+		return new SerializableStatus(IStatus.ERROR, Activator.PLUGIN_ID,
+				IStatus.ERROR, "error", new IllegalArgumentException(
+						"myexception"));
 	}
-	
+
 	public static class MyNotSerializableException extends Exception {
-		
+
+		private static final long serialVersionUID = -3836424516905729214L;
 		Object notSerializableObject = new Object();
-		
+
 		public MyNotSerializableException(String message) {
 			super(message);
 		}
 	}
-	
+
 	protected IStatus createNotSerializableExceptionStatus() {
-		return new SerializableStatus(IStatus.ERROR,Activator.PLUGIN_ID,IStatus.ERROR,"error",new MyNotSerializableException("myexception"));
+		return new SerializableStatus(IStatus.ERROR, Activator.PLUGIN_ID,
+				IStatus.ERROR, "error", new MyNotSerializableException(
+						"myexception"));
 	}
-	
+
 	public void testCreateStatus() throws Exception {
 		IStatus s = createOKStatus();
 		assertNotNull(s);
@@ -38,7 +42,7 @@
 		assertTrue(s.getMessage().equals("ok"));
 		assertTrue(s.getException() == null);
 	}
-	
+
 	public void testCreateExceptionStatus() throws Exception {
 		IStatus s = createErrorStatus();
 		assertNotNull(s);
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java
similarity index 69%
rename from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java
rename to tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java
index 51761a1..ab33a14 100644
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java
@@ -18,22 +18,28 @@
 public class StringUtilsTest extends TestCase {
 
 	/**
-	 * Test method for {@link org.eclipse.ecf.core.util.StringUtils#replaceFirst(java.lang.String, java.lang.String, java.lang.String)}.
+	 * Test method for
+	 * {@link org.eclipse.ecf.core.util.StringUtils#replaceFirst(java.lang.String, java.lang.String, java.lang.String)}
+	 * .
 	 */
 	public final void testReplaceFirstNoCase() {
 		String input = "barbar";
 		String toReplace = "bar";
 		String withReplace = "foo";
-		assertEquals("foobar", StringUtils.replaceFirst(input, toReplace, withReplace));
+		assertEquals("foobar",
+				StringUtils.replaceFirst(input, toReplace, withReplace));
 	}
-	
+
 	/**
-	 * Test method for {@link org.eclipse.ecf.core.util.StringUtils#replaceFirst(java.lang.String, java.lang.String, java.lang.String)}.
+	 * Test method for
+	 * {@link org.eclipse.ecf.core.util.StringUtils#replaceFirst(java.lang.String, java.lang.String, java.lang.String)}
+	 * .
 	 */
 	public final void testReplaceFirstWithCase() {
 		String input = "Barbarbar";
 		String toReplace = "bar";
 		String withReplace = "foo";
-		assertEquals("Barfoobar", StringUtils.replaceFirst(input, toReplace, withReplace));
+		assertEquals("Barfoobar",
+				StringUtils.replaceFirst(input, toReplace, withReplace));
 	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF
index fdf0027..5814d45 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.distribution
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.tests.internal.osgi.services.distribution.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.osgi.framework,
- org.osgi.service.remoteserviceadmin;version="1.0.0",
+Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
+ org.osgi.framework,
  org.osgi.util.tracker;version="1.4.2"
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/EndpointDescriptionTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/EndpointDescriptionTest.java
deleted file mode 100644
index 1253b38..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/EndpointDescriptionTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package org.eclipse.ecf.tests.osgi.services.distribution;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.Activator;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.remoteserviceadmin.EndpointDescription;
-import org.osgi.service.remoteserviceadmin.EndpointListener;
-import org.osgi.service.remoteserviceadmin.RemoteConstants;
-
-public class EndpointDescriptionTest extends AbstractDistributionTest {
-
-	private List<EndpointDescription> endpointsReceived = new ArrayList<EndpointDescription>();
-	final String endpointListenerFilter = "(&("+org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID+"=*)("+org.eclipse.ecf.remoteservice.Constants.SERVICE_ID+"=0))";
-
-	private EndpointListener endpointListener = new EndpointListener() {
-
-		public void endpointAdded(EndpointDescription paramEndpointDescription,
-				String paramString) {
-			endpointsReceived.add(paramEndpointDescription);
-		}
-
-		public void endpointRemoved(
-				EndpointDescription paramEndpointDescription, String paramString) {
-			endpointsReceived.remove(paramEndpointDescription);
-		}
-		
-	};
-	
-	@Override
-	protected String getClientContainerName() {
-		return null;
-	}
-
-	@Override
-	protected int getClientCount() {
-		return 0;
-	}
-	
-	private ServiceRegistration endpointListenerReg;
-	private ServiceRegistration testServiceRegistration;
-	private TestService1 testService1;
-	@Override
-	protected void setUp() throws Exception {
-		endpointsReceived.clear();
-		Hashtable props = new Hashtable();
-		props.put(EndpointListener.ENDPOINT_LISTENER_SCOPE, new String[]{endpointListenerFilter});
-		endpointListenerReg = Activator.getDefault().getContext().registerService(EndpointListener.class, endpointListener, props);
-	
-		testService1 = new TestService1();
-		testServiceRegistration = Activator.getDefault().getContext().registerService(new String[]{TestService1.class.getName()}, testService1, null);
-	}
-	
-	@Override
-	protected void tearDown() throws Exception {
-		if (endpointListenerReg != null) {
-			endpointListenerReg.unregister();
-			endpointListenerReg = null;
-		}
-	}
-	
-	private String isInterested(Object scopeobj, EndpointDescription description) {
-		if (scopeobj instanceof List<?>) {
-			List<String> scope = (List<String>) scopeobj;
-			for (Iterator<String> it = scope.iterator(); it.hasNext();) {
-				String filter = it.next();
-
-				if (description.matches(filter)) {
-					return filter;
-				}
-			}
-		} else if (scopeobj instanceof String[]) {
-			String[] scope = (String[]) scopeobj;
-			for (String filter : scope) {
-				if (description.matches(filter)) {
-					return filter;
-				}
-			}
-		} else if (scopeobj instanceof String) {
-			StringTokenizer st = new StringTokenizer((String)scopeobj, " ");
-			for (; st.hasMoreTokens();) {
-				String filter = st.nextToken();
-				if (description.matches(filter)) {
-					return filter;
-				}
-			}
-		}
-		return null;
-	}
-
-	public void testEndpointDescription() throws Exception {
-		Long endpointID = new Long(12345);
-		Map<String, Object> properties = new HashMap<String, Object>();
-		properties.put("mykey", "has been overridden");
-		properties.put(RemoteConstants.SERVICE_IMPORTED, TestService1.class.getName());
-		properties.put(RemoteConstants.ENDPOINT_SERVICE_ID, endpointID);
-		properties.put(RemoteConstants.ENDPOINT_FRAMEWORK_UUID, Activator.getDefault().getContext().getProperty("org.osgi.framework.uuid"));
-		properties.put(RemoteConstants.ENDPOINT_ID, "someURI"); // mandatory
-		properties.put(RemoteConstants.SERVICE_IMPORTED_CONFIGS, "A"); // mandatory
-		properties.put("service.exported.interfaces", new String[] { TestServiceInterface1.class.getName() });
-		EndpointDescription endpoint = new EndpointDescription(testServiceRegistration.getReference(), properties);
-		
-		String filter = "(" + EndpointListener.ENDPOINT_LISTENER_SCOPE + "=*)"; // see 122.6.1
-
-		ServiceReference[] refs = Activator.getDefault().getContext().getServiceReferences(EndpointListener.class.getName(),filter);
-		
-		for (ServiceReference sr : refs) {
-			EndpointListener listener = (EndpointListener) Activator.getDefault().getContext().getService(sr);
-			Object scope = sr.getProperty(EndpointListener.ENDPOINT_LISTENER_SCOPE);
-			
-			String matchedFilter = isInterested(scope, endpoint);
-			
-			if (matchedFilter != null) 
-				listener.endpointAdded(endpoint, matchedFilter);
-		}
-		Thread.sleep(10000);
-		assertTrue(endpointsReceived.size()==1);
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java
index 9df9b6d..c4f0573 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java
@@ -10,10 +10,9 @@
  *****************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.distribution.async;
 
-import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
 import org.eclipse.equinox.concurrent.future.IFuture;
 
-public interface TestServiceInterface1Async extends IAsyncRemoteServiceProxy {
+public interface TestServiceInterface1Async {
 
 	IFuture doStuff1();
 	
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index b956d36..357115d 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.remoteserviceadmin
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.tests.osgi.services.remoteserviceadmin.Activator
 Bundle-Vendor: %bundle.provider
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
@@ -15,6 +15,7 @@
  org.eclipse.ecf.discovery.identity;version="3.0.0",
  org.eclipse.ecf.osgi.services.remoteserviceadmin,
  org.eclipse.ecf.remoteservice,
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.ecf.remoteservice.events,
  org.eclipse.ecf.tests.remoteservice,
  org.eclipse.equinox.concurrent.future;version="1.0.0",
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1Async.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1Async.java
index 5ca6420..6235b14 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1Async.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1Async.java
@@ -12,9 +12,7 @@
 
 import java.util.concurrent.Future;
 
-import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
-
-public interface TestServiceInterface1Async extends IAsyncRemoteServiceProxy {
+public interface TestServiceInterface1Async {
 
 	Future<String> doStuff1Async();
 	
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java
index 7968a21..c9698a1 100755
--- a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java
@@ -28,14 +28,15 @@
  */
 public class SCPOutgoingTest extends ContainerAbstractTestCase {
 
-	private static final String TESTSRCFILE = "test.txt"; //$NON-NLS-1$
+	String sendFile = System.getProperty("sendFile", "test.txt"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$
+	String file = System.getProperty("file", "test.txt"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	// URL (example:  scp://slewis@ecf1.osuosl.org/test.txt 
 	String username = System.getProperty("username", "nobody"); //$NON-NLS-1$ //$NON-NLS-2$
 	String password = System.getProperty("password", "password"); //$NON-NLS-1$ //$NON-NLS-2$
 
-	String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$
-
 	protected ISendFileTransferContainerAdapter adapter = null;
 	protected IFileTransferListener senderTransferListener = null;
 
@@ -61,11 +62,11 @@
 	}
 
 	public void testSend() throws Exception {
-		String targetURL = "scp://" + username + "@" + host + "/" + TESTSRCFILE; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		String targetURL = "scp://" + username + "@" + host + (file.startsWith("/") ? "" : "/") + file; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
 		System.out.println("Sending to " + targetURL); //$NON-NLS-1$
 		final IFileID targetID = FileIDFactory.getDefault().createFileID(adapter.getOutgoingNamespace(), new URL(targetURL));
 		adapter.setConnectContextForAuthentication(ConnectContextFactory.createPasswordConnectContext(password));
-		adapter.sendOutgoingRequest(targetID, new File(TESTSRCFILE), senderTransferListener, null);
+		adapter.sendOutgoingRequest(targetID, new File(sendFile), senderTransferListener, null);
 
 		sleep(10000);
 	}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java
index 2a32c0a..c07d2ce 100755
--- a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java
@@ -25,14 +25,13 @@
 
 public class SCPRetrieveTest extends ContainerAbstractTestCase {
 
-	private static final String TESTSRCFILE = "test.txt"; //$NON-NLS-1$
+	String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$
+	String file = System.getProperty("file", "test.txt"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	// URL (example:  scp://slewis@ecf1.osuosl.org/test.txt 
 	String username = System.getProperty("username", "nobody"); //$NON-NLS-1$ //$NON-NLS-2$
 	String password = System.getProperty("password", "password"); //$NON-NLS-1$ //$NON-NLS-2$
 
-	String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$
-
 	IRetrieveFileTransferContainerAdapter adapter = null;
 
 	/*
@@ -69,7 +68,6 @@
 	List receiveDoneEvents;
 
 	public void testReceive() throws Exception {
-		final Object lock = new Object();
 		assertNotNull(adapter);
 		final IFileTransferListener listener = new IFileTransferListener() {
 			public void handleTransferEvent(IFileTransferEvent event) {
@@ -87,25 +85,25 @@
 					receiveDataEvents.add(event);
 				} else if (event instanceof IIncomingFileTransferReceiveDoneEvent) {
 					receiveDoneEvents.add(event);
-					synchronized (lock) {
-						lock.notify();
-					}
+					syncNotify();
 				}
 			}
 		};
 
-		String targetURL = "scp://" + host + "/" + TESTSRCFILE; //$NON-NLS-1$ //$NON-NLS-2$
+		String targetURL = "scp://" + host + (file.startsWith("/") ? "" : "/") + file; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		System.out.println("Retrieving from " + targetURL + " with username=" + username); //$NON-NLS-1$ //$NON-NLS-2$
 		adapter.setConnectContextForAuthentication(ConnectContextFactory.createUsernamePasswordConnectContext(username, password));
 		adapter.sendRetrieveRequest(FileIDFactory.getDefault().createFileID(adapter.getRetrieveNamespace(), targetURL), listener, null);
 
-		synchronized (lock) {
-			lock.wait(30000);
-		}
+		syncWaitForNotify(60000);
 
 		assertHasEvent(receiveStartEvents, IIncomingFileTransferReceiveStartEvent.class);
 		assertHasMoreThanEventCount(receiveDataEvents, IIncomingFileTransferReceiveDataEvent.class, 0);
 		assertHasEvent(receiveDoneEvents, IIncomingFileTransferReceiveDoneEvent.class);
 
 	}
+
+	public void syncNotify() {
+		super.syncNotify();
+	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceRegistryTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceRegistryTest.java
index 2944354..26de61f 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceRegistryTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceRegistryTest.java
@@ -61,4 +61,10 @@
 		// the OSGi whiteboard pattern IServiceInfo registry approach taken
 		// here.
 	}
+
+	// Known/Accepted test "failure"
+	public void testAddServiceListenerWithRefresh() {
+		// just register a service to make sure de-registration in tearDown does not fail
+		registerService();
+	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceTest.java
index 1b69ec1..e369490 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceTest.java
@@ -18,4 +18,10 @@
 	public ZooDiscoveryServiceTest() {
 		super(ZooDiscoveryContainerInstantiator.NAME);
 	}
+
+	// Known/Accepted test "failure"
+	public void testAddServiceListenerWithRefresh() {
+		// just register a service to make sure de-registration in tearDown does not fail
+		registerService();
+	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF
index b7e5c8b..821d006 100755
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.remoteservice.generic;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.1.0.qualifier
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.equinox.common,
@@ -15,7 +15,8 @@
  org.eclipse.ecf.provider;bundle-version="3.0.0",
  org.eclipse.ecf.server.generic;bundle-version="3.0.0"
 Bundle-ActivationPolicy: lazy
-Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0",
+Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
+ org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.eclipse.osgi.util,
  org.osgi.framework;version="1.4.0",
  org.osgi.util.tracker;version="1.3.3"
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLGeneric.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLGeneric.java
new file mode 100644
index 0000000..3c0599a
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLGeneric.java
@@ -0,0 +1,21 @@
+/****************************************************************************
+ * Copyright (c) 2013 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+/**
+ *
+ */
+public interface SSLGeneric {
+	public static final String CONSUMER_CONTAINER_TYPE = "ecf.generic.ssl.client";
+	public static final String HOST_CONTAINER_TYPE = "ecf.generic.ssl.server";
+	public static final String HOST_CONTAINER_ENDPOINT_ID = "ecfssl://localhost:{0}/secureserver";
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLGenericLocalRemoteServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLGenericLocalRemoteServiceTest.java
new file mode 100644
index 0000000..09c1b8b
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLGenericLocalRemoteServiceTest.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+* Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Composent, Inc. - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.tests.remoteservice.AbstractLocalRemoteServiceTest;
+
+public class SSLGenericLocalRemoteServiceTest extends
+		AbstractLocalRemoteServiceTest {
+
+	protected void setUp() throws Exception {
+		super.setUp();
+		container = getContainerFactory().createContainer(SSLGeneric.CONSUMER_CONTAINER_TYPE);
+		containerAdapter = (IRemoteServiceContainerAdapter) container.getAdapter(IRemoteServiceContainerAdapter.class);
+	}
+	
+	protected void tearDown() throws Exception {
+		container.disconnect();
+		container.dispose();
+		getContainerManager().removeAllContainers();
+		super.tearDown();
+	}
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceProxyTest.java
new file mode 100644
index 0000000..a732c17
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceProxyTest.java
@@ -0,0 +1,173 @@
+/****************************************************************************
+ * Copyright (c) 2008 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
+import org.eclipse.ecf.remoteservice.IRemoteServiceProxy;
+import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
+import org.eclipse.ecf.remoteservice.RemoteServiceHelper;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent;
+import org.eclipse.ecf.remoteservice.util.tracker.RemoteServiceTracker;
+import org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+import org.eclipse.equinox.concurrent.future.IFuture;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ *
+ */
+public class SSLRemoteServiceProxyTest extends AbstractRemoteServiceTest {
+
+	RemoteServiceTracker remoteServiceTracker;
+	
+	protected String getClientContainerName() {
+		return SSLGeneric.CONSUMER_CONTAINER_TYPE;
+	}
+
+	protected String getServerIdentity() {
+		return NLS.bind(SSLGeneric.HOST_CONTAINER_ENDPOINT_ID, new Integer(genericServerPort));
+	}
+
+	protected String getServerContainerName() {
+		return SSLGeneric.HOST_CONTAINER_TYPE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+		setClientCount(2);
+		createServerAndClients();
+		setupRemoteServiceAdapters();
+		connectClients();
+		addRemoteServiceListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		cleanUpServerAndClients();
+		if (remoteServiceTracker != null) {
+			remoteServiceTracker.close();
+		}
+		super.tearDown();
+	}
+
+	protected IRemoteService getRemoteService(IRemoteServiceContainerAdapter adapter, String clazz, String filter) {
+		remoteServiceTracker = new RemoteServiceTracker(adapter, null, clazz, null);
+		assertNotNull(remoteServiceTracker);
+		remoteServiceTracker.open();
+		return remoteServiceTracker.getRemoteService();
+	}
+
+
+	public void testRemoteServiceProxy() throws Exception {
+		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
+		// client [0]/adapter[0] is the service 'server'
+		// client [1]/adapter[1] is the service target (client)
+		final Dictionary props = new Hashtable();
+		// Register
+		adapters[0].registerRemoteService(new String[] {IConcatService.class.getName()}, createService(), props);
+		// Give some time for propagation
+		sleep(3000);
+
+		final RemoteServiceTracker st = new RemoteServiceTracker(adapters[1], null, IConcatService.class.getName(), null);
+		assertNotNull(st);
+		st.open();
+		IRemoteService rs = st.getRemoteService();
+		final IConcatService concatService = (IConcatService) rs.getProxy();
+		assertNotNull(concatService);
+		// test for proxy implementing IRemoteServiceProxy
+		if (concatService instanceof IRemoteServiceProxy) {
+			IRemoteService remoteService = ((IRemoteServiceProxy) concatService).getRemoteService();
+			assertNotNull(remoteService);
+			IRemoteServiceReference remoteServiceReference = ((IRemoteServiceProxy) concatService).getRemoteServiceReference();
+			assertNotNull(remoteServiceReference);
+			System.out.println("remote service reference found from proxy="+remoteServiceReference);
+			System.out.println("remoteserviceproxy call start");
+			Object result = RemoteServiceHelper.syncExec(remoteService, "concat" , new Object[] { "IRemoteServiceProxy ","is very cool" }, 20000);
+			System.out.println("remoteserviceproxy call end. result=" + result);
+		} else {
+			System.out.println("proxy call start");
+			final String result = concatService.concat("OSGi ", "is cool");
+			System.out.println("proxy call end. result=" + result);
+		}
+		sleep(3000);
+		st.close();
+		sleep(3000);
+	}
+
+	IRemoteService remoteService;
+	boolean done;
+
+	public void testServiceListener() throws Exception {
+		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
+		done = false;
+		final Object lock = new Object();
+		adapters[1].addRemoteServiceListener(new IRemoteServiceListener() {
+			public void handleServiceEvent(IRemoteServiceEvent event) {
+				if (event instanceof IRemoteServiceRegisteredEvent) {
+					IRemoteServiceRegisteredEvent e = (IRemoteServiceRegisteredEvent) event;
+					IRemoteServiceReference ref = e.getReference();
+					remoteService = adapters[1].getRemoteService(ref);
+					assertNotNull(remoteService);
+					synchronized (lock) {
+						done = true;
+						lock.notify();
+					}
+				}
+			}
+		});
+
+		// Now register service on server (adapters[0]).  This should result in notification on client (adapters[1])
+		// in above handleServiceEvent
+		adapters[0].registerRemoteService(new String[] { IConcatService.class.getName() }, createService(),
+				customizeProperties(null));
+
+		// wait until block above called asynchronously
+		int count = 0;
+		synchronized (lock) {
+			while (!done && count++ < 10) {
+				try {
+					lock.wait(1000);
+				} catch (InterruptedException e) {
+					fail();
+				}
+			}
+		}
+
+		assertTrue(done);
+
+		if (remoteService == null) return;
+		// We've got the remote service, so we're good to go
+		assertTrue(remoteService != null);
+		traceCallStart("callAsynchResult");
+		final IFuture result = remoteService
+				.callAsync(createRemoteConcat("ECF AsynchResults ", "are cool"));
+		traceCallEnd("callAsynch");
+		assertNotNull(result);
+		Thread.sleep(SLEEPTIME);
+	}
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceTest.java
new file mode 100644
index 0000000..1dbd846
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceTest.java
@@ -0,0 +1,116 @@
+/****************************************************************************
+ * Copyright (c) 2004 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
+import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent;
+import org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+import org.eclipse.equinox.concurrent.future.IFuture;
+import org.eclipse.osgi.util.NLS;
+
+public class SSLRemoteServiceTest extends AbstractRemoteServiceTest {
+
+	protected String getClientContainerName() {
+		return SSLGeneric.CONSUMER_CONTAINER_TYPE;
+	}
+
+	protected String getServerIdentity() {
+		return NLS.bind(SSLGeneric.HOST_CONTAINER_ENDPOINT_ID, new Integer(genericServerPort));
+	}
+
+	protected String getServerContainerName() {
+		return SSLGeneric.HOST_CONTAINER_TYPE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+		setClientCount(2);
+		createServerAndClients();
+		setupRemoteServiceAdapters();
+		connectClients();
+		addRemoteServiceListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		cleanUpServerAndClients();
+		super.tearDown();
+	}
+
+	IRemoteService remoteService;
+	boolean done;
+
+	public void testServiceListener() throws Exception {
+		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
+		done = false;
+		final Object lock = new Object();
+		adapters[1].addRemoteServiceListener(new IRemoteServiceListener() {
+			public void handleServiceEvent(IRemoteServiceEvent event) {
+				if (event instanceof IRemoteServiceRegisteredEvent) {
+					IRemoteServiceRegisteredEvent e = (IRemoteServiceRegisteredEvent) event;
+					IRemoteServiceReference ref = e.getReference();
+					remoteService = adapters[1].getRemoteService(ref);
+					assertNotNull(remoteService);
+					synchronized (lock) {
+						done = true;
+						lock.notify();
+					}
+				}
+			}
+		});
+
+		// Now register service on server (adapters[0]).  This should result in notification on client (adapters[1])
+		// in above handleServiceEvent
+		adapters[0].registerRemoteService(new String[] { IConcatService.class.getName() }, createService(),
+				customizeProperties(null));
+
+		// wait until block above called asynchronously
+		int count = 0;
+		synchronized (lock) {
+			while (!done && count++ < 10) {
+				try {
+					lock.wait(1000);
+				} catch (InterruptedException e) {
+					fail();
+				}
+			}
+		}
+
+		assertTrue(done);
+
+		if (remoteService == null) return;
+		// We've got the remote service, so we're good to go
+		assertTrue(remoteService != null);
+		traceCallStart("callAsynchResult");
+		final IFuture result = remoteService
+				.callAsync(createRemoteConcat("ECF AsynchResults ", "are cool"));
+		traceCallEnd("callAsynch");
+		assertNotNull(result);
+		Thread.sleep(SLEEPTIME);
+	}
+
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceTrackerTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceTrackerTest.java
new file mode 100644
index 0000000..2e6d223
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLRemoteServiceTrackerTest.java
@@ -0,0 +1,172 @@
+/****************************************************************************
+ * Copyright (c) 2008 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
+import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent;
+import org.eclipse.ecf.remoteservice.util.tracker.RemoteServiceTracker;
+import org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+import org.eclipse.equinox.concurrent.future.IFuture;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ *
+ */
+public class SSLRemoteServiceTrackerTest extends AbstractRemoteServiceTest {
+
+	RemoteServiceTracker remoteServiceTracker;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest#
+	 * getClientContainerName()
+	 */
+	protected String getClientContainerName() {
+		return SSLGeneric.CONSUMER_CONTAINER_TYPE;
+	}
+
+	protected String getServerIdentity() {
+		return NLS.bind(SSLGeneric.HOST_CONTAINER_ENDPOINT_ID, new Integer(genericServerPort));
+	}
+
+	protected String getServerContainerName() {
+		return SSLGeneric.HOST_CONTAINER_TYPE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+		setClientCount(2);
+		createServerAndClients();
+		setupRemoteServiceAdapters();
+		connectClients();
+		addRemoteServiceListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		cleanUpServerAndClients();
+		if (remoteServiceTracker != null) {
+			remoteServiceTracker.close();
+		}
+		super.tearDown();
+	}
+
+	protected IRemoteService getRemoteService(
+			IRemoteServiceContainerAdapter adapter, String clazz, String filter) {
+		remoteServiceTracker = new RemoteServiceTracker(adapter, null, clazz,
+				null);
+		assertNotNull(remoteServiceTracker);
+		remoteServiceTracker.open();
+		return remoteServiceTracker.getRemoteService();
+	}
+
+	public void testRemoteServiceTracker() throws Exception {
+		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
+		// client [0]/adapter[0] is the service 'server'
+		// client [1]/adapter[1] is the service target (client)
+		final Dictionary props = new Hashtable();
+		// Register
+		adapters[0].registerRemoteService(
+				new String[] { IConcatService.class.getName() },
+				createService(), props);
+		// Give some time for propagation
+		sleep(3000);
+
+		final RemoteServiceTracker st = new RemoteServiceTracker(adapters[1],
+				null, IConcatService.class.getName(), null);
+		assertNotNull(st);
+		st.open();
+		IRemoteService rs = st.getRemoteService();
+		final IConcatService concatService = (IConcatService) rs.getProxy();
+		assertNotNull(concatService);
+		System.out.println("proxy call start");
+		final String result = concatService.concat("OSGi ", "is cool");
+		System.out.println("proxy call end. result=" + result);
+		sleep(3000);
+		st.close();
+		sleep(3000);
+	}
+
+	IRemoteService remoteService;
+	boolean done;
+
+	public void testServiceListener() throws Exception {
+		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
+		done = false;
+		final Object lock = new Object();
+		adapters[1].addRemoteServiceListener(new IRemoteServiceListener() {
+			public void handleServiceEvent(IRemoteServiceEvent event) {
+				if (event instanceof IRemoteServiceRegisteredEvent) {
+					IRemoteServiceRegisteredEvent e = (IRemoteServiceRegisteredEvent) event;
+					IRemoteServiceReference ref = e.getReference();
+					remoteService = adapters[1].getRemoteService(ref);
+					assertNotNull(remoteService);
+					synchronized (lock) {
+						done = true;
+						lock.notify();
+					}
+				}
+			}
+		});
+
+		// Now register service on server (adapters[0]). This should result in
+		// notification on client (adapters[1])
+		// in above handleServiceEvent
+		adapters[0].registerRemoteService(
+				new String[] { IConcatService.class.getName() },
+				createService(), customizeProperties(null));
+
+		// wait until block above called asynchronously
+		int count = 0;
+		synchronized (lock) {
+			while (!done && count++ < 10) {
+				try {
+					lock.wait(1000);
+				} catch (InterruptedException e) {
+					fail();
+				}
+			}
+		}
+
+		assertTrue(done);
+
+		if (remoteService == null)
+			return;
+		// We've got the remote service, so we're good to go
+		assertTrue(remoteService != null);
+		traceCallStart("callAsynchResult");
+		final IFuture result = remoteService.callAsync(createRemoteConcat(
+				"ECF AsynchResults ", "are cool"));
+		traceCallEnd("callAsynch");
+		assertNotNull(result);
+		Thread.sleep(SLEEPTIME);
+	}
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleConcatClient.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleConcatClient.java
new file mode 100644
index 0000000..bc6ea68
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleConcatClient.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   EclipseSource - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+import org.eclipse.ecf.core.ContainerFactory;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
+import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+import org.eclipse.osgi.util.NLS;
+
+public class SSLSimpleConcatClient {
+
+	public static final String CLIENT_TYPE = "ecf.generic.ssl.client";
+	
+	private IRemoteServiceContainer rsContainer;
+	
+	protected String SERVER_ID = "ecfssl://localhost:{0}"+SSLSimpleConcatServer.PATH;
+	
+	private IRemoteServiceReference rsReference;
+	private IRemoteService remoteService;
+	
+	public synchronized IRemoteService getRemoteService() {
+		if (remoteService == null) {
+			remoteService = rsContainer.getContainerAdapter().getRemoteService(rsReference);
+		}
+		return remoteService;
+	}
+	
+	public void start(int port) throws Exception {
+		IContainer client = ContainerFactory.getDefault().createContainer(
+				CLIENT_TYPE);
+		// Get adapter for accessing remote services
+		IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) client
+				.getAdapter(IRemoteServiceContainerAdapter.class);
+
+		rsContainer = new RemoteServiceContainer(client,adapter);
+		
+		System.out.println("Client created with ID=" + client.getID());
+
+		ID connectTargetID = IDFactory.getDefault().createStringID(
+				NLS.bind(SERVER_ID, new Integer(port)));
+		
+		System.out.println("Attempting connect to id="+connectTargetID);
+		client.connect(connectTargetID, null);
+		System.out.println("Client connected to connectTargetID="
+				+ connectTargetID);
+
+		Thread.sleep(1000);
+		
+
+		// Get remote service reference
+		IRemoteServiceReference[] refs = adapter.getRemoteServiceReferences(
+				(ID[]) null, IConcatService.class.getName(), null);
+		
+		rsReference = refs[0];
+		
+		System.out.println("Remote service with ref=" + refs[0]);
+	}
+	
+	public void stop() {
+		if (rsContainer != null) {
+			rsContainer.getContainerAdapter().ungetRemoteService(rsReference);
+			remoteService = null;
+			rsReference = null;
+			rsContainer.getContainer().disconnect();
+			rsContainer = null;
+		}
+		
+	}
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleConcatServer.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleConcatServer.java
new file mode 100644
index 0000000..6b3a31c
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleConcatServer.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+* Copyright (c) 2013 EclipseSource and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   EclipseSource - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
+import org.eclipse.ecf.server.generic.SSLGenericServerContainer;
+import org.eclipse.ecf.server.generic.SSLSimpleGenericServer;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+
+public class SSLSimpleConcatServer {
+
+	public static final String PATH = "/sslserver";
+	public static final String HOST = "localhost";
+	public static final int KEEPALIVE = 30000;
+	
+	private IRemoteServiceRegistration registration = null;
+	private SSLSimpleGenericServer server;
+	
+	public class ConcatService implements IConcatService {
+
+		public String concat(String string1, String string2) {
+			System.out.println("server.concat("+string1+","+string2+")");
+			return string1+string2;
+		}
+		
+	}
+	public void start(int port) throws Exception {
+		// Start server
+		server = new SSLSimpleGenericServer(HOST,port);
+		server.start(PATH, KEEPALIVE);
+		
+		SSLGenericServerContainer serverContainer = server.getServerContainer(0);
+		IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) serverContainer.getAdapter(IRemoteServiceContainerAdapter.class);
+		Assert.isNotNull(adapter);
+		registration = adapter.registerRemoteService(new String[] { IConcatService.class.getName() }, new ConcatService(), null);
+		Assert.isNotNull(registration);
+		System.out.println("generic server started with id="+serverContainer.getID());
+	}
+	
+	public IRemoteServiceRegistration getConcatServiceRegistration() {
+		return registration;
+	}
+	
+	public void stop() {
+		if (registration != null) {
+			registration.unregister();
+			registration = null;
+		}
+		server.stop();
+		server = null;
+	}
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleTest.java
new file mode 100644
index 0000000..801dbdd
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/SSLSimpleTest.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+* program and the accompanying materials are made available under the terms of
+* the Eclipse Public License v1.0 which accompanies this distribution, and is
+* available at http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   EclipseSource - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.tests.remoteservice.generic;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+
+import org.eclipse.ecf.remoteservice.IRemoteCall;
+import org.eclipse.ecf.remoteservice.IRemoteCallListener;
+import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.events.IRemoteCallCompleteEvent;
+import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent;
+import org.eclipse.ecf.tests.remoteservice.IConcatService;
+import org.eclipse.equinox.concurrent.future.IFuture;
+
+import junit.framework.TestCase;
+
+public class SSLSimpleTest extends TestCase {
+
+	public static final String TEST_STRING_1 = "foo";
+	public static final String TEST_STRING_2 = "bar";
+
+	SSLSimpleConcatServer server;
+	SSLSimpleConcatClient client;
+	
+	protected void setUp() throws Exception {
+		super.setUp();
+		int freePort = getFreePort();
+		if (freePort == -1) throw new Exception("could not run test because could not find open port for server");
+		server = new SSLSimpleConcatServer();
+		server.start(freePort);
+		client = new SSLSimpleConcatClient();
+		client.start(freePort);
+	}
+	
+	private int getFreePort() {
+		int port = -1;
+		try {
+			ServerSocket ss = new ServerSocket(0);
+			port = ss.getLocalPort();
+			ss.close();
+		} catch (IOException e) {
+			return -1;
+		}
+		return port;
+	}
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		client.stop();
+		client = null;
+		server.stop();
+		server = null;
+	}
+	
+	public void testSimpleClientAndServerWithProxy() throws Exception {
+
+		IRemoteService remoteService = client.getRemoteService();
+		assertNotNull(remoteService);
+		// Use proxy
+		String result = ((IConcatService) remoteService.getProxy()).concat(TEST_STRING_1,TEST_STRING_2);
+		assertTrue(result != null && result.equals(TEST_STRING_1+TEST_STRING_2));
+		
+	}
+
+	private IRemoteCall getRemoteConcatCall(final String first, final String second) {
+		return new IRemoteCall() {
+
+			public String getMethod() {
+				return "concat";
+			}
+
+			public Object[] getParameters() {
+				return new String[] { first, second };
+			}
+
+			public long getTimeout() {
+				return 3000;
+			}};
+	}
+	
+	public void testSimpleClientAndServerWithCallSync() throws Exception {
+
+		IRemoteService remoteService = client.getRemoteService();
+		assertNotNull(remoteService);
+		// Use callSync
+		String result = (String) remoteService.callSync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
+		assertTrue(result != null && result.equals(TEST_STRING_2+TEST_STRING_1));
+		
+	}
+
+	public void testSimpleClientAndServerWithFireAsync() throws Exception {
+
+		IRemoteService remoteService = client.getRemoteService();
+		assertNotNull(remoteService);
+		// Use callSync
+		remoteService.fireAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
+		
+		Thread.sleep(1000);
+		
+	}
+
+	public void testSimpleClientAndServerWithCallAsync() throws Exception {
+
+		IRemoteService remoteService = client.getRemoteService();
+		assertNotNull(remoteService);
+		// Use callSync
+		remoteService.callAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
+		
+		Thread.sleep(1000);
+		
+	}
+
+	String result = null;
+	
+	public void testSimpleClientAndServerWithCallAsyncListener() throws Exception {
+
+		IRemoteService remoteService = client.getRemoteService();
+		assertNotNull(remoteService);
+		// Use callSync
+		remoteService.callAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1),new IRemoteCallListener(){
+			public void handleEvent(IRemoteCallEvent event) {
+				if (event instanceof IRemoteCallCompleteEvent) {
+					result = (String) ((IRemoteCallCompleteEvent) event).getResponse();
+				}
+			}
+		});
+		
+		Thread.sleep(1000);
+		
+		assertNotNull(result);
+		assertTrue(result.equals(TEST_STRING_2+TEST_STRING_1));
+		
+	}
+
+	public void testSimpleClientAndServerWithFuture() throws Exception {
+
+		IRemoteService remoteService = client.getRemoteService();
+		assertNotNull(remoteService);
+		// Use callSync
+		IFuture future = remoteService.callAsync(getRemoteConcatCall(TEST_STRING_2, TEST_STRING_1));
+		assertNotNull(future);
+		String result = (String) future.get();
+		assertTrue(result.equals(TEST_STRING_2+TEST_STRING_1));
+	}
+
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/readme.txt b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/readme.txt
new file mode 100644
index 0000000..70c23e4
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/readme.txt
@@ -0,0 +1,12 @@
+In this directory is a java keystore file 'server.ks' that has a self-signed certificate.
+The password for accessing this keystore is 'server'.  To use with the default
+SSLServerSocketFactory and SSLSocketFactory you may use the following Java System
+Properties
+
+-Djavax.net.ssl.keyStore=security/server.ks
+-Djavax.net.ssl.keyStorePassword=server
+-Djavax.net.ssl.trustStore=security/server.ks
+
+To debug the ssl connection process add this Java System Property
+
+-Djavax.net.debug=all 
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/server.ks b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/server.ks
new file mode 100644
index 0000000..7f31ada
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/security/server.ks
Binary files differ
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF
index 0462664..890946f 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: REST API Tests
 Bundle-SymbolicName: org.eclipse.ecf.tests.remoteservice.rest;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Require-Bundle: org.eclipse.ecf.remoteservice.rest;bundle-version="1.0.0",
  org.junit;bundle-version="3.8.2",
@@ -13,7 +13,8 @@
  org.eclipse.equinox.concurrent;bundle-version="1.0.0",
  org.json;bundle-version="1.0.0"
 Import-Package: org.apache.commons.httpclient;version="3.0.1",
- org.apache.commons.httpclient.server
+ org.apache.commons.httpclient.server,
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0"
 Export-Package: org.eclipse.ecf.tests.remoteservice.rest,
  org.eclipse.ecf.tests.remoteservice.rest.service,
  org.eclipse.ecf.tests.remoteservice.rest.twitter
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF
index 7d261b3..bd2a7ef 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.remoteservice.rpc
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.tests.remoteservice.rpc.Activator
 Bundle-Vendor: %plugin.provider
 Require-Bundle: org.eclipse.core.runtime,
@@ -19,6 +19,7 @@
 Import-Package: javax.servlet;version="2.5.0",
  javax.servlet.http;version="2.5.0",
  org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
  org.eclipse.ecf.remoteservice.client;version="6.0.0",
  org.eclipse.ecf.remoteservice.events;version="6.0.0",
  org.eclipse.equinox.concurrent.future;version="1.0.0",
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java
index 5112194..efe647b 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java
@@ -9,16 +9,28 @@
  *******************************************************************************/
 package org.eclipse.ecf.internal.tests.remoteservice.rpc;
 
+import javax.servlet.ServletConfig;
+
+import org.apache.xmlrpc.XmlRpcConfig;
+import org.apache.xmlrpc.server.XmlRpcHandlerMapping;
+import org.apache.xmlrpc.webserver.XmlRpcServletServer;
+import java.io.InputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.BufferedInputStream;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import javax.servlet.ServletInputStream;
+import java.util.Enumeration;
+import java.io.IOException;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServlet;
 import org.eclipse.equinox.http.jetty.JettyConfigurator;
-
 import java.util.Hashtable;
-
 import java.util.Dictionary;
-
 import org.apache.xmlrpc.webserver.XmlRpcServlet;
-
 import org.eclipse.ecf.tests.remoteservice.rpc.RpcConstants;
-
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
@@ -36,13 +48,45 @@
 		return context;
 	}
 
+	class XHttpServlet extends HttpServlet {
+		
+		private final XmlRpcServlet s = new XmlRpcServlet();
+		
+		@Override
+		public void init(ServletConfig config) throws ServletException {
+			// TODO Auto-generated method stub
+			super.init(config);
+			s.init(config);
+		}
+		
+		@Override
+		protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+				throws ServletException, IOException {
+			//System.out.println("doPost req="+readInputStreamAsString(req.getInputStream()));
+			s.doPost(req,resp);
+		}
+	}
+	
+	public static String readInputStreamAsString(InputStream in) 
+		    throws IOException {
+
+		    BufferedInputStream bis = new BufferedInputStream(in);
+		    ByteArrayOutputStream buf = new ByteArrayOutputStream();
+		    int result = bis.read();
+		    while(result != -1) {
+		      byte b = (byte)result;
+		      buf.write(b);
+		      result = bis.read();
+		    }        
+		    return buf.toString();
+		}
 	/*
 	 * (non-Javadoc)
 	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
 	 */
 	public void start(BundleContext bundleContext) throws Exception {
 		Activator.context = bundleContext;
-		httpServiceConnector = new HttpServiceConnector(context, RpcConstants.TEST_SERVLETS_PATH, new XmlRpcServlet());
+		httpServiceConnector = new HttpServiceConnector(context, RpcConstants.TEST_SERVLETS_PATH, new XHttpServlet());
 		
 		Dictionary<String, Object> properties = new Hashtable<String, Object>();
         properties.put(HTTP_PORT_KEY, RpcConstants.HTTP_PORT);
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/AbstractRpcTestCase.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/AbstractRpcTestCase.java
index e2add3b..199f7ed 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/AbstractRpcTestCase.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/AbstractRpcTestCase.java
@@ -22,7 +22,7 @@
 public abstract class AbstractRpcTestCase extends ECFAbstractTestCase {
 	
 	protected IContainer createRpcContainer(String uri) throws ContainerCreateException {
-		return getContainerFactory().createContainer(RpcConstants.RPC_CONTAINER_TYPE, uri);
+		return getContainerFactory().createContainer(RpcConstants.RPC_CONTAINER_TYPE, uri); 
 	}
 
 	protected IContainer createRpcContainer(ID rpcId) throws ContainerCreateException {
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF
index 4475db2..bb6e94d 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.remoteservice
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.1.0.qualifier
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.equinox.common,
@@ -12,7 +12,8 @@
  org.junit,
  org.eclipse.equinox.app;bundle-version="1.2.0"
 Export-Package: org.eclipse.ecf.tests.remoteservice;version="2.0.0"
-Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0",
+Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0",
+ org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.eclipse.osgi.util,
  org.osgi.framework;version="1.4.0",
  org.osgi.util.tracker;version="1.3.3"
diff --git a/tests/bundles/org.eclipse.ecf.tests/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests/META-INF/MANIFEST.MF
index 3e7c4c2..5bb76b9 100755
--- a/tests/bundles/org.eclipse.ecf.tests/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests/META-INF/MANIFEST.MF
@@ -13,9 +13,6 @@
 Export-Package: org.eclipse.ecf.internal.tests;x-internal:=true,
  org.eclipse.ecf.tests,
  org.eclipse.ecf.tests.connect,
- org.eclipse.ecf.tests.core;x-internal:=true,
- org.eclipse.ecf.tests.core.identity;x-internal:=true,
- org.eclipse.ecf.tests.core.util;x-internal:=true,
  org.eclipse.ecf.tests.util
 Import-Package: org.eclipse.osgi.util;version="1.1.0",
  org.osgi.framework;version="1.4.0",
diff --git a/tests/bundles/org.eclipse.ecf.tests/org.eclipse.ecf.tests.launch b/tests/bundles/org.eclipse.ecf.tests/org.eclipse.ecf.tests.launch
new file mode 100644
index 0000000..177df1c
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests/org.eclipse.ecf.tests.launch
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.ecf.tests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.ecf.tests"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java
deleted file mode 100755
index f03fb5c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/****************************************************************************
-* Copyright (c) 2004 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
-
-package org.eclipse.ecf.tests.core;
-
-import java.util.Arrays;
-
-import org.eclipse.ecf.core.AbstractContainer;
-import org.eclipse.ecf.core.ContainerConnectException;
-import org.eclipse.ecf.core.ContainerCreateException;
-import org.eclipse.ecf.core.ContainerTypeDescription;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.IContainerFactory;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.core.provider.IContainerInstantiator;
-import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.internal.tests.Activator;
-
-public class ContainerFactoryServiceCreateTest extends ContainerFactoryServiceAbstractTestCase {
-
-	protected static final String CONTAINER_TYPE_NAME = ContainerFactoryServiceCreateTest.class.getName();
-
-	protected static final String BASE_CONTAINER_TYPE_NAME = "ecf.base";
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#setUp()
-	 */
-	protected void setUp() throws Exception {
-		super.setUp();
-		getFixture().addDescription(createContainerTypeDescription());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.tests.core.ContainerFactoryAbstractTestCase#tearDown()
-	 */
-	protected void tearDown() throws Exception {
-		getFixture().removeDescription(createContainerTypeDescription());
-		super.tearDown();
-	}
-
-	protected IContainerFactory getContainerFactoryService() {
-		return Activator.getDefault().getContainerFactory();
-	}
-
-	protected ContainerTypeDescription createContainerTypeDescription() {
-		return new ContainerTypeDescription(CONTAINER_TYPE_NAME, new IContainerInstantiator() {
-			public IContainer createInstance(ContainerTypeDescription description, Object[] parameters) throws ContainerCreateException {
-				return new AbstractContainer() {
-					public void connect(ID targetID, IConnectContext connectContext) throws ContainerConnectException {
-					}
-
-					public void disconnect() {
-					}
-
-					public Namespace getConnectNamespace() {
-						return null;
-					}
-
-					public ID getConnectedID() {
-						return null;
-					}
-
-					public ID getID() {
-						return null;
-					}
-
-				};
-			}
-
-			public String[] getSupportedAdapterTypes(ContainerTypeDescription description) {
-				return new String[] {"one"};
-			}
-
-			public Class[][] getSupportedParameterTypes(ContainerTypeDescription description) {
-				return new Class[][] {{String.class, Class.class}};
-			}
-
-			public String[] getSupportedIntents(
-					ContainerTypeDescription description) {
-				return null;
-			}
-		}, DESCRIPTION);
-	}
-
-	public void testCreateContainer1() throws Exception {
-		final IContainer container = getContainerFactoryService().createContainer(CONTAINER_TYPE_NAME);
-		assertNotNull(container);
-	}
-
-	public void testCreateContainer2() throws Exception {
-		final IContainer container = getContainerFactoryService().createContainer(CONTAINER_TYPE_NAME);
-		assertNotNull(container);
-	}
-
-	public void testCreateContainer3() throws Exception {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(CONTAINER_TYPE_NAME);
-		assertNotNull(desc);
-		final IContainer container = getContainerFactoryService().createContainer(desc);
-		assertNotNull(container);
-	}
-
-	public void testCreateContainer4() throws Exception {
-		try {
-			getContainerFactoryService().createContainer((String) null, (Object[]) null);
-			fail();
-		} catch (final ContainerCreateException e) {
-		}
-	}
-
-	public void testCreateContainer5() throws Exception {
-		try {
-			getContainerFactoryService().createContainer((ContainerTypeDescription) null);
-			fail();
-		} catch (final ContainerCreateException e) {
-		}
-	}
-
-	public void testCreateContainer6() throws Exception {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(CONTAINER_TYPE_NAME);
-		assertNotNull(desc);
-		final IContainer container = getContainerFactoryService().createContainer(desc, IDFactory.getDefault().createGUID());
-		assertNotNull(container);
-	}
-
-	public void testCreateContainer7() throws Exception {
-		final IContainer container = getContainerFactoryService().createContainer(CONTAINER_TYPE_NAME, IDFactory.getDefault().createGUID());
-		assertNotNull(container);
-	}
-
-	public void testCreateContainer8() throws Exception {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(CONTAINER_TYPE_NAME);
-		assertNotNull(desc);
-		final IContainer container = getContainerFactoryService().createContainer(desc, IDFactory.getDefault().createGUID(), new Object[] {"param"});
-		assertNotNull(container);
-	}
-
-	public void testCreateContainer9() throws Exception {
-		final IContainer container = getContainerFactoryService().createContainer(CONTAINER_TYPE_NAME, IDFactory.getDefault().createGUID(), new Object[] {"param"});
-		assertNotNull(container);
-	}
-
-	public void testCreateBaseContainer0() throws Exception {
-		final IContainer base = getContainerFactoryService().createContainer();
-		assertNotNull(base);
-	}
-
-	public void testCreateBaseContainer1() throws Exception {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(BASE_CONTAINER_TYPE_NAME);
-		assertNotNull(desc);
-		final IContainer base = getContainerFactoryService().createContainer(desc, IDFactory.getDefault().createGUID());
-		assertNotNull(base);
-	}
-
-	public void testCreateBaseContainer2() throws Exception {
-		final IContainer base = getContainerFactoryService().createContainer(BASE_CONTAINER_TYPE_NAME, IDFactory.getDefault().createGUID());
-		assertNotNull(base);
-	}
-
-	public void testCreateBaseContainer3() throws Exception {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(BASE_CONTAINER_TYPE_NAME);
-		assertNotNull(desc);
-		final IContainer base = getContainerFactoryService().createContainer(desc, new Object[] {IDFactory.getDefault().createGUID().getName()});
-		assertNotNull(base);
-	}
-
-	public void testCreateBaseContainer4() throws Exception {
-		final IContainer base = getContainerFactoryService().createContainer(BASE_CONTAINER_TYPE_NAME, new Object[] {IDFactory.getDefault().createGUID()});
-		assertNotNull(base);
-	}
-
-	public void testCreateBaseContainer5() throws Exception {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(BASE_CONTAINER_TYPE_NAME);
-		assertNotNull(desc);
-		final IContainer base = getContainerFactoryService().createContainer(desc, IDFactory.getDefault().createGUID(), new Object[] {"param"});
-		assertNotNull(base);
-	}
-
-	public void testCreateBaseContainer6() throws Exception {
-		final IContainer base = getContainerFactoryService().createContainer(BASE_CONTAINER_TYPE_NAME, IDFactory.getDefault().createGUID(), new Object[] {"param"});
-		assertNotNull(base);
-	}
-
-	public void testContainerTypeDescriptionGetName() {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(CONTAINER_TYPE_NAME);
-		assertTrue(desc.getName().equals(CONTAINER_TYPE_NAME));
-	}
-
-	public void testContainerTypeDescriptionGetDescription() {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(CONTAINER_TYPE_NAME);
-		assertTrue(desc.getDescription().equals(DESCRIPTION));
-	}
-
-	public void testContainerTypeDescriptionGetSupportedAdapterTypes() {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(CONTAINER_TYPE_NAME);
-		final String[] adapterTypes = desc.getSupportedAdapterTypes();
-		assertTrue(adapterTypes.length > 0);
-		assertTrue(Arrays.asList(adapterTypes).contains("one"));
-	}
-
-	public void testContainerTypeDescriptionGetSupportedParemeterTypes() {
-		final ContainerTypeDescription desc = getContainerFactoryService().getDescriptionByName(CONTAINER_TYPE_NAME);
-		final Class[][] parameterTypes = desc.getSupportedParameterTypes();
-		assertTrue(parameterTypes.length == 1);
-		assertTrue(parameterTypes[0].length == 2);
-		assertTrue(parameterTypes[0][0].equals(String.class));
-		assertTrue(parameterTypes[0][1].equals(Class.class));
-
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartup.java b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartup.java
deleted file mode 100755
index 9043cac..0000000
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartup.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2004 Composent, Inc. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Composent, Inc. - initial API and implementation
- *****************************************************************************/
-
-package org.eclipse.ecf.tests.core;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ecf.core.start.IECFStart;
-
-/**
- *
- */
-public class ECFStartup implements IECFStart {
-
-	static boolean isSet = false;
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.core.start.IECFStart#startup(org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public IStatus run(IProgressMonitor monitor) {
-		isSet = true;
-		return Status.OK_STATUS;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/GenericServerCreateTest.java b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/GenericServerCreateTest.java
deleted file mode 100644
index 4345877..0000000
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/GenericServerCreateTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.eclipse.ecf.tests.core;
-
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.ecf.core.ContainerCreateException;
-import org.eclipse.ecf.core.ContainerFactory;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.IContainerFactory;
-import org.eclipse.ecf.tests.ContainerAbstractTestCase;
-
-public class GenericServerCreateTest extends ContainerAbstractTestCase {
-
-	private IContainerFactory containerFactory;
-	private IContainer container;
-	
-	protected void setUp() throws Exception {
-		super.setUp();
-		containerFactory = ContainerFactory.getDefault();
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (container != null) {
-			container.disconnect();
-			container.dispose();
-			removeFromContainerManager(container);
-		}
-		containerFactory = null;
-	}
-
-	public void testServerCreateParam1() throws Exception {
-		String id = getServerIdentity();
-		container = containerFactory.createContainer(
-				getServerContainerName(), new Object[] { id });
-		assertNotNull(container);
-		assertEquals(id, container.getID().getName());
-	}
-
-	public void testServerCreateParam2() throws Exception {
-		container = containerFactory
-				.createContainer(getServerContainerName());
-		assertNotNull(container);
-	}
-
-	public void testServerCreateMapParam1() throws Exception {
-		String serverId = getServerIdentity();
-		Map map = new HashMap();
-		map.put("id", serverId);
-		container = containerFactory.createContainer(
-				getServerContainerName(), map);
-		assertNotNull(container);
-	}
-
-	public void testServerCreateMapParam2() throws Exception {
-		Map map = new HashMap();
-		map.put("hostname", "localhost");
-		map.put("port", ""+genericServerPort);
-		map.put("path", "/foo");
-		container = containerFactory.createContainer(
-				getServerContainerName(), map);
-		assertNotNull(container);
-	}
-
-	public void testServerCreateMapParam3() throws Exception {
-		String serverId = getServerIdentity();
-		Map map = new HashMap();
-		map.put("id", serverId);
-		map.put("bindAddress", new InetSocketAddress((InetAddress) null,0).getAddress());
-		container = containerFactory.createContainer(
-				getServerContainerName(), map);
-		assertNotNull(container);
-	}
-
-
-	public void testServerCreateMapParam1Fail() throws Exception {
-		Map map = new HashMap();
-		// bogus port
-		map.put("port", new Object());
-		try {
-			containerFactory.createContainer(getServerContainerName(), map);
-			fail("create with map=" + map + " succeeded");
-		} catch (ContainerCreateException e) {
-			// succeed
-		}
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java
deleted file mode 100755
index b2b7797..0000000
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************************
-* Copyright (c) 2004 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
-
-package org.eclipse.ecf.tests.core.identity;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDCreateException;
-import org.eclipse.ecf.tests.ECFAbstractTestCase;
-
-public abstract class IDAbstractTestCase extends ECFAbstractTestCase {
-
-	private ID fixture;
-
-	protected abstract ID createID() throws IDCreateException;
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	protected void setUp() throws Exception {
-		super.setUp();
-		fixture = createID();
-		assertNotNull(fixture);
-	}
-
-	/* (non-Javadoc)
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		fixture = null;
-	}
-
-	protected ID getFixture() {
-		return fixture;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
deleted file mode 100644
index 7509f5c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-* Copyright (c) 2011 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
-package org.eclipse.ecf.tests.core.identity;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDCreateException;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.identity.URIID;
-
-public class URIIDTest extends IDAbstractTestCase {
-
-	public static final String URIIDNAMESPACE = URIID.class.getName();
-	public static final String URI1 = "http://lala/lala/lala";
-	public static final String URI2 = "zooo:barbarbarbarbarbarbarbar";
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.tests.IDTestCase#createID()
-	 */
-	protected ID createID() throws IDCreateException {
-		return createID(URI1);
-	}
-
-	protected ID createID(String val) throws IDCreateException {
-		//return IDFactory.getDefault().createID(URIIDNAMESPACE,val);
-		return IDFactory.getDefault().createStringID(val);
-	}
-
-	// The tests below are commented out because the Platform is using an older version of ECF
-	// core identity, and these tests are not supported in that older version
-	public void testCreate() throws Exception {
-//		final ID newID = createID();
-//		assertNotNull(newID);
-	}
-
-	/*
-	public void testNullCreate() throws Exception {
-		try {
-			createID(null);
-			fail();
-		} catch (final IDCreateException e) {
-			// success
-		}
-	}
-
-	public void testGetName() throws Exception {
-		final ID id = createID(URI1);
-		assertTrue(id.getName().equals(URI1));
-	}
-
-	public void testToExternalForm() throws Exception {
-		final ID id = createID(URI1);
-		assertNotNull(id.toExternalForm());
-	}
-
-	public void testToString() throws Exception {
-		final ID id = createID(URI1);
-		assertNotNull(id.toString());
-	}
-
-	public void testIsEqual() throws Exception {
-		final ID id1 = createID();
-		final ID id2 = createID();
-		assertTrue(id1.equals(id2));
-	}
-
-	public void testHashCode() throws Exception {
-		final ID id1 = createID();
-		final ID id2 = createID();
-		assertTrue(id1.hashCode() == id2.hashCode());
-	}
-
-	public void testCompareToEqual() throws Exception {
-		final ID id1 = createID();
-		final ID id2 = createID();
-		assertTrue(id1.compareTo(id2) == 0);
-		assertTrue(id2.compareTo(id1) == 0);
-	}
-
-	public void testCompareToNotEqual() throws Exception {
-		final ID id1 = createID(URI1);
-		final ID id2 = createID(URI2);
-		assertTrue(id1.compareTo(id2) < 0);
-		assertTrue(id2.compareTo(id1) > 0);
-	}
-
-	public void testGetNamespace() throws Exception {
-		final ID id = createID();
-		final Namespace ns = id.getNamespace();
-		assertNotNull(ns);
-	}
-
-	public void testEqualNamespaces() throws Exception {
-		final ID id1 = createID();
-		final ID id2 = createID();
-		final Namespace ns1 = id1.getNamespace();
-		final Namespace ns2 = id2.getNamespace();
-		assertTrue(ns1.equals(ns2));
-		assertTrue(ns2.equals(ns2));
-	}
-
-	public void testSerializable() throws Exception {
-		final ByteArrayOutputStream buf = new ByteArrayOutputStream();
-		final ObjectOutputStream out = new ObjectOutputStream(buf);
-		try {
-			out.writeObject(createID());
-		} catch (final NotSerializableException ex) {
-			fail(ex.getLocalizedMessage());
-		} finally {
-			out.close();
-		}
-	}
-
-	public void testCreateFromExternalForm() throws Exception {
-		final ID id1 = createID();
-		final String externalForm = id1.toExternalForm();
-		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
-		assertTrue(id1.equals(id2));
-	}
-	
-	public void testCreateFromURIForm() throws Exception {
-		final ID id1 = IDFactory.getDefault().createID(URIIDNAMESPACE,new Object[] { new URI(URI1) });
-		final String externalForm = id1.toExternalForm();
-		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
-		assertTrue(id1.equals(id2));
-	}
-	*/
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/Base64Test.java b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/Base64Test.java
deleted file mode 100755
index b30e9dd..0000000
--- a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/Base64Test.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/****************************************************************************
-* Copyright (c) 2004 Composent, Inc. and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-* Contributors:
-*    Composent, Inc. - initial API and implementation
-*****************************************************************************/
-
-package org.eclipse.ecf.tests.core.util;
-
-import org.eclipse.ecf.core.util.Base64;
-
-import junit.framework.TestCase;
-
-public class Base64Test extends TestCase {
-
-	private static final String INPUT = "the quick brown fox jumped over the lazy dog";
-	
-	protected String encode() {
-		return Base64.encode(INPUT.getBytes());
-	}
-	
-	public void testEncode() {
-		String encoded = encode();
-		assertNotNull(encoded);
-		assertTrue(encoded.length() > 0);
-	}
-	
-	public void testDecode() {
-		String encoded = encode();
-		byte [] bytes = Base64.decode(encoded);
-		assertNotNull(bytes);
-		assertTrue(INPUT.equals(new String(bytes)));
-	}
-}
diff --git a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/.gitignore b/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/.gitignore
index 5e56e04..167fb2c 100644
--- a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/.gitignore
+++ b/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/.gitignore
@@ -1 +1,2 @@
 /bin
+/bin
diff --git a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/Activator.class b/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/Activator.class
deleted file mode 100644
index d954922..0000000
--- a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/Activator.class
+++ /dev/null
Binary files differ
diff --git a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Template.class b/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Template.class
deleted file mode 100644
index 8ff85da..0000000
--- a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Template.class
+++ /dev/null
Binary files differ
diff --git a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Wizard.class b/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Wizard.class
deleted file mode 100644
index 5572460..0000000
--- a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Wizard.class
+++ /dev/null
Binary files differ
diff --git a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Template.class b/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Template.class
deleted file mode 100644
index 277a08a..0000000
--- a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Template.class
+++ /dev/null
Binary files differ
diff --git a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Wizard.class b/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Wizard.class
deleted file mode 100644
index 29ebc04..0000000
--- a/tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Wizard.class
+++ /dev/null
Binary files differ
