Merge remote-tracking branch 'origin/master' into 424059

Conflicts:
	framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF
	osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
	providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF

merged manually by sbl

Change-Id: If086dde4fffb137f44a48d183f6280f068c8eb17
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