diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.classpath b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.classpath
deleted file mode 100644
index 2fbb7a2..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.gitignore b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
deleted file mode 100644
index 1acd148..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.osgi.services.discovery.local</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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 5eedff0..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,69 +0,0 @@
-#Tue Sep 15 21:51:34 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/META-INF/MANIFEST.MF
deleted file mode 100644
index 4916da6..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.osgi.services.discovery.local
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.osgi.services.discovery.local.Activator
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Import-Package: javax.xml.parsers,
- org.eclipse.ecf.osgi.services.discovery,
- org.eclipse.osgi.framework.console;version="1.0.0",
- org.osgi.framework;version="1.4.0",
- org.osgi.service.log;version="1.3.0",
- org.osgi.util.tracker;version="1.4.0",
- org.w3c.dom
-Bundle-ActivationPolicy: lazy
-Bundle-Vendor: %pluginProvider
-Export-Package: org.eclipse.ecf.osgi.services.discovery.local
-Bundle-Localization: plugin
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/about.html b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/about.html
deleted file mode 100644
index ada977b..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/about.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!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>August 25, 2006</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&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>OSGi Materials</h4>
-
-<p>All files in the following sub-directories (and their sub-directories):</p>
-
-<ul>
-	<li>org/osgi</li>
-</ul>
-
-<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>
-
-<blockquote>
-Copyright (c) 2000, 2006
-<br /><br />
-OSGi Alliance
-Bishop Ranch 6<br/>
-2400 Camino Ramon, Suite 375<br/>
-San Ramon, CA 94583 USA
-<br /><br />
-All Rights Reserved.
-</blockquote>
-
-<p>The OSGi Materials are provided to you under the terms and conditions of the Apache License, Version 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE-2.0.txt" target="_blank">LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</p>
-
-<p>Implementation of certain elements of the OSGi Materials may be subject to third party intellectual property rights, including without limitation, patent rights (such a third party may
-or may not be a member of the OSGi Alliance).  The OSGi Alliance and its members are not responsible and shall not be held responsible in any manner for identifying or failing to identify any or all such third party
-intellectual property rights.</p>
-
-<small>OSGi&trade; is a trademark, registered trademark, or service mark of The OSGi Alliance in the US and other countries. Java is a trademark,
-registered trademark, or service mark of Sun Microsystems, Inc. in the US and other countries. All other trademarks, registered trademarks, or
-service marks used in the Content are the property of their respective owners and are hereby recognized.</small>
-</body>
-</html>
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/build.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/build.properties
deleted file mode 100644
index 3a2416a..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/build.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               about.html,\
-               example-service-description-generic.xml,\
-               example-service-description-r-osgi.xml
-src.includes = about.html,\
-               example-service-description-generic.xml,\
-               example-service-description-r-osgi.xml
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-generic.xml b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-generic.xml
deleted file mode 100644
index b46e9e1..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-generic.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-  <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-    <service-description>
-      <provide
-interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
-      <property
-name="ecf.sp.cid">ecftcp://localhost:3787/server</property>
-      <property name="ecf.sp.cns">org.eclipse.ecf.core.identity.StringID</property>
-      <property name="ecf.sp.ect">ecf.generic.server</property>
-   </service-description>
-</service-descriptions>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-r-osgi.xml b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-r-osgi.xml
deleted file mode 100644
index fdd42a5..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-r-osgi.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-  <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-    <service-description>
-      <provide
-interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
-      <property
-name="ecf.sp.cid">r-osgi://localhost</property>
-      <property name="ecf.sp.cns">ecf.namespace.r_osgi</property>
-      <property name="ecf.sp.ect">ecf.r_osgi.peer</property>
-   </service-description>
-</service-descriptions>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/plugin.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/plugin.properties
deleted file mode 100644
index c6cce33..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-#################################################################################
-# Copyright (c) 2009 Markus Alexander Kuppe 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
-#
-# Contributors:
-#   Markus Alexander Kuppe - initial API and implementation
-#################################################################################
-pluginName=ECF OSGi R4.2 Compendium Local Discovery
-pluginProvider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Activator.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Activator.java
deleted file mode 100644
index e9314e3..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Activator.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-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
- */
-public class Activator implements BundleActivator {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.ecf.osgi.services.discovery.local";
-
-	// The shared instance
-	private static Activator plugin;
-
-	private LogService logService = null;
-	private ServiceTracker logServiceTracker;
-
-	private BundleContext context = null;
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	private ServiceRegistration commandProviderRegistration;
-
-	private ServiceDescriptionPublisher serviceDescriptionPublisher;
-	private ServiceRegistration serviceDescriptionPublisherRegistration;
-
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext bc) throws Exception {
-		plugin = this;
-		context = bc;
-		logServiceTracker = new ServiceTracker(bc, LogService.class.getName(),
-				new ServiceTrackerCustomizer() {
-
-					private LogService logger = null;
-
-					public Object addingService(ServiceReference reference) {
-						if (logger == null) {
-							LogService logger = (LogService) context
-									.getService(reference);
-							setLogService(logger);
-							return logger;
-						}
-						return null;
-					}
-
-					public void modifiedService(ServiceReference reference,
-							Object service) {
-					}
-
-					public void removedService(ServiceReference reference,
-							Object service) {
-						context.ungetService(reference);
-						ServiceReference serviceRef = context
-								.getServiceReference(LogService.class.getName());
-						if (serviceRef == null) {
-							setLogService(null);
-						} else {
-							setLogService((LogService) context
-									.getService(serviceRef));
-						}
-					}
-
-				});
-		logServiceTracker.open();
-		discovery = new FileBasedDiscoveryImpl(bc, logService);
-		discovery.init();
-
-		commandProviderRegistration = context.registerService(
-				CommandProvider.class.getName(), new DiscoveryCommandProvider(
-						discovery), null);
-
-		// Register servicedescription publisher
-		serviceDescriptionPublisher = new ServiceDescriptionPublisher(discovery);
-		serviceDescriptionPublisherRegistration = context.registerService(
-				IServiceEndpointDescriptionPublisher.class.getName(),
-				serviceDescriptionPublisher, null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		if (commandProviderRegistration != null) {
-			commandProviderRegistration.unregister();
-			commandProviderRegistration = null;
-		}
-		if (serviceDescriptionPublisherRegistration != null) {
-			serviceDescriptionPublisherRegistration.unregister();
-			serviceDescriptionPublisherRegistration = null;
-		}
-		if (serviceDescriptionPublisher != null) {
-			serviceDescriptionPublisher.close();
-			serviceDescriptionPublisher = null;
-		}
-		logServiceTracker.close();
-		logServiceTracker = null;
-		discovery.destroy();
-		discovery = null;
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * 
-	 * @param loggerLogService
-	 *            instance to set
-	 */
-	void setLogService(LogService logger) {
-		logService = logger;
-		FileBasedDiscoveryImpl.setLogService(logService);
-	}
-
-	LogService getLogService() {
-		return logService;
-	}
-
-	public BundleContext getBundleContext() {
-		return context;
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/BundleTrackerImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/BundleTrackerImpl.java
deleted file mode 100644
index 731df71..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/BundleTrackerImpl.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleEvent;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.BundleTrackerCustomizer;
-import org.xml.sax.SAXException;
-
-public class BundleTrackerImpl implements BundleTrackerCustomizer {
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	private static final String REMOTESERVICE_LOCATION = "OSGI-INF"
-			+ File.separator + "remote-service";
-
-	private static final String REMOTESERVICE_MANIFESTHEADER = "Remote-Service";
-
-	// stores the bundle ids of the bundles that are checked for the static
-	// discovery informations
-	private Collection checkedBundles = Collections
-			.synchronizedList(new ArrayList());
-
-	private Map publishedServicesPerBundle = Collections
-			.synchronizedMap(new HashMap());
-
-	/**
-	 * 
-	 * @param disco
-	 *            the FileBasedDiscovery implementation that publishes and
-	 *            unpublishes file based seds.
-	 */
-	public BundleTrackerImpl(FileBasedDiscoveryImpl disco) {
-		discovery = disco;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.BundleTrackerCustomizer#addingBundle(org.osgi.framework.Bundle,
-	 *      org.osgi.framework.BundleEvent)
-	 */
-	public Object addingBundle(Bundle bundle, BundleEvent event) {
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO, "Adding bundle "
-				+ bundle.getSymbolicName() + " with event " + event);
-		checkedBundles.add(String.valueOf(bundle.getBundleId()));
-		return checkBundleAndPublishServices(bundle);
-	}
-
-	/**
-	 * @param bundle
-	 * @return
-	 */
-	private Bundle checkBundleAndPublishServices(Bundle bundle) {
-		Collection /* <URL> */remoteServiceFiles = null;
-		Collection /* <ServiceEndpointDescription> */publishedServices = null;
-		if ((remoteServiceFiles = getRemoteServiceInformationFilesFromBundle(bundle))
-				.size() == 0) {
-			return null;
-		}
-		Iterator/* <URL> */it = remoteServiceFiles.iterator();
-		publishedServices = new ArrayList();
-		while (it.hasNext()) {
-			// each file may contain more than ServiceDescription
-			Collection seds = createSEDsFromFile((URL) it.next());
-			Iterator /* <ServiceEndpointDescription> */sedIterator = seds
-					.iterator();
-			while (sedIterator.hasNext()) {
-				// publish each of them
-				ServiceEndpointDescription next = (ServiceEndpointDescription) sedIterator
-						.next();
-				discovery.publishService(next);
-				publishedServices.add(next);
-			}
-		}
-		publishedServicesPerBundle.put(bundle, publishedServices);
-		return bundle;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.BundleTrackerCustomizer#modifiedBundle(org.osgi.framework.Bundle,
-	 *      org.osgi.framework.BundleEvent, java.lang.Object)
-	 */
-	public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) {
-		// ignored
-
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.BundleTrackerCustomizer#removedBundle(org.osgi.framework.Bundle,
-	 *      org.osgi.framework.BundleEvent, java.lang.Object)
-	 */
-	public void removedBundle(Bundle bundle, BundleEvent event, Object object) {
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO, "Removing bundle "
-				+ bundle.getSymbolicName() + " with event " + event);
-		Collection publishedServices = (Collection) publishedServicesPerBundle
-				.get(bundle);
-		if (publishedServices != null) {
-			Iterator it = publishedServices.iterator();
-			while (it.hasNext()) {
-				discovery.unpublishService((ServiceEndpointDescription) it
-						.next());
-			}
-		}
-		publishedServicesPerBundle.remove(bundle);
-		checkedBundles.remove(String.valueOf(bundle.getBundleId()));
-	}
-
-	/**
-	 * 
-	 * @param bundle
-	 *            the bundle to check
-	 * @return the URL list of Distributed OSGi compliant xml files. The list is
-	 *         empty if none are found.
-	 */
-	private Collection getRemoteServiceInformationFilesFromBundle(
-			final Bundle bundle) {
-		Collection result = new ArrayList();
-		String remote_services = (String) bundle.getHeaders().get(
-				REMOTESERVICE_MANIFESTHEADER);
-		if (remote_services != null) {
-			// the default has been overwritten
-			StringTokenizer tokenizer = new StringTokenizer(remote_services,
-					",");
-			while (tokenizer.hasMoreElements()) {
-				handleRemoteService(bundle, result, tokenizer);
-			}
-		} else {
-			// default location
-			Enumeration bundleEntries = bundle.findEntries(
-					REMOTESERVICE_LOCATION, "*.xml", true);
-			if (bundleEntries != null) {
-				while (bundleEntries.hasMoreElements()) {
-					result.add(bundleEntries.nextElement());
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @param bundle
-	 * @param result
-	 * @param tokenizer
-	 */
-	private void handleRemoteService(final Bundle bundle, Collection result,
-			StringTokenizer tokenizer) {
-		String token = tokenizer.nextToken().trim();
-		// fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=325664
-		int lastSlash = token.lastIndexOf("/");
-		// We set the path to '/' is not present at all in token (lastSlash == -1)
-		// or if the slash is first char (lastSlash==0)
-		String path = (lastSlash <= 0)?"/":token.substring(0,lastSlash);
-		int start = path.indexOf("${");
-		if (start >= 0) {
-			int end = path.indexOf("}");
-			String substring = path.substring(start + 2, end);
-			String property = System.getProperty(substring);
-			path = path.replaceAll("\\$\\{" + substring + "\\}", property);
-		}
-		// Also be sure to use lastSlash to get files
-		String files = token.substring(lastSlash+1,
-				token.length());
-		Enumeration enumeration = bundle.findEntries(path, files, false);
-		if (enumeration == null) {
-			// that was maybe an absolute file path so lets check that.
-			File f = new File(path + File.separator + files);
-			if (f.isFile() && f.exists()) {
-				try {
-					// we have file given
-					result.add(f.toURL());
-				} catch (MalformedURLException e) {
-					// ignore that location
-				}
-			} else if (f.isDirectory() && f.exists()) {
-				// if it is a directory and it does exist
-				addFilesToResult(result, f);
-			} else if (new File(path).isDirectory()) {
-				// if we have a directory extended with a wildcard file
-				// selector given
-				File directory = new File(path);
-				if (directory.exists() && files.equals("*.xml")) {
-					addFilesToResult(result, directory);
-				}
-			}
-		} else {
-			while (enumeration.hasMoreElements()) {
-				result.add(enumeration.nextElement());
-			}
-		}
-	}
-
-	/**
-	 * @param result
-	 * @param f
-	 */
-	private void addFilesToResult(Collection result, File f) {
-		File[] filesInTheDirectory = f.listFiles(new FilenameFilter() {
-
-			public boolean accept(File directory, String fileName) {
-				return (fileName.endsWith(".xml")) ? true : false;
-			}
-		});
-		for (int i = 0; i < filesInTheDirectory.length; i++) {
-			try {
-				result.add(filesInTheDirectory[i].toURL());
-			} catch (MalformedURLException e) {
-				// ignore the file and go on with the next one
-			}
-		}
-	}
-
-	/**
-	 * 
-	 * @param file
-	 *            the xml file containing valid Distributed OSGi service
-	 *            information
-	 * @return a ServiceEndpointDescription object containing the information
-	 *         from the file
-	 */
-	private Collection/* <ServiceEndpointDescription> */createSEDsFromFile(
-			final URL file) {
-		try {
-			InputStream inputStream = file.openStream();
-			return new ServiceDescriptionParser().load(inputStream);
-		} catch (FileNotFoundException e) {
-			log(file, e);
-		} catch (ParserConfigurationException e) {
-			log(file, e);
-		} catch (SAXException e) {
-			log(file, e);
-		} catch (IOException e) {
-			log(file, e);
-		}
-		return new ArrayList();
-	}
-
-	/**
-	 * @param file
-	 * @param e
-	 */
-	private void log(URL file, Exception e) {
-		e.printStackTrace();
-		FileBasedDiscoveryImpl.log(LogService.LOG_ERROR,
-				"Error during loading and reading of service descriptions from file "
-						+ file.getFile(), e);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DSTTracker.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DSTTracker.java
deleted file mode 100644
index 14a8e08..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DSTTracker.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-/**
- * This class monitors the lifecycle of DiscoveredServiceTrackers. They will be
- * notified on registration and modification if any service has been published.
- * 
- * TODO: replace arg0 arg names with more descriptive ones
- */
-public class DSTTracker implements ServiceTrackerCustomizer {
-
-	// Map of DiscoveredServiceTracker, property map
-	private Map /* <DiscoveredServiceTracker, Map> */dsTrackers = null;
-
-	private BundleContext context = null;
-
-	/**
-	 * 
-	 * @param ctx
-	 */
-	public DSTTracker(final BundleContext ctx) {
-		context = ctx;
-		dsTrackers = Collections.synchronizedMap(new HashMap());
-	}
-
-	/**
-	 * @return a new instance of dsTracker map
-	 */
-	public Map getDsTrackers() {
-		return new HashMap(dsTrackers);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.osgi.framework.ServiceReference)
-	 */
-	public Object addingService(final ServiceReference dstTrackerReference) {
-		DiscoveredServiceTracker tracker = (DiscoveredServiceTracker) context
-				.getService(dstTrackerReference);
-		if (!dsTrackers.keySet().contains(tracker)) {
-			FileBasedDiscoveryImpl.log(LogService.LOG_INFO,
-					"adding service tracker " + tracker);
-			addTracker(dstTrackerReference);
-			Map changedFilterCriteria = determineChangedFilterProperties(
-					tracker, dstTrackerReference);
-			FileBasedDiscoveryImpl.notifyOnAvailableSEDs(tracker,
-					changedFilterCriteria);
-			return tracker;
-		}
-		return null;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#modifiedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void modifiedService(final ServiceReference dstTrackerReference,
-			final Object arg1) {
-		DiscoveredServiceTracker tracker = (DiscoveredServiceTracker) context
-				.getService(dstTrackerReference);
-		Map changedFilterCriteria = determineChangedFilterProperties(tracker,
-				dstTrackerReference);
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO,
-				"modified service tracker " + tracker + " ;changedFilter = "
-						+ changedFilterCriteria);
-		dsTrackers.remove(tracker);
-		addTracker(dstTrackerReference);
-		FileBasedDiscoveryImpl.notifyOnAvailableSEDs(tracker,
-				changedFilterCriteria);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#removedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void removedService(final ServiceReference dstTrackerReference,
-			final Object arg1) {
-		DiscoveredServiceTracker tracker = (DiscoveredServiceTracker) context
-				.getService(dstTrackerReference);
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO,
-				"removing service tracker " + tracker);
-		dsTrackers.remove(tracker);
-	}
-
-	/**
-	 * This method fills a map with key value pairs, where the key is
-	 * {@link#DiscoveredServiceTracker.PROP_KEY_MATCH_CRITERIA_INTERFACES} or
-	 * {@linkDiscoveredServiceTracker.PROP_KEY_MATCH_CRITERIA_FILTERS} and the
-	 * value is the list of new entries or empty if nothing is new.
-	 * 
-	 * @param tracker
-	 *            the registered or modified tracker registration
-	 * @param serviceReference
-	 * @return a map that contains two entries where the value contains the
-	 *         added properties. It returns empty values if no new properties
-	 *         have been found. It returns null values if the new properties are
-	 *         null or empty
-	 */
-	private Map determineChangedFilterProperties(
-			DiscoveredServiceTracker tracker, ServiceReference serviceReference) {
-		Map result = new HashMap();
-
-		Map props = (Map) dsTrackers.get(tracker);
-		if (props != null) {
-			Collection oldInterfaceCriteria = (Collection) props
-					.get(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA);
-			Collection oldFilterCriteria = (Collection) props
-					.get(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA);
-
-			Collection newInterfaceCriteria = (Collection) serviceReference
-					.getProperty(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA);
-			Collection newFilterCriteria = (Collection) serviceReference
-					.getProperty(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA);
-
-			result.put(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA,
-					getAddedEntries(oldInterfaceCriteria, newInterfaceCriteria));
-			result.put(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA,
-					getAddedEntries(oldFilterCriteria, newFilterCriteria));
-		} else {
-			// set empty lists as values
-			result.put(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA,
-					new ArrayList());
-			result.put(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA,
-					new ArrayList());
-		}
-		return result;
-	}
-
-	/**
-	 * Compares to list and returns only those who are not in the old list. Or
-	 * it returns an empty list if nothing has been found.
-	 * 
-	 * @param oldList
-	 *            the existing set of properties
-	 * @param newList
-	 *            the new set of properties
-	 * @return a list of only new properties; empty list if no new has been
-	 *         found; null if newList is null or empty
-	 */
-	private Collection getAddedEntries(Collection oldList, Collection newList) {
-		ArrayList result = new ArrayList();
-		if (newList == null || newList.isEmpty()) {
-			return null;
-		}
-		if (oldList == null) {
-			return newList;
-		}
-		Iterator it = newList.iterator();
-		while (it.hasNext()) {
-			Object val = it.next();
-			if (!oldList.contains(val)) {
-				result.add(val);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Adds a DiscoveredServiceTracker with its properties to our map.
-	 * 
-	 * @param ref
-	 *            reference to the just registered or modified
-	 *            DiscoveredServiceTracker
-	 */
-	private void addTracker(final ServiceReference ref) {
-		// Retrieve current service properties (required later when modified to
-		// compute the actual modification)
-		Map props = new HashMap();
-		props.put(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA, ref
-				.getProperty(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA));
-
-		props.put(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA,
-				ref.getProperty(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA));
-		dsTrackers.put((DiscoveredServiceTracker) context.getService(ref),
-				props);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveredServiceNotificationImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveredServiceNotificationImpl.java
deleted file mode 100644
index bdca3ad..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveredServiceNotificationImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.Collection;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-
-public class DiscoveredServiceNotificationImpl implements
-		DiscoveredServiceNotification {
-
-	private ServiceEndpointDescription descr;
-	private int type;
-	private Collection/* String */filters;
-	private Collection/* String */interfaces;
-
-	public DiscoveredServiceNotificationImpl(ServiceEndpointDescription sed,
-			int notificationType, Collection matchingFilters,
-			Collection matchingInterfaces) {
-		descr = sed;
-		type = notificationType;
-		filters = matchingFilters;
-		interfaces = matchingInterfaces;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getServiceEndpointDescription()
-	 */
-	public ServiceEndpointDescription getServiceEndpointDescription() {
-		return descr;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getType()
-	 */
-	public int getType() {
-		return type;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getFilters()
-	 */
-	public Collection getFilters() {
-		return filters;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getInterfaces()
-	 */
-	public Collection getInterfaces() {
-		return interfaces;
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveryCommandProvider.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveryCommandProvider.java
deleted file mode 100644
index 1557f09..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveryCommandProvider.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.xml.sax.SAXException;
-
-public class DiscoveryCommandProvider implements CommandProvider {
-
-	private static final String LINE_SEPARATOR = System
-			.getProperty("line.separator"); //$NON-NLS-0$
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	public DiscoveryCommandProvider(FileBasedDiscoveryImpl discovery) {
-		super();
-		this.discovery = discovery;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.osgi.framework.console.CommandProvider#getHelp()
-	 */
-	public String getHelp() {
-		return LINE_SEPARATOR //$NON-NLS-0$
-				+ "---ECF File-based Service Discovery---" //$NON-NLS-1$
-				+ LINE_SEPARATOR //$NON-NLS-0$
-				+ "\tpublish <URL of ServiceEndpointDescriptor XML> -- publish the given Service Endpoint Descriptor\n\tunpublish <URL of ServiceEndpointDescriptor XML> -- unpublish the given Service Endpoint Descriptor" //$NON-NLS-1$
-				+ LINE_SEPARATOR; //$NON-NLS-0$
-	}
-
-	public void _publish(CommandInterpreter ci) {
-		Collection seds = getServiceEndpointDescriptions(ci);
-		for (Iterator iterator = seds.iterator(); iterator.hasNext();) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) iterator
-					.next();
-			discovery.publishService(sed);
-		}
-	}
-
-	public void _unpublish(CommandInterpreter ci) {
-		Collection seds = getServiceEndpointDescriptions(ci);
-		for (Iterator iterator = seds.iterator(); iterator.hasNext();) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) iterator
-					.next();
-			discovery.unpublishService(sed);
-		}
-	}
-
-	private Collection getServiceEndpointDescriptions(CommandInterpreter ci) {
-		String path = ci.nextArgument();
-		try {
-			URL url = new URL(path);
-			InputStream inputStream = url.openStream();
-			return new ServiceDescriptionParser().load(inputStream);
-		} catch (IOException e) {
-			ci.print("Error loading service endpoint descriptions from file="+path); //$NON-NLS-1$
-		} catch (ParserConfigurationException e) {
-			ci.print("Error setting up parser"); //$NON-NLS-1$
-		} catch (SAXException e) {
-			ci.print("Error parsing service endpoint descriptions from file="+path); //$NON-NLS-1$
-		}
-		return new ArrayList();
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/FileBasedDiscoveryImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/FileBasedDiscoveryImpl.java
deleted file mode 100644
index 29ede37..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/FileBasedDiscoveryImpl.java
+++ /dev/null
@@ -1,469 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.BundleTracker;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class FileBasedDiscoveryImpl {
-	/**
-	 * ServiceRegistration property identifying Discovery's default strategy for
-	 * distribution of published service information. It's up to the Discovery
-	 * service to provide and support this property. Value of this property is
-	 * of type String.
-	 * 
-	 * TODO do we support this property?
-	 */
-	public static final String PROP_KEY_PUBLISH_STRATEGY = "osgi.discovery.strategy.publication";
-
-	/**
-	 * Constant for a "push" publication strategy: published service information
-	 * is actively pushed to the network for discovery.
-	 */
-	public static final String PROP_VAL_PUBLISH_STRATEGY_PUSH = "push";
-
-	/**
-	 * Constant for a "pull" publication strategy: published service information
-	 * is available just upon lookup requests.
-	 */
-	public static final String PROP_VAL_PUBLISH_STRATEGY_PULL = "pull";
-
-	private static BundleContext context;
-
-	private static LogService logService;
-
-	private static Map /* <SLPServiceDescriptionAdapter> */inMemoryCache = Collections
-			.synchronizedMap(new HashMap());
-
-	private ServiceTracker spTracker = null;
-
-	private DSTTracker discoTrackerCustomizer = null;
-
-	private ServiceTracker discoTracker = null;
-
-	private BundleTracker bt = null;
-
-	/**
-	 * Constructor.
-	 * 
-	 * @param bc
-	 *            the BundleContext of the containing bundle.
-	 * @param logger
-	 *            a LogService instance
-	 */
-	public FileBasedDiscoveryImpl(final BundleContext bc,
-			final LogService logger) {
-		logService = logger;
-		context = bc;
-	}
-
-	/**
-	 * Initialization method called by Activator.
-	 */
-	public void init() {
-		log(LogService.LOG_DEBUG, "init");
-		discoTrackerCustomizer = new DSTTracker(context);
-		discoTracker = new ServiceTracker(context,
-				DiscoveredServiceTracker.class.getName(),
-				discoTrackerCustomizer);
-		discoTracker.open();
-		spTracker = new ServiceTracker(context,
-				ServicePublication.class.getName(),
-				new ServicePublicationTracker(context, this));
-		spTracker.open();
-		// We track active and starting bundles as per Remote Services Admin spec
-		bt = new BundleTracker(context, Bundle.ACTIVE | Bundle.STARTING, new BundleTrackerImpl(this));
-		bt.open();
-	}
-
-	/**
-	 * Shutdown method called by Activator.
-	 */
-	public void destroy() {
-		log(LogService.LOG_DEBUG, "destroy");
-		bt.close();
-		discoTracker.close();
-		spTracker.close();
-	}
-
-	/**
-	 * Publishes a service.
-	 * 
-	 * TODO: publish also for every endpoint interface TODO: use
-	 * endpointLocation as service URL if given
-	 * 
-	 * @param javaInterfaces
-	 *            collection of java interface names
-	 * @param javaInterfacesAndVersions
-	 *            collection of versions, where the order of the version must
-	 *            match the order of the java interfaces
-	 * @param javaInterfacesAndEndpointInterfaces
-	 *            optional collection of endpointinterface names, where the
-	 *            order must match the order of the java interfaces
-	 * @param properties
-	 *            map of properties; keys must be Strings, values are of type
-	 *            object
-	 * @param strategy
-	 *            optional string that defines the publish strategy
-	 * @return a ServiceEndpointDescription or null, if an error occurred during
-	 *         creation of the ServiceDescription
-	 */
-	protected ServiceEndpointDescription publishService(
-			Collection/* <String> */javaInterfaces,
-			Collection/* <String> */javaInterfacesAndVersions,
-			Collection/* <String> */javaInterfacesAndEndpointInterfaces,
-			Map/* <String, Object> */properties, String strategy,
-			String endpointID) {
-		ServiceEndpointDescription svcDescr = new ServiceEndpointDescriptionImpl(
-				javaInterfaces, javaInterfacesAndVersions,
-				javaInterfacesAndEndpointInterfaces, properties, endpointID);
-		storeAndNotify(svcDescr);
-		return svcDescr;
-	}
-
-	private void storeAndNotify(final ServiceEndpointDescription svcDescr) {
-		// add it to the available Services
-		inMemoryCache.put(svcDescr.getEndpointID(), svcDescr);
-		// inform the listener about the new available service
-		notifyListenersOnNewServiceDescription(svcDescr);
-	}
-
-	protected void publishService(final ServiceEndpointDescription svcDescr) {
-		storeAndNotify(svcDescr);
-	}
-
-	/**
-	 * Unpublishes a given service description.
-	 * 
-	 * @param serviceDescription
-	 *            the service to unpublish
-	 * @throws IllegalArgumentException
-	 *             if serviceDescription is null or does not contain at least
-	 *             one java interface
-	 */
-	protected void unpublishService(
-			final ServiceEndpointDescription serviceDescription) {
-		validateServiceDescription(serviceDescription);
-		log(LogService.LOG_DEBUG,
-				"unpublish service " + serviceDescription.toString());
-		inMemoryCache.remove(serviceDescription.getEndpointID());
-		notifyListenersOnRemovedServiceDescription(serviceDescription);
-	}
-
-	/**
-	 * 
-	 */
-	protected static synchronized void log(int logLevel, String msg) {
-		if (logService != null) {
-			logService.log(logLevel, msg);
-		}
-	}
-
-	/**
-	 * 
-	 */
-	protected static synchronized void log(int logLevel, String msg, Exception e) {
-		if (logService != null) {
-			logService.log(logLevel, msg, e);
-		}
-	}
-
-	/**
-	 * @param logger
-	 *            the reference to the LogService which get called for logging
-	 * 
-	 */
-	public static void setLogService(final LogService logger) {
-		logService = logger;
-	}
-
-	/**
-	 * This method checks if a given ServiceEndpointDescrioption follows the
-	 * minimal requirements.
-	 * 
-	 * @param serviceDescription
-	 *            the given ServiceEndpointDescription
-	 * @throws IllegalArgumentException
-	 *             if serviceDescription is null or does not contain at least
-	 *             one java interface
-	 */
-	protected void validateServiceDescription(
-			ServiceEndpointDescription serviceDescription) {
-		if (serviceDescription == null)
-			throw new IllegalArgumentException(
-					"serviceDescription must not be null.");
-		if (serviceDescription.getProvidedInterfaces() == null) {
-			throw new IllegalArgumentException(
-					"Given set of Java interfaces must not be null");
-		}
-		String ifName = (String) serviceDescription.getProvidedInterfaces()
-				.iterator().next();
-		if (serviceDescription.getProvidedInterfaces() == null
-				|| serviceDescription.getProvidedInterfaces().size() <= 0
-				|| ifName == null || ifName.length() <= 0) {
-			throw new IllegalArgumentException(
-					"serviceDescription must contain at least one service interface name.");
-		}
-	}
-
-	/**
-	 * Returns a Map of all registered DiscoveredServiceTracker trackers.
-	 * 
-	 * TODO should it be a copy of the map for thread safety? This could lead to
-	 * failures during usage of the copy. But we do not block the Tracker,
-	 * registrations and deregistrations of DSTs.
-	 * 
-	 * @return a copied Map of all registered DiscoveredServiceTracker trackers.
-	 */
-	protected Map getRegisteredServiceTracker() {
-		if (discoTrackerCustomizer == null) {
-			return new HashMap();
-		}
-		return new HashMap(discoTrackerCustomizer.getDsTrackers());
-	}
-
-	/**
-	 * This method informs a just registered or modified service tracker if a
-	 * service matches its properties.
-	 * 
-	 * TODO: add suppression of informing trackers twice for the same SED
-	 * 
-	 * @param tracker
-	 *            the just registered or modified DiscoveredServiceTracker
-	 */
-	public static void notifyOnAvailableSEDs(
-			final DiscoveredServiceTracker tracker, final Map matchingCriteria) {
-		List cachedServices = new ArrayList(inMemoryCache.values());
-		if (cachedServices != null) {
-			Collection matchingInterfaces = new ArrayList();
-			Collection matchingFilters = new ArrayList();
-			Iterator it = cachedServices.iterator();
-			while (it.hasNext()) {
-				ServiceEndpointDescription svcDescr = (ServiceEndpointDescription) it
-						.next();
-				matchingInterfaces.clear();
-				matchingFilters.clear();
-				if (isTrackerInterestedInSED(svcDescr, matchingCriteria,
-						matchingInterfaces, matchingFilters)) {
-					tracker.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr, DiscoveredServiceNotification.AVAILABLE,
-							matchingInterfaces, matchingFilters));
-				}
-			}
-		}
-	}
-
-	/**
-	 * 
-	 * @param svcDescr
-	 */
-	protected void notifyListenersOnNewServiceDescription(
-			ServiceEndpointDescription svcDescr) {
-		Collection matchingInterfaces = new ArrayList();
-		Collection matchingFilters = new ArrayList();
-		Map discoveredSTs = getRegisteredServiceTracker();
-		Iterator it = discoveredSTs.keySet().iterator();
-		while (it.hasNext()) {
-			DiscoveredServiceTracker st = (DiscoveredServiceTracker) it.next();
-			Map trackerProps = (Map) discoveredSTs.get(st);
-			matchingInterfaces.clear();
-			matchingFilters.clear();
-			if (isTrackerInterestedInSED(svcDescr, trackerProps,
-					matchingInterfaces, matchingFilters)) {
-				try {
-					st.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr, DiscoveredServiceNotification.AVAILABLE,
-							matchingInterfaces, matchingFilters));
-				} catch (Exception e) {
-					log(LogService.LOG_ERROR,
-							"Exceptions where thrown while notifying about a new remote service.",
-							e);
-				}
-
-			}
-		}
-	}
-
-	/**
-	 * Notifies all DSTTrackers about an unpublished service.
-	 * 
-	 * @param svcDescr
-	 *            the unpublished ServiceEndpointDescription
-	 */
-	protected void notifyListenersOnRemovedServiceDescription(
-			ServiceEndpointDescription svcDescr) {
-		Collection matchingInterfaces = new ArrayList();
-		Collection matchingFilters = new ArrayList();
-		Map discoveredSTs = getRegisteredServiceTracker();
-		Iterator it = discoveredSTs.keySet().iterator();
-		while (it.hasNext()) {
-			DiscoveredServiceTracker st = (DiscoveredServiceTracker) it.next();
-			Map trackerProps = (Map) discoveredSTs.get(st);
-			matchingInterfaces.clear();
-			matchingFilters.clear();
-			// inform it if the listener has no Filter set
-			// or the filter matches the criteria
-			if (isTrackerInterestedInSED(svcDescr, trackerProps,
-					matchingInterfaces, matchingFilters)) {
-				try {
-					st.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr,
-							DiscoveredServiceNotification.UNAVAILABLE,
-							matchingInterfaces, matchingFilters));
-				} catch (Exception e) {
-					log(LogService.LOG_ERROR,
-							"Exceptions where thrown while notifying about removal of a remote service.",
-							e);
-				}
-			}
-		}
-	}
-
-	/**
-	 * 
-	 * @param svcDescr
-	 */
-	protected void notifyListenersOnModifiedServiceDescription(
-			ServiceEndpointDescription svcDescr) {
-		Collection matchingInterfaces = new ArrayList();
-		Collection matchingFilters = new ArrayList();
-		Map discoveredSTs = getRegisteredServiceTracker();
-		Iterator it = discoveredSTs.keySet().iterator();
-		while (it.hasNext()) {
-			DiscoveredServiceTracker st = (DiscoveredServiceTracker) it.next();
-			Map trackerProps = (Map) discoveredSTs.get(st);
-			// inform it if the listener has no Filter set
-			// or the filter matches the criteria
-			matchingInterfaces.clear();
-			matchingFilters.clear();
-			if (isTrackerInterestedInSED(svcDescr, trackerProps,
-					matchingInterfaces, matchingFilters)) {
-				try {
-					st.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr, DiscoveredServiceNotification.MODIFIED,
-							matchingInterfaces, matchingFilters));
-				} catch (Exception e) {
-					log(LogService.LOG_ERROR,
-							"Exceptions where thrown while notifying about modification of a remote service.",
-							e);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Compares the properties of a registered DiscoveredServiceTracker with the
-	 * SED properties. IF they match, it returns true.
-	 * 
-	 * @param svcDescr
-	 * @param trackerProperties
-	 * @param matchingInterfaces
-	 *            (an out-argument) a collection which will contain all
-	 *            tracker's interface criteria matching with given
-	 *            ServiceEndpointDescription object
-	 * @param matchingFilters
-	 *            (an out-argument) a collection which will contain all
-	 *            tracker's filter criteria matching with given
-	 *            ServiceEndpointDescription object
-	 * @return true if the service tracker properties match the SEDs properties,
-	 *         else false
-	 */
-	public static boolean isTrackerInterestedInSED(
-			ServiceEndpointDescription svcDescr,
-			Map/* String, Object */trackerProperties,
-			Collection matchingInterfaces, Collection matchingFilters) {
-		Collection interfaceCriteria = (Collection) trackerProperties
-				.get(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA);
-		Collection filter = (Collection) trackerProperties
-				.get(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA);
-		boolean notify = false;
-		if (interfaceCriteria == null && filter == null) {
-			notify = true;
-		} else {
-			// if interface-criteria are defined on tracker
-			if (interfaceCriteria != null && !interfaceCriteria.isEmpty()) {
-				// then check whether tracker's interface-list contains one of
-				// SED's interfaces
-				Collection svcInterfaces = svcDescr.getProvidedInterfaces();
-				if (svcInterfaces == null) {
-					throw new RuntimeException("no interfaces provided");
-				}
-				Collection intersectionResult = new HashSet(interfaceCriteria);
-				intersectionResult.retainAll(svcInterfaces);
-				if (intersectionResult.size() > 0) {
-					notify = true;
-					if (matchingInterfaces != null) {
-						matchingInterfaces.addAll(intersectionResult);
-					}
-				}
-			}
-
-			// if filter-criteria are defined on tracker
-			if (filter != null && !filter.isEmpty()) {
-				// check whether one filter of tracker's filter-list matches to
-				// SED's properties
-				Iterator it = filter.iterator();
-				while (it.hasNext()) {
-					String currentFilter = (String) it.next();
-					try {
-						Filter f = context.createFilter(currentFilter);
-						if (f.match(new Hashtable(svcDescr.getProperties()))) {
-							notify = true;
-							if (matchingFilters != null) {
-								matchingFilters.add(currentFilter);
-							}
-						}
-					} catch (InvalidSyntaxException e) {
-						throw new RuntimeException(e.getMessage());
-					} catch (IllegalStateException isex) {
-						// TODO: check whether this catch block is needed.
-						isex.printStackTrace();
-						// ignore it
-					}
-				}
-			}
-		}
-		return notify;
-	}
-
-	/**
-	 * Returns the list of known services without the locally published ones.
-	 * 
-	 * @return a list of all remote services
-	 */
-	public Map getCachedServices() {
-		return new HashMap(inMemoryCache);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/IServiceEndpointDescriptionPublisher.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/IServiceEndpointDescriptionPublisher.java
deleted file mode 100644
index 43f2368..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/IServiceEndpointDescriptionPublisher.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * 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.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-public interface IServiceEndpointDescriptionPublisher {
-
-	public void publishServiceDescription(InputStream serviceEndpointDescriptionFile)
-			throws IOException;
-
-	public void publishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceDescription);
-
-	public void unpublishServiceDescription(InputStream serviceEndpointDescriptionFile)
-			throws IOException;
-
-	public void unpublishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceDescription);
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Messages.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Messages.java
deleted file mode 100644
index e845356..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Messages.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.ecf.osgi.services.discovery.local.messages"; //$NON-NLS-1$
-
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
-
-	private Messages() {
-	}
-
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/OneInterfaceSED.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/OneInterfaceSED.java
deleted file mode 100644
index e318d6c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/OneInterfaceSED.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.Collection;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-
-/**
- * 
- * 
- * TODO Add Javadoc comment for this type.
- * 
- */
-public class OneInterfaceSED {
-
-	private static final String LINE_SEPARATOR = System
-			.getProperty("line.separator");
-
-	private String interfaceName = null;
-	private String version = null;
-	private String endpointInterface = null;
-
-	/**
-	 * Adds a property to the existing map.
-	 * 
-	 * @param key
-	 *            property key
-	 * @param value
-	 *            the value of the key
-	 */
-	public void addProperty(final String key, final Object value) {
-
-		if (key.equals(ServicePublication.SERVICE_INTERFACE_NAME)) {
-			interfaceName = (String) value;
-		}
-
-		if (key.equals(ServicePublication.ENDPOINT_INTERFACE_NAME)) {
-			if (!((String) value).startsWith(interfaceName)) {
-				endpointInterface = combineValue((String) value);
-			}
-		}
-
-		if (key.equals(ServicePublication.SERVICE_INTERFACE_VERSION)) {
-			if (!((String) value).startsWith(interfaceName)) {
-				version = combineValue((String) value);
-			}
-		}
-
-		// properties.put(key, value);
-	}
-
-	/**
-	 * Preceding a value with the interface name and a separator.
-	 * 
-	 * @param value
-	 *            to append
-	 * @return the complete string
-	 */
-	private String combineValue(final String value) {
-		return interfaceName + ServicePublication.SEPARATOR + value;
-	}
-
-	/**
-	 * @return the interfaceName
-	 */
-	public String getInterfaceName() {
-		return interfaceName;
-	}
-
-	/**
-	 * @param interfaceName
-	 *            the interfaceName to set
-	 */
-	public void setInterfaceName(final String interfaceName) {
-		this.interfaceName = interfaceName;
-	}
-
-	/**
-	 * @return the version
-	 */
-	public String getVersion() {
-		return version;
-	}
-
-	/**
-	 * @param version
-	 *            the version to set
-	 */
-	public void setVersion(final String version) {
-		this.version = version;
-	}
-
-	/**
-	 * @return the endpointInterface
-	 */
-	public String getEndpointInterface() {
-		return endpointInterface;
-	}
-
-	/**
-	 * @param endpointInterface
-	 *            the endpointInterface to set
-	 */
-	public void setEndpointInterface(final String endpointInterface) {
-		this.endpointInterface = endpointInterface;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(final Object serviceDescription) {
-		if (!(serviceDescription instanceof ServiceEndpointDescription)) {
-			return false;
-		}
-
-		ServiceEndpointDescription descr = (ServiceEndpointDescription) serviceDescription;
-
-		Collection descrInterfaces = descr.getProvidedInterfaces();
-		if (descrInterfaces == null) {
-			throw new RuntimeException(
-					"The service does not contain requiered parameter interfaces. "
-							+ descr);
-		}
-
-		// compare interface names
-		if (!descrInterfaces.contains(interfaceName)) {
-			return false;
-		}
-
-		// compare versions
-		if ((version != null && (!version.equals(descr
-				.getVersion(interfaceName))))
-				|| (version == null && descr.getVersion(interfaceName) != null)) {
-			return false;
-		}
-
-		// compare endpoint interfaces
-		if ((endpointInterface != null && (!endpointInterface.equals(descr
-				.getEndpointInterfaceName(interfaceName))))
-				|| (endpointInterface == null && descr
-						.getEndpointInterfaceName(interfaceName) != null)) {
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		int result = 17;
-
-		result = 37 * result + interfaceName.hashCode();
-
-		if (endpointInterface != null) {
-			result = 37 * result + endpointInterface.hashCode();
-		}
-
-		if (version != null) {
-			result = 37 * result + version.hashCode();
-		}
-
-		return result;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		sb.append("\tinterface=").append(interfaceName).append(LINE_SEPARATOR);
-		if (version != null) {
-			sb.append("\tversion=").append(version).append(LINE_SEPARATOR);
-		}
-		if (endpointInterface != null) {
-			sb.append("\tendpointInterface=").append(endpointInterface)
-					.append(LINE_SEPARATOR);
-		}
-		return sb.toString();
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionParser.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionParser.java
deleted file mode 100644
index 977de79..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionParser.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.Entity;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
-
-public class ServiceDescriptionParser {
-
-	private static final String SERVICEDESCRIPTION_ELEMENT = "service-description";
-
-	private static final String PROVIDE_ELEMENT = "provide";
-	private static final String PROPERTY_ELEMENT = "property";
-
-	private static final String INTERFACE_ATTR = "interface";
-	private static final String NAME_ATTR = "name";
-	private static final String TYPE_ATTR = "type";
-
-	private void findElementsNamed(Node top, String name, List aList) {
-		int type = top.getNodeType();
-		switch (type) {
-		case Node.DOCUMENT_TYPE_NODE:
-			// Print entities if any
-			NamedNodeMap nodeMap = ((DocumentType) top).getEntities();
-			for (int i = 0; i < nodeMap.getLength(); i++) {
-				Entity entity = (Entity) nodeMap.item(i);
-				findElementsNamed(entity, name, aList);
-			}
-			break;
-		case Node.ELEMENT_NODE:
-			String elementName = top.getNodeName();
-			if (name.equals(elementName)) {
-				aList.add(top);
-			}
-		default:
-			for (Node child = top.getFirstChild(); child != null; child = child
-					.getNextSibling()) {
-				findElementsNamed(child, name, aList);
-			}
-		}
-	}
-
-	private Collection processServiceDescriptionNodes(
-			List serviceDescriptionNodes) {
-		Collection res = new ArrayList();
-		for (Iterator i = serviceDescriptionNodes.iterator(); i.hasNext();) {
-			Node n = (Node) i.next();
-
-			ServiceEndpointDescriptionImpl c = new ServiceEndpointDescriptionImpl();
-			processServiceEndpointDescription(n, c);
-			res.add(c);
-		}
-		return res;
-	}
-
-	private Collection loadServiceDescriptions(Document doc) {
-		List ps = new ArrayList();
-		findElementsNamed(doc, SERVICEDESCRIPTION_ELEMENT, ps);
-		return processServiceDescriptionNodes(ps);
-	}
-
-	private String getAttributeValue(Node node, String attrName) {
-		NamedNodeMap attrs = node.getAttributes();
-		Node attrNode = attrs.getNamedItem(attrName);
-		if (attrNode != null) {
-			return attrNode.getNodeValue();
-		}
-		return ""; //$NON-NLS-1$
-	}
-
-	private void processServiceEndpointDescription(Node n,
-			ServiceEndpointDescriptionImpl c) {
-		List groupList = new ArrayList();
-		findElementsNamed(n, PROVIDE_ELEMENT, groupList);
-		Collection/* <String> */providedInterfaces = null;
-		if (!groupList.isEmpty()) {
-			providedInterfaces = new ArrayList/* <String> */();
-			for (Iterator i = groupList.iterator(); i.hasNext();) {
-				Node node = (Node) i.next();
-				String providedInterfaceValue = getAttributeValue(node,
-						INTERFACE_ATTR);
-				if (providedInterfaceValue != null
-						&& !providedInterfaceValue.equals("")) { //$NON-NLS-1$
-					providedInterfaces.add(providedInterfaceValue);
-				}
-			}
-			c.setProvidedInterfaces(providedInterfaces);
-		}
-		groupList = new ArrayList();
-		findElementsNamed(n, PROPERTY_ELEMENT, groupList);
-		Map/* <String, String> */providedProperties = null;
-		if (!groupList.isEmpty()) {
-			providedProperties = new HashMap/* <String, String> */();
-			for (Iterator i = groupList.iterator(); i.hasNext();) {
-				Node node = (Node) i.next();
-				String name = getAttributeValue(node, NAME_ATTR);
-				String value = node.getFirstChild().getNodeValue();
-				String type = getAttributeValue(node, TYPE_ATTR);
-				if (name != null && !name.equals("")) { //$NON-NLS-1$
-					if (value != null && !value.equals("")) {
-						if (type == null || type.equals("")) {
-							providedProperties.put(name, value);
-						} else if (type.equals("String")) {
-							providedProperties.put(name, value);
-						} else if (type.equals("Long")) {
-							providedProperties.put(name, Long.valueOf(value));
-						} else if (type.equals("Double")) {
-							providedProperties.put(name, Double.valueOf(value));
-						} else if (type.equals("Float")) {
-							providedProperties.put(name, Float.valueOf(value));
-						} else if (type.equals("Integer")) {
-							providedProperties
-									.put(name, Integer.valueOf(value));
-						} else if (type.equals("Byte")) {
-							providedProperties.put(name, Byte.valueOf(value));
-						} else if (type.equals("Character")) {
-							providedProperties.put(name,
-									new Character(value.charAt(0)));
-						} else if (type.equals("Boolean")) {
-							providedProperties
-									.put(name, Boolean.valueOf(value));
-						} else if (type.equals("Short")) {
-							providedProperties.put(name, Short.valueOf(value));
-						}
-					}
-				}
-			}
-			c.setProvidedInterfaces(providedInterfaces);
-			c.setProperties(providedProperties);
-		}
-	}
-
-	public Collection load(InputStream ins)
-			throws ParserConfigurationException, SAXException, IOException {
-		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-		DocumentBuilder db = dbf.newDocumentBuilder();
-		Document doc = db.parse(ins);
-		return loadServiceDescriptions(doc);
-	}
-}
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionPublisher.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionPublisher.java
deleted file mode 100644
index 284c128..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionPublisher.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * 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.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.osgi.service.log.LogService;
-import org.xml.sax.SAXException;
-
-public class ServiceDescriptionPublisher implements
-		IServiceEndpointDescriptionPublisher {
-
-	private FileBasedDiscoveryImpl discovery;
-	private ServiceDescriptionParser sdp;
-	private Object discoveryLock = new Object();
-
-	public ServiceDescriptionPublisher(FileBasedDiscoveryImpl discovery) {
-		this.discovery = discovery;
-		this.sdp = new ServiceDescriptionParser();
-	}
-
-	private void logException(String message, Throwable t) {
-		Activator a = Activator.getDefault();
-		if (a != null) {
-			LogService logService = a.getLogService();
-			if (logService != null)
-				logService.log(LogService.LOG_ERROR, message, t);
-		}
-	}
-
-	private Collection getServiceEndpointDescriptions(
-			InputStream serviceDescriptionStream) throws IOException {
-		try {
-			return sdp.load(serviceDescriptionStream);
-		} catch (IOException e) {
-			logException("IOException publishing serviceDescriptionStream", e);
-			throw e;
-		} catch (ParserConfigurationException e) {
-			logException(
-					"Parser exception publishing serviceDescriptionStream", e);
-			throw new IOException(
-					"Parser exception publishing serviceDescriptionStream: "
-							+ e.getMessage());
-		} catch (SAXException e) {
-			logException(
-					"Parser exception publishing serviceDescriptionStream", e);
-			throw new IOException(
-					"SAX exception publishing serviceDescriptionStream: "
-							+ e.getMessage());
-		} finally {
-			serviceDescriptionStream.close();
-		}
-	}
-
-	public void publishServiceDescription(InputStream serviceDescriptionStream)
-			throws IOException {
-		Collection serviceDescriptions = getServiceEndpointDescriptions(serviceDescriptionStream);
-		if (serviceDescriptions != null) {
-			for (Iterator i = serviceDescriptions.iterator(); i.hasNext();) {
-				publishServiceDescription((ServiceEndpointDescriptionImpl) i
-						.next());
-			}
-		}
-	}
-
-	public void unpublishServiceDescription(InputStream serviceDescriptionStream)
-			throws IOException {
-		Collection serviceDescriptions = getServiceEndpointDescriptions(serviceDescriptionStream);
-		if (serviceDescriptions != null) {
-			for (Iterator i = serviceDescriptions.iterator(); i.hasNext();) {
-				unpublishServiceDescription((ServiceEndpointDescriptionImpl) i
-						.next());
-			}
-		}
-	}
-
-	public void publishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceEndpointDescription) {
-		synchronized (discoveryLock) {
-			if (discovery != null)
-				discovery.publishService(serviceEndpointDescription);
-		}
-	}
-
-	public void unpublishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceEndpointDescription) {
-		synchronized (discoveryLock) {
-			if (discovery != null)
-				discovery.unpublishService(serviceEndpointDescription);
-		}
-	}
-
-	public void close() {
-		synchronized (discoveryLock) {
-			this.discovery = null;
-		}
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceEndpointDescriptionImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceEndpointDescriptionImpl.java
deleted file mode 100644
index 831afe4..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceEndpointDescriptionImpl.java
+++ /dev/null
@@ -1,456 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.rmi.dgc.VMID;
-import java.rmi.server.UID;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-
-public class ServiceEndpointDescriptionImpl implements
-		ServiceEndpointDescription {
-
-	public ServiceEndpointDescriptionImpl() {
-		super();
-		endpointID = getUUID();
-	}
-
-	private static final String LINE_SEPARATOR = System
-			.getProperty("line.separator");
-
-	private String endpointID = null;
-
-	private final Map listOfJSLPSEDs = Collections
-			.synchronizedMap(new HashMap());
-
-	private Map properties = new HashMap();
-
-	/**
-	 * 
-	 * @param interfaceNames
-	 * @param interfacesAndVersions
-	 * @param endPointInterfaces
-	 * @param props
-	 * @throws ServiceLocationException
-	 */
-	public ServiceEndpointDescriptionImpl(
-			final Collection/* <String> */interfaceNames,
-			final Collection/* <String> */interfacesAndVersions,
-			final Collection/* <String> */endPointInterfaces, final Map props,
-			final String endpntID) {
-		// check the java interface map for validity
-		if (interfaceNames == null) {
-			throw new IllegalArgumentException(
-					"Given set of Java interfaces must not be null.");
-		}
-		if (interfaceNames.size() <= 0) {
-			throw new IllegalArgumentException(
-					"Given set of Java interfaces must contain at least one service interface name.");
-		}
-
-		// separate given interface and version strings and put it in a map
-		Map interfaceAndVersionsMap = new HashMap();
-		if (interfacesAndVersions != null) {
-			Iterator versionIterator = interfacesAndVersions.iterator();
-			while (versionIterator.hasNext()) {
-				String interfaceAndVersion = (String) versionIterator.next();
-				int separatorIndex = interfaceAndVersion
-						.indexOf(ServicePublication.SEPARATOR);
-				// if separator doesn't exist or it's index is invalid (at the
-				// very beginning, at the very end)
-				if (separatorIndex <= 0
-						|| (separatorIndex + 1) == interfaceAndVersion.length()) {
-					break;
-				}
-				String interfaceName = interfaceAndVersion.substring(0,
-						separatorIndex);
-				String version = interfaceAndVersion
-						.substring(separatorIndex + 1);
-				if (interfaceName != null && interfaceName.length() > 0
-						&& version != null && version.length() > 0) {
-					interfaceAndVersionsMap.put(interfaceName, version);
-				}
-			}
-		}
-
-		// separate given java interface and endpoint interface and put it in a
-		// map
-		Map endPointInterfacesMap = new HashMap();
-		if (endPointInterfaces != null) {
-			Iterator endpIterator = endPointInterfaces.iterator();
-			while (endpIterator.hasNext()) {
-				String interfaceAndEndpoint = (String) endpIterator.next();
-				int separatorIndex = interfaceAndEndpoint
-						.indexOf(ServicePublication.SEPARATOR);
-				// if separator doesn't exist or it's index is invalid (at the
-				// very beginning, at the very end)
-				if (separatorIndex <= 0
-						|| (separatorIndex + 1) == interfaceAndEndpoint
-								.length()) {
-					break;
-				}
-				String interfaceName = interfaceAndEndpoint.substring(0,
-						separatorIndex);
-				String endpInterface = interfaceAndEndpoint
-						.substring(separatorIndex + 1);
-				if (interfaceName != null && interfaceName.length() > 0
-						&& endpInterface != null && endpInterface.length() > 0) {
-					endPointInterfacesMap.put(interfaceName, endpInterface);
-				}
-			}
-		}
-
-		// create interface-specific SEDs
-		Iterator it = interfaceNames.iterator();
-		while (it.hasNext()) {
-			String ifName = (String) it.next();
-
-			OneInterfaceSED jslpSED = new OneInterfaceSED();
-			jslpSED.setInterfaceName(ifName);
-			jslpSED.setVersion((String) interfaceAndVersionsMap.get(ifName));
-			jslpSED.setEndpointInterface((String) endPointInterfacesMap
-					.get(ifName));
-			listOfJSLPSEDs.put(ifName, jslpSED);
-		}
-		if (endpntID != null) {
-			this.endpointID = endpntID;
-		} else {
-			this.endpointID = getUUID();
-		}
-
-		if (props != null) {
-			this.properties = new HashMap(props);
-		}
-		addInterfacesAndVersionsToProperties(interfaceNames,
-				interfacesAndVersions, endPointInterfaces, endpointID);
-	}
-
-	/**
-	 * adds the endpoint interfaces and versions to the properties map
-	 * 
-	 * @throws ServiceLocationException
-	 */
-	private void addInterfacesAndVersionsToProperties(
-			Collection interfaceNames, Collection versions,
-			Collection endPointInterfaces, String endpntID) {
-
-		if (properties == null) {
-			properties = new HashMap();
-		}
-		properties.put(ServicePublication.SERVICE_INTERFACE_NAME,
-				interfaceNames);
-		if (versions != null) {
-			properties.put(ServicePublication.SERVICE_INTERFACE_VERSION,
-					versions);
-		}
-		if (endPointInterfaces != null) {
-			properties.put(ServicePublication.ENDPOINT_INTERFACE_NAME,
-					endPointInterfaces);
-		}
-
-		if (endpntID != null) {
-			properties.put(ServicePublication.ENDPOINT_ID, endpntID);
-		}
-	}
-
-	public Map getProperties() {
-		return new HashMap(properties);
-	}
-
-	public Object getProperty(final String key) {
-		return getProperties().get(key);
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer sb = new StringBuffer("Service:" + LINE_SEPARATOR);
-		if (endpointID != null) {
-			sb.append("EndpointID = ");
-			sb.append(endpointID);
-			sb.append(LINE_SEPARATOR);
-		}
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			int i = 1;
-			while (it.hasNext()) {
-				sb.append("Interface ");
-				sb.append(i);
-				sb.append(LINE_SEPARATOR);
-				sb.append((OneInterfaceSED) it.next());
-				i++;
-			}
-		}
-		String key;
-		Object value;
-		Iterator it = properties.keySet().iterator();
-		if (it.hasNext()) {
-			sb.append("properties=" + LINE_SEPARATOR);
-		}
-		while (it.hasNext()) {
-			key = (String) it.next();
-			value = properties.get(key);
-			if (value == null) {
-				value = "<null>";
-			}
-
-			sb.append("\t");
-			sb.append(key);
-			sb.append("=");
-			sb.append(value.toString());
-			sb.append(LINE_SEPARATOR);
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getProvidedInterfaces()
-	 */
-	public Collection getProvidedInterfaces() {
-		List l = new ArrayList();
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			while (it.hasNext()) {
-				l.add(((OneInterfaceSED) it.next()).getInterfaceName());
-			}
-		}
-		return l;
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getEndpointInterfaceName(java.lang.String)
-	 */
-	public String getEndpointInterfaceName(String interfaceName) {
-		OneInterfaceSED jSED = ((OneInterfaceSED) listOfJSLPSEDs
-				.get(interfaceName));
-		if (jSED != null) {
-			return jSED.getEndpointInterface();
-		} else {
-			return null;
-		}
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getVersion(java.lang.String)
-	 */
-	public String getVersion(String interfaceName) {
-		OneInterfaceSED jSED = ((OneInterfaceSED) listOfJSLPSEDs
-				.get(interfaceName));
-		if (jSED != null) {
-			return jSED.getVersion();
-		} else {
-			return null;
-		}
-	}
-
-	public URI getLocation() {
-		Object uriObject = getProperty(ServicePublication.ENDPOINT_LOCATION);
-		if (uriObject instanceof URI) {
-			return (URI) uriObject;
-		} else if (uriObject instanceof String) {
-			try {
-				return new URI((String) uriObject);
-			} catch (URISyntaxException e) {
-				throw new RuntimeException(e.getMessage());
-			}
-		} else if (uriObject == null) {
-			return null;
-		} else {
-			throw new RuntimeException(
-					"Service location property is not of expected type URI or String. Property = "
-							+ uriObject.toString());
-		}
-	}
-
-	/**
-	 * 
-	 * @return Collection
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getPropertyKeys()
-	 */
-	public Collection getPropertyKeys() {
-		return getProperties().keySet();
-	}
-
-	/**
-	 * 
-	 * @param key
-	 * @param value
-	 */
-	public void addProperty(String key, Object value) {
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			while (it.hasNext()) {
-				((OneInterfaceSED) it.next()).addProperty(key, value);
-			}
-		}
-		if (key.equals(ServicePublication.ENDPOINT_ID)) {
-			endpointID = (String) value;
-		}
-		properties.put(key, value);
-	}
-
-	/**
-	 * @return
-	 */
-	private String getUUID() {
-		return new UID().toString() + new VMID().toString();
-	}
-
-	/**
-	 * 
-	 * @param javaInterfaceName
-	 * @return String
-	 */
-	public static String convertJavaInterface2Path(
-			final String javaInterfaceName) {
-		return javaInterfaceName != null ? ":"
-				+ javaInterfaceName.replace('.', '/') : "";
-	}
-
-	/**
-	 * 
-	 * @param interfaceNameEncodedAsPath
-	 * @return String
-	 */
-	public static String convertPath2JavaInterface(
-			final String interfaceNameEncodedAsPath) {
-		return interfaceNameEncodedAsPath != null ? interfaceNameEncodedAsPath
-				.replace('/', '.') : null;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(final Object serviceDescription) {
-		if (!(serviceDescription instanceof ServiceEndpointDescription)) {
-			return false;
-		}
-
-		ServiceEndpointDescription descr = (ServiceEndpointDescription) serviceDescription;
-
-		// if one has an EndpointID
-		if (this.endpointID != null || descr.getEndpointID() != null) {
-			if (this.endpointID != null) {
-				return this.endpointID.equals(descr.getEndpointID());
-			} else {
-				// we don't have an endpointID but only the other.
-				return false;
-			}
-		}
-
-		Collection descrInterfaces = descr.getProvidedInterfaces();
-		if (descrInterfaces == null) {
-			throw new RuntimeException(
-					"The service does not contain requiered parameter interfaces. "
-							+ descr);
-		}
-
-		boolean found = false;
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			while (it.hasNext()) {
-				OneInterfaceSED sed = (OneInterfaceSED) it.next();
-				if (sed.equals(serviceDescription)) {
-					found = true;
-				}
-			}
-		}
-
-		return found;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		// In case endpointID has been provided by DSW / another Discovery or
-		// has been generated
-		if (endpointID != null) {
-			return endpointID.hashCode();
-		} else {
-			int result = 17;
-			synchronized (listOfJSLPSEDs) {
-				Iterator it = listOfJSLPSEDs.values().iterator();
-				while (it.hasNext()) {
-					result = 37 * result
-							+ ((OneInterfaceSED) it.next()).hashCode();
-				}
-			}
-
-			if (endpointID != null) {
-				result = 37 * result + endpointID.hashCode();
-			}
-
-			if (properties != null) {
-				result = 37 * result + properties.hashCode();
-			}
-
-			return result;
-		}
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getEndpointID()
-	 */
-	public String getEndpointID() {
-		return endpointID;
-	}
-
-	/**
-	 * 
-	 * @param interfaceNames
-	 *            the list of interfaceNames provided by this
-	 *            ServiceEndpointDescription
-	 */
-	public void setProvidedInterfaces(Collection interfaceNames) {
-		if (interfaceNames == null || interfaceNames.isEmpty()) {
-			return;
-		}
-		listOfJSLPSEDs.clear();
-		// create interface-specific SEDs
-		Iterator it = interfaceNames.iterator();
-		while (it.hasNext()) {
-			String ifName = (String) it.next();
-			OneInterfaceSED jslpSED = new OneInterfaceSED();
-			jslpSED.setInterfaceName(ifName);
-			listOfJSLPSEDs.put(ifName, jslpSED);
-		}
-	}
-
-	public void setProperties(Map props) {
-		// TODO implement setting of members (endpointID, endpointinterfaces,
-		// versions)
-		properties = new HashMap(props);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServicePublicationTracker.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServicePublicationTracker.java
deleted file mode 100644
index 16a91ec..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServicePublicationTracker.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class ServicePublicationTracker implements ServiceTrackerCustomizer {
-
-	private BundleContext context = null;
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	private Map /* <ServiceReference, ServiceEndpointDescription> */publicationAndSED = null;
-
-	public ServicePublicationTracker(BundleContext ctx,
-			FileBasedDiscoveryImpl disco) {
-		context = ctx;
-		discovery = disco;
-		publicationAndSED = Collections.synchronizedMap(new HashMap());
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.osgi.framework.ServiceReference)
-	 */
-	public Object addingService(ServiceReference arg0) {
-		ServicePublication sp = publishServicePublication(arg0);
-		return sp;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#modifiedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void modifiedService(ServiceReference arg0, Object arg1) {
-		unpublishServicePublication(arg0);
-		publishServicePublication(arg0);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#removedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void removedService(ServiceReference arg0, Object arg1) {
-		unpublishServicePublication(arg0);
-	}
-
-	/**
-	 * 
-	 * @param arg0
-	 * @return
-	 */
-	private ServicePublication publishServicePublication(ServiceReference arg0) {
-		ServicePublication sp = (ServicePublication) context.getService(arg0);
-		ServiceEndpointDescription sed = discovery
-				.publishService(
-						(Collection) arg0
-								.getProperty(ServicePublication.SERVICE_INTERFACE_NAME),
-						(Collection) arg0
-								.getProperty(ServicePublication.SERVICE_INTERFACE_VERSION),
-						(Collection) arg0
-								.getProperty(ServicePublication.ENDPOINT_INTERFACE_NAME),
-						(Map) arg0
-								.getProperty(ServicePublication.SERVICE_PROPERTIES),
-						FileBasedDiscoveryImpl.PROP_VAL_PUBLISH_STRATEGY_PUSH,
-						(String) arg0
-								.getProperty(ServicePublication.ENDPOINT_ID));
-		publicationAndSED.put(arg0, sed);
-		return sp;
-	}
-
-	/**
-	 * 
-	 * @param srvReference
-	 *            the given reference to the service to unpublish
-	 */
-	private void unpublishServicePublication(ServiceReference srvReference) {
-		discovery
-				.unpublishService((ServiceEndpointDescription) publicationAndSED
-						.get(srvReference));
-		publicationAndSED.remove(srvReference);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.classpath b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/CDC-1.1%Foundation-1.1"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.gitignore b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.options b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.options
deleted file mode 100644
index dba9382..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.options
+++ /dev/null
@@ -1,19 +0,0 @@
-# Debugging options for the org.eclipse.ecf.osgi.services.discovery plug-in
-
-# Turn on general debugging for the org.eclipse.ecf.osgi.services.discovery plug-in
-org.eclipse.ecf.osgi.services.discovery/debug=true
-org.eclipse.ecf.osgi.services.discovery/debug/filter = *
-org.eclipse.ecf.osgi.services.discovery/debug/flag = true
-
-# Trace when exceptions are caught
-org.eclipse.ecf.osgi.services.discovery/debug/exceptions/catching=true
-# Trace when exceptions are thrown
-org.eclipse.ecf.osgi.services.discovery/debug/exceptions/throwing=true
-
-# Trace when methods are entered
-org.eclipse.ecf.osgi.services.discovery/debug/methods/entering=true
-# Trace when methods are exited
-org.eclipse.ecf.osgi.services.discovery/debug/methods/exiting=true
-
-# Trace service publication events
-org.eclipse.ecf.osgi.services.discovery/debug/servicepublication=true
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.project b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.project
deleted file mode 100644
index b947658..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.osgi.services.discovery</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.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 947746f..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,88 +0,0 @@
-#Thu May 06 20:48:39 PDT 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-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.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs
deleted file mode 100644
index 03423ff..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Feb 03 16:43:43 PST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.ui.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 71b405f..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,57 +0,0 @@
-#Fri May 01 09:30:31 PDT 2009
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
deleted file mode 100644
index dea5bec..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
+++ /dev/null
@@ -1,91 +0,0 @@
-#Fri May 08 23:15:32 PDT 2009
-ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
-ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
-CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
-CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
-CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
-CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
-CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
-ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
-ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
-ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
-FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
-FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
-FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
-FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
-ILLEGAL_EXTEND=Warning
-ILLEGAL_IMPLEMENT=Warning
-ILLEGAL_INSTANTIATE=Warning
-ILLEGAL_OVERRIDE=Warning
-ILLEGAL_REFERENCE=Warning
-INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-INVALID_JAVADOC_TAG=Ignore
-INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
-LEAK_EXTEND=Ignore
-LEAK_FIELD_DECL=Warning
-LEAK_IMPLEMENT=Warning
-LEAK_METHOD_PARAM=Warning
-LEAK_METHOD_RETURN_TYPE=Warning
-METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
-METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
-UNUSED_PROBLEM_FILTERS=Warning
-eclipse.preferences.version=1
-incompatible_api_component_version=Error
-incompatible_api_component_version_include_major_without_breaking_change=Disabled
-incompatible_api_component_version_include_minor_without_api_change=Disabled
-invalid_since_tag_version=Error
-malformed_since_tag=Error
-missing_since_tag=Error
-report_api_breakage_when_major_version_incremented=Disabled
-report_resolution_errors_api_component=Warning
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 80d12d4..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Fri Jan 23 15:00:57 PST 2009
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index b015a19..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,26 +0,0 @@
-#Fri May 08 23:14:42 PDT 2009
-compilers.f.unresolved-features=1
-compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.deprecated=1
-compilers.p.discouraged-class=0
-compilers.p.internal=1
-compilers.p.missing-packages=2
-compilers.p.missing-version-export-package=2
-compilers.p.missing-version-import-package=2
-compilers.p.missing-version-require-bundle=2
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=2
-compilers.p.unknown-attribute=1
-compilers.p.unknown-class=1
-compilers.p.unknown-element=1
-compilers.p.unknown-identifier=1
-compilers.p.unknown-resource=1
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.s.create-docs=false
-compilers.s.doc-folder=doc
-compilers.s.open-tags=1
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF
deleted file mode 100644
index 8321849..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.osgi.services.discovery
-Bundle-Version: 2.0.0.qualifier
-Bundle-Vendor: %pluginProvider
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
-Bundle-ActivationPolicy: lazy
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.common
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties
deleted file mode 100644
index 5b90aa0..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               about.html
-src.includes = about.html
-jre.compilation.profile = J2SE-1.4
-javacErrors.. = -assertIdentifier,-enumIdentifier
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/plugin.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/plugin.properties
deleted file mode 100644
index 30d6d6c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-#################################################################################
-# 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
-#
-# Contributors:
-#   EclipseSource - initial API and implementation
-#################################################################################
-pluginName=ECF OSGi R4.2 Compendium Discovery
-pluginProvider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/foo.txt b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/foo.txt
deleted file mode 100644
index a0c2040..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/foo.txt
+++ /dev/null
@@ -1 +0,0 @@
-nothing here
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF
index f712df2..aa25efc 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.osgi.services.distribution
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.osgi.services.distribution.Activator
 Bundle-Vendor: %pluginProvider
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
index f6fca33..741fc23 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
@@ -5,7 +5,9 @@
 import java.util.Properties;
 import org.eclipse.ecf.osgi.services.remoteserviceadmin.AbstractTopologyManager;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.framework.hooks.service.EventHook;
 import org.osgi.service.remoteserviceadmin.EndpointListener;
@@ -21,6 +23,17 @@
 	private static final String endpointListenerScope = System
 			.getProperty("org.eclipse.ecf.osgi.services.discovery.endpointListenerScope"); //$NON-NLS-1$
 
+	private boolean exportRegisteredSvcs = new Boolean(
+			System.getProperty(
+					"org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcs", "true")).booleanValue(); //$NON-NLS-1$ //$NON-NLS-2$
+
+	private String exportRegisteredSvcsClassname = System
+			.getProperty("org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcsClassname"); //$NON-NLS-1$
+
+	private String exportRegisteredSvcsFilter = System
+			.getProperty(
+					"org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcsFilter", "(service.exported.interfaces=*)"); //$NON-NLS-1$ //$NON-NLS-2$
+
 	private ServiceRegistration endpointListenerRegistration;
 
 	private ServiceRegistration eventHookRegistration;
@@ -29,6 +42,18 @@
 		super(context);
 	}
 
+	public void setExportRegisteredSvcs(boolean val) {
+		this.exportRegisteredSvcs = val;
+	}
+
+	public void setExportRegisteredSvcsClassname(String classname) {
+		this.exportRegisteredSvcsClassname = classname;
+	}
+
+	public void setExportRegisteredSvcsFilter(String filter) {
+		this.exportRegisteredSvcsFilter = filter;
+	}
+
 	private String getEndpointListenerScope() {
 		// If it's set via system property, then simply use it
 		if (endpointListenerScope != null)
@@ -55,7 +80,33 @@
 		return result;
 	}
 
+	public void exportRegisteredServices(String exportRegisteredSvcsClassname,
+			String exportRegisteredSvcsFilter) {
+		ServiceReference[] existingServiceRefs = null;
+		try {
+			existingServiceRefs = getContext().getAllServiceReferences(
+					exportRegisteredSvcsClassname, exportRegisteredSvcsFilter);
+		} catch (InvalidSyntaxException e) {
+			logError(
+					"exportRegisteredServices", //$NON-NLS-1$
+					"Could not retrieve existing service references for exportRegisteredSvcsClassname=" //$NON-NLS-1$
+							+ exportRegisteredSvcsClassname
+							+ " and exportRegisteredSvcsFilter=" //$NON-NLS-1$
+							+ exportRegisteredSvcsFilter, e);
+		}
+		// Now export as if the service was registering right now...i.e. perform
+		// export
+		if (existingServiceRefs != null)
+			for (int i = 0; i < existingServiceRefs.length; i++)
+				// This method will check the service properties for
+				// remote service props. If previously registered as a
+				// remote service, it will export the remote
+				// service if not it will simply return/skip
+				handleServiceRegistering(existingServiceRefs[i]);
+	}
+
 	public void start() throws Exception {
+
 		// Register as EndpointListener, so that it gets notified when Endpoints
 		// are discovered
 		Properties props = new Properties();
@@ -69,6 +120,11 @@
 		// are registered
 		eventHookRegistration = getContext().registerService(
 				EventHook.class.getName(), this, null);
+
+		// Lastly, export any previously registered remote services
+		if (exportRegisteredSvcs)
+			exportRegisteredServices(exportRegisteredSvcsClassname,
+					exportRegisteredSvcsFilter);
 	}
 
 	public void endpointAdded(
diff --git a/doc/bundles/org.eclipse.ecf.doc/build.properties b/doc/bundles/org.eclipse.ecf.doc/build.properties
index a4d687e..c211d8a 100644
--- a/doc/bundles/org.eclipse.ecf.doc/build.properties
+++ b/doc/bundles/org.eclipse.ecf.doc/build.properties
@@ -14,7 +14,8 @@
                topics_GettingStarted.xml,\
                tocapi.xml,\
                toc.xml,\
-               schema.xml
+               schema.xml,\
+               topics_Reference_RemoteServices.xml
 src.includes = intro/,\
                about.html,\
                notices.html,\
@@ -26,7 +27,8 @@
                tocpics_Concepts.xml,\
                tocapi.xml,\
                toc.xml,\
-               schema.xml
+               schema.xml,\
+               topics_Reference_RemoteServices.xml
 bin.excludes = html/reference/api/
 generateSourceBundle=false
 
diff --git a/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml b/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
index 11d5539..e57d725 100644
--- a/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
@@ -1,8 +1,6 @@
 <project default="toc" basedir=".">
 
 	<target name="init">
-		<property name="package-list.path" location="${basedir}/html/reference/api/package-list"/>
-		<uptodate property="BuildAPITOC.uptodate" srcfile="${package-list.path}" targetfile="BuildAPITOC.class"/>
 	</target>
 	
 	<target name="toc" depends="init,compile">
@@ -10,24 +8,26 @@
 <toc label="JavaDoc">
 ]]></echo>
 		<java classname="BuildAPITOC" classpath="." output="tocapi.xml" append="true">
-			<arg value="${package-list.path}"/>
+			<arg value="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/package-list"/>
 		</java>
 		<echo file="tocapi.xml" append="true"><![CDATA[
 </toc>
 ]]></echo>
 	</target>
 
-	<target name="compile" unless="BuildAPITOC.uptodate">
+	<target name="compile">
 		<echo file="BuildAPITOC.java"><![CDATA[
 import java.io.*;
+import java.net.URL;
 public class BuildAPITOC {
 	public static void main(String[] args) throws Exception {
 	    System.out.println("args[0] is "+args[0]);
-		BufferedReader r = new BufferedReader(new FileReader(args[0]));
+	    URL url = new URL(args[0]);
+		BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
 		String line;
 		try {
 			while ((line = r.readLine()) != null)
-				System.out.println("<topic label=\"" + line + "\" href=\"http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/" + line.replace('.', '/') + "/package-summary.html\"/>");
+				System.out.println("<topic label=\"" + line + "\" href=\"http://download.eclipse.org/rt/ecf/3.5Test/javadoc/" + line.replace('.', '/') + "/package-summary.html\"/>");
 		} finally {
 			r.close();
 		}
diff --git a/doc/bundles/org.eclipse.ecf.doc/plugin.xml b/doc/bundles/org.eclipse.ecf.doc/plugin.xml
index a8907c9..f3c9a92 100644
--- a/doc/bundles/org.eclipse.ecf.doc/plugin.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/plugin.xml
@@ -14,6 +14,14 @@
       <toc file="topics_Reference.xml"/>
       <toc file="topics_Extpoint.xml"/>
       <toc file="topics_Tutorials.xml"/>
+      <toc
+            file="tocapi.xml"
+            primary="false">
+      </toc>
+      <toc
+            file="topics_Reference_RemoteServices.xml"
+            primary="false">
+      </toc>
     </extension>
    
    
diff --git a/doc/bundles/org.eclipse.ecf.doc/toc.xml b/doc/bundles/org.eclipse.ecf.doc/toc.xml
index a9b1bf7..20e55c5 100644
--- a/doc/bundles/org.eclipse.ecf.doc/toc.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/toc.xml
@@ -2,14 +2,14 @@
 <?NLS TYPE="org.eclipse.help.toc"?>
 
 <toc label="ECF Developer Guide" link_to="toc.xml">
-   <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"/>
-   <topic label="Overview" href="html/gettingstarted/ecf_overview.html"/>
-   <topic label="Tips and Tricks" href="http://wiki.eclipse.org/ECF_Tips_Tricks"/>
    <topic label="What's New and Noteworthy" href="http://www.eclipse.org/ecf/NewAndNoteworthy.html"/>
-   <topic label="Legal" href="notices.html"/>
-   <topic label="Programmer's Reference">
+    <topic label="Project Blog" href="http://eclipseecf.blogspot.com/"/>
+    <topic label="OSGi Remote Services" href="http://wiki.eclipse.org/ECF#OSGi_Remote_Services">
+		<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">
diff --git a/doc/bundles/org.eclipse.ecf.doc/tocapi.xml b/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
index 7d5f5b0..bc37666 100644
--- a/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
@@ -1,138 +1,116 @@
 
-<toc label="JavaDoc">
-args[0] is C:\Documents and Settings\slewis\workspace.ecf.rt\org.eclipse.ecf.doc\html\reference\api\package-list
-<topic label="org.eclipse.ecf.core" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.jobs" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/jobs/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.provider" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.security" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/security/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.provider" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.security" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/security/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.start" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/start/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.status" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/status/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.user" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/user/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.mergeable" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/mergeable/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.impl" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/impl/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.provider" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.resource" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/resource/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/docshare/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare.menu" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/docshare/menu/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare.messages" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/docshare/messages/package-summary.html"/>
-<topic label="org.eclipse.ecf.example.clients" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/example/clients/package-summary.html"/>
-<topic label="org.eclipse.ecf.example.clients.applications" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/example/clients/applications/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.provider.trivial" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/examples/provider/trivial/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.remoteservices.hello" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/examples/remoteservices/hello/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events.socket" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/events/socket/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events.socketfactory" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/events/socketfactory/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.ui.actions" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/ui/actions/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.discovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/osgi/services/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.discovery.local" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/osgi/services/discovery/local/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.distribution" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/osgi/services/distribution/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/bot/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot.application" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/bot/application/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot.impl" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/bot/impl/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.chatroom" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/chatroom/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.console" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/console/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.screencapture" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/screencapture/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.url" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/url/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.view" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/view/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.history" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/history/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.im" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/im/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.roster" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/roster/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.search" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/search/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.search.message" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/search/message/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.chatroom" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/chatroom/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.dnd" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/dnd/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.menu" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/menu/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.roster" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/roster/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.bittorrent" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/protocol/bittorrent/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.msn" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/protocol/msn/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.msn.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/protocol/msn/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.comm" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/comm/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.comm.tcp" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/comm/tcp/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.datashare" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/datashare/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.datashare.nio" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/datashare/nio/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.discovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.browse" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/browse/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.events.socket" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/events/socket/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.httpclient" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/httpclient/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.outgoing" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/outgoing/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.retrieve" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/retrieve/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.generic" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.generic.gmm" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/generic/gmm/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.irc.bot" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/irc/bot/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.irc.bot.handler" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/irc/bot/handler/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jmdns.container" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jmdns/container/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jmdns.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jmdns/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jslp.container" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jslp/container/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jslp.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jslp/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.localdiscovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/localdiscovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.r_osgi.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/r_osgi/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.remoteservice" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/remoteservice/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.remoteservice.generic" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/remoteservice/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.ui.wizards" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/ui/wizards/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.xmpp" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/xmpp/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.xmpp.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/xmpp/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.core" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/core/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.core.internal" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/core/internal/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.node.internal" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/node/internal/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.client" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.eventadmin" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/eventadmin/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.client" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.soap.client" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/soap/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.soap.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/soap/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.util.tracker" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/util/tracker/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservices.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservices/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.server" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/server/package-summary.html"/>
-<topic label="org.eclipse.ecf.server.generic" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/server/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.server.generic.app" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/server/generic/app/package-summary.html"/>
-<topic label="org.eclipse.ecf.storage" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/storage/package-summary.html"/>
-<topic label="org.eclipse.ecf.sync" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/sync/package-summary.html"/>
-<topic label="org.eclipse.ecf.sync.doc" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/sync/doc/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.ui.actions" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/ui/actions/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.actions" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/actions/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.dialogs" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/dialogs/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.hyperlink" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/hyperlink/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.screencapture" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/screencapture/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.wizards" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/wizards/package-summary.html"/>
+<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"/>
 
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
index f75d2f7..a1d4984 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
@@ -2,12 +2,19 @@
 <?NLS TYPE="org.eclipse.help.toc"?>
 
 <toc label="Reference" link_to="toc.xml#reference">
-	<topic label="Introduction" href="html/concepts/intro.html"/>
-    <topic label="OSGi 4.2 Remote Services" href="http://wiki.eclipse.org/ECF#OSGi_4.2_Remote_Services"/>
+    <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="JavaDoc" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/overview-summary.html"/>
-	<topic label="Project Wiki" href="http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project"/>
+	<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="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>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml
new file mode 100644
index 0000000..6ebfc52
--- /dev/null
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml
@@ -0,0 +1,10 @@
+<?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="File-based Discovery of Remote Services" href="http://wiki.eclipse.org/File-based_Discovery"/>
+</toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
index 239dc76..cf9db58 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
@@ -8,5 +8,5 @@
 	<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="Other Info" href="http://wiki.eclipse.org/Eclipse_Communication_Framework_Project"/>
+	<topic label="Other Info" href="http://wiki.eclipse.org/ECF"/>
 </toc>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.classpath
similarity index 99%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.classpath
index 64c5e31..2d1a430 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.classpath
@@ -1,7 +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>
+<?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/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
similarity index 90%
rename from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
index f9bafca..ef31131 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.provider.discovery.local</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>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.examples.provider.remoteservice</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.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a97b222
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Jul 04 13:23:29 PDT 2011
+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/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.pde.core.prefs
similarity index 74%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.pde.core.prefs
index bbcd50b..d16699c 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.pde.core.prefs
@@ -1,4 +1,4 @@
-#Tue Mar 09 13:32:16 PST 2010
-eclipse.preferences.version=1
-pluginProject.extensions=true
-resolve.requirebundle=false
+#Mon Jul 04 13:28:20 PDT 2011
+eclipse.preferences.version=1
+pluginProject.extensions=true
+resolve.requirebundle=false
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
new file mode 100644
index 0000000..ef68727
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+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-RequiredExecutionEnvironment: J2SE-1.5
+Import-Package: org.eclipse.ecf.core;version="3.0.0",
+ org.eclipse.ecf.core.events,
+ org.eclipse.ecf.core.identity,
+ org.eclipse.ecf.core.provider,
+ org.eclipse.ecf.core.security,
+ org.eclipse.ecf.examples.provider.trivial.identity,
+ org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.events;version="6.0.0",
+ 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"
+Export-Package: org.eclipse.ecf.examples.provider.remoteservice.identity,
+ org.eclipse.ecf.internal.examples.provider.remoteservice.container;x-internal:=true
+Bundle-Localization: plugin
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
similarity index 79%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
index cfa3528..8665ac2 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
@@ -1,6 +1,6 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/,\
-               plugin.properties
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.properties
similarity index 60%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
copy to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.properties
index e649bf6..26decd9 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.properties
@@ -1,11 +1,12 @@
-############################################################################
-# Copyright (c) 2010 Composent 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 Distribution Tests LocalDiscovery
-plugin.provider=Eclipse.org - ECF
-
+################################################################################
+# 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
+################################################################################
+bundle.name=ECF Example Remoteservice Provider
+bundle.provider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.xml b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.xml
new file mode 100644
index 0000000..8605ad5
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ecf.identity.namespace">
+      <namespace
+            class="org.eclipse.ecf.examples.provider.remoteservice.identity.RSExampleNamespace"
+            description="RS Example Namespace"
+            name="ecf.namespace.example.rs">
+      </namespace>
+   </extension>
+   <extension
+         point="org.eclipse.ecf.containerFactory">
+      <containerFactory
+            class="org.eclipse.ecf.internal.examples.provider.remoteservice.container.RSExampleContainerInstantiator"
+            name="ecf.container.example.rs">
+      </containerFactory>
+   </extension>
+
+</plugin>
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleID.java
old mode 100755
new mode 100644
similarity index 70%
copy from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
copy to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleID.java
index 0d10a27..0e816df
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleID.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2004 Composent, Inc. and others.
+ * 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
@@ -8,27 +8,16 @@
  * Contributors:
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
-
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.remoteservice.identity;
 
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.identity.StringID;
 
-/**
- *
- */
-public class TrivialID extends StringID {
+public class RSExampleID extends StringID {
 
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = -3656862045346223983L;
 
-	/**
-	 * @param n
-	 * @param s
-	 */
-	protected TrivialID(Namespace n, String s) {
+	protected RSExampleID(Namespace n, String s) {
 		super(n, s);
 	}
 
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleNamespace.java
old mode 100755
new mode 100644
similarity index 79%
copy from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java
copy to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleNamespace.java
index 2898a5f..e2c6df9
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleNamespace.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2004 Composent, Inc. and others.
+ * 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
@@ -8,21 +8,17 @@
  * Contributors:
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
-
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.remoteservice.identity;
 
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDCreateException;
 import org.eclipse.ecf.core.identity.Namespace;
 
-/**
- *
- */
-public class TrivialNamespace extends Namespace {
+public class RSExampleNamespace extends Namespace {
 
 	private static final long serialVersionUID = 1235788855435011811L;
-	public static final String SCHEME = "trivial";
-	public static final String NAME = "ecf.namespace.trivial";
+	public static final String SCHEME = "example";
+	public static final String NAME = "ecf.namespace.example.rs";
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[])
@@ -34,7 +30,7 @@
 			throw new IDCreateException("parameters not of correct size");
 		if (!(parameters[0] instanceof String))
 			throw new IDCreateException("parameter not of String type");
-		return new TrivialID(this, (String) parameters[0]);
+		return new RSExampleID(this, (String) parameters[0]);
 	}
 
 	/* (non-Javadoc)
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainer.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainer.java
new file mode 100644
index 0000000..79178fb
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainer.java
@@ -0,0 +1,281 @@
+/****************************************************************************
+ * 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.internal.examples.provider.remoteservice.container;
+
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.ecf.core.AbstractContainer;
+import org.eclipse.ecf.core.ContainerConnectException;
+import org.eclipse.ecf.core.events.ContainerConnectedEvent;
+import org.eclipse.ecf.core.events.ContainerConnectingEvent;
+import org.eclipse.ecf.core.events.ContainerDisconnectedEvent;
+import org.eclipse.ecf.core.events.ContainerDisconnectingEvent;
+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.security.IConnectContext;
+import org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace;
+import org.eclipse.ecf.remoteservice.IOSGiRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteFilter;
+import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.IRemoteServiceCallPolicy;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteServiceID;
+import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
+import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
+import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;
+import org.eclipse.ecf.remoteservice.util.RemoteFilterImpl;
+import org.eclipse.equinox.concurrent.future.IFuture;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Trivial container implementation. Note that container adapter implementations can be
+ * provided by the container class to expose appropriate adapters.
+ */
+@SuppressWarnings("restriction")
+public class RSExampleContainer extends AbstractContainer implements IRemoteServiceContainerAdapter, IOSGiRemoteServiceContainerAdapter {
+
+	/*
+	 * The targetID.  This value is set on 'connect' and unset in 'disconnect'.
+	 * This represents the other process that this container is connected to.
+	 * Value is returned via getConnectedID()
+	 */
+	private ID targetID = null;
+	/*
+	 * This is the ID for this container.  Returned via getID().
+	 */
+	private ID containerID = null;
+
+	public RSExampleContainer() throws IDCreateException {
+		super();
+		this.containerID = IDFactory.getDefault().createGUID();
+	}
+
+	public RSExampleContainer(ID id) {
+		super();
+		Assert.isNotNull(id);
+		this.containerID = id;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#connect(org.eclipse.ecf.core.identity.ID,
+	 *      org.eclipse.ecf.core.security.IConnectContext)
+	 */
+	public void connect(ID targetID, IConnectContext connectContext) throws ContainerConnectException {
+		if (!targetID.getNamespace().getName().equals(getConnectNamespace().getName()))
+			throw new ContainerConnectException("targetID not of appropriate Namespace");
+
+		fireContainerEvent(new ContainerConnectingEvent(getID(), targetID));
+
+		// XXX connect to remote service here
+
+		this.targetID = targetID;
+		fireContainerEvent(new ContainerConnectedEvent(getID(), targetID));
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#disconnect()
+	 */
+	public void disconnect() {
+		fireContainerEvent(new ContainerDisconnectingEvent(getID(), targetID));
+
+		final ID oldID = targetID;
+
+		// XXX disconnect here
+
+		fireContainerEvent(new ContainerDisconnectedEvent(getID(), oldID));
+	}
+
+	public void dispose() {
+		disconnect();
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.clear();
+		}
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#getConnectNamespace()
+	 */
+	public Namespace getConnectNamespace() {
+		return IDFactory.getDefault().getNamespaceByName(TrivialNamespace.NAME);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#getConnectedID()
+	 */
+	public ID getConnectedID() {
+		return targetID;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.identity.IIdentifiable#getID()
+	 */
+	public ID getID() {
+		return containerID;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.AbstractContainer#getAdapter(java.lang.Class)
+	 */
+	public Object getAdapter(@SuppressWarnings("rawtypes") Class serviceType) {
+		/*
+		 * See AbstractContainer.getAdapter() implementation.
+		 */
+		return super.getAdapter(serviceType);
+	}
+
+	// IOSGiRemoteServiceContainerAdapter impl.  This supercedes the implementation of 
+	// IRemoteServiceContainerAdapter.registerRemoteService
+	public IRemoteServiceRegistration registerRemoteService(String[] clazzes,
+			@SuppressWarnings("rawtypes") ServiceReference aServiceReference, @SuppressWarnings("rawtypes") Dictionary properties) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	// IRemoteServiceContainerAdapter impl
+	private List<IRemoteServiceListener> remoteServiceListeners = new ArrayList<IRemoteServiceListener>();
+	
+	void fireRemoteServiceEvent(IRemoteServiceEvent event) {
+		List<IRemoteServiceListener> toNotify = null;
+		// Copy array
+		synchronized (remoteServiceListeners) {
+			toNotify = new ArrayList<IRemoteServiceListener>(remoteServiceListeners);
+		}
+		for (IRemoteServiceListener i: toNotify) {
+			i.handleServiceEvent(event);
+		}
+	}
+
+	public void addRemoteServiceListener(IRemoteServiceListener listener) {
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.add(listener);
+		}
+	}
+
+	public void removeRemoteServiceListener(IRemoteServiceListener listener) {
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.remove(listener);
+		}
+	}
+
+	public IRemoteServiceRegistration registerRemoteService(String[] clazzes,
+			Object service, @SuppressWarnings("rawtypes") Dictionary properties) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
+			ID[] idFilter, String clazz, String filter)
+			throws InvalidSyntaxException, ContainerConnectException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IFuture asyncGetRemoteServiceReferences(ID target, ID[] idFilter,
+			String clazz, String filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID[] idFilter,
+			String clazz, String filter) throws InvalidSyntaxException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
+			String clazz, String filter) throws InvalidSyntaxException,
+			ContainerConnectException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IFuture asyncGetRemoteServiceReferences(ID[] idFilter, String clazz,
+			String filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IFuture asyncGetRemoteServiceReferences(ID target, String clazz,
+			String filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getAllRemoteServiceReferences(
+			String clazz, String filter) throws InvalidSyntaxException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Namespace getRemoteServiceNamespace() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceID getRemoteServiceID(ID containerID,
+			long containerRelativeID) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference getRemoteServiceReference(
+			IRemoteServiceID serviceID) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteService getRemoteService(IRemoteServiceReference reference) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public boolean ungetRemoteService(IRemoteServiceReference reference) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public IRemoteFilter createRemoteFilter(String filter)
+			throws InvalidSyntaxException {
+		return new RemoteFilterImpl(filter);
+	}
+
+	public void setConnectContextForAuthentication(
+			IConnectContext connectContext) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+	
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainerInstantiator.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainerInstantiator.java
new file mode 100644
index 0000000..3f0c6be
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainerInstantiator.java
@@ -0,0 +1,47 @@
+/****************************************************************************
+ * 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.internal.examples.provider.remoteservice.container;
+
+import org.eclipse.ecf.core.ContainerCreateException;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+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.provider.BaseRemoteServiceContainerInstantiator;
+
+public class RSExampleContainerInstantiator extends BaseRemoteServiceContainerInstantiator {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.core.provider.BaseContainerInstantiator#createInstance(org.eclipse.ecf.core.ContainerTypeDescription, java.lang.Object[])
+	 */
+	public IContainer createInstance(ContainerTypeDescription description, Object[] parameters) throws ContainerCreateException {
+		try {
+			if (parameters != null && parameters.length > 0) {
+				if (parameters[0] instanceof ID)
+					return new RSExampleContainer((ID) parameters[0]);
+				if (parameters[0] instanceof String)
+					return new RSExampleContainer(IDFactory.getDefault().createStringID((String) parameters[0]));
+			}
+			return new RSExampleContainer();
+		} catch (final IDCreateException e) {
+			throw new ContainerCreateException("Exception creating ID for trivial container", e);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.core.provider.BaseContainerInstantiator#getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)
+	 */
+	public String[] getSupportedAdapterTypes(ContainerTypeDescription description) {
+		// TODO Return String [] with adapter types supported for the given description
+		return super.getSupportedAdapterTypes(description);
+	}
+}
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
old mode 100755
new mode 100644
index 046d8cb..be99f72
--- 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
@@ -1,13 +1,18 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ECF Trivial Provider
+Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.examples.provider.trivial;singleton:=true
 Bundle-Version: 1.0.200.provider
 Bundle-Activator: org.eclipse.ecf.internal.examples.provider.trivial.Activator
-Bundle-Vendor: Eclipse.org
+Bundle-Vendor: %bundle.provider
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.ecf
 Eclipse-LazyStart: true
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
+Export-Package: org.eclipse.ecf.examples.provider.trivial,
+ org.eclipse.ecf.examples.provider.trivial.identity,
+ org.eclipse.ecf.internal.examples.provider.trivial;x-internal:=true,
+ org.eclipse.ecf.internal.examples.provider.trivial.container;x-internal:=true
+Bundle-Localization: bundle
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties
old mode 100755
new mode 100644
index 233c275..473c7b3
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties
@@ -3,6 +3,7 @@
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               products/
+               products/,\
+               bundle.properties
 jre.compilation.profile = J2SE-1.4
 src.includes = products/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/bundle.properties
similarity index 62%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
rename to examples/bundles/org.eclipse.ecf.examples.provider.trivial/bundle.properties
index e649bf6..3071af4 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/bundle.properties
@@ -1,11 +1,12 @@
-############################################################################
-# Copyright (c) 2010 Composent 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 Distribution Tests LocalDiscovery
-plugin.provider=Eclipse.org - ECF
-
+################################################################################
+# 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
+################################################################################
+bundle.name=ECF Trivial Provider
+bundle.provider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
old mode 100755
new mode 100644
index 32aa674..7ace60c
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
@@ -4,7 +4,7 @@
    <extension
          point="org.eclipse.ecf.identity.namespace">
       <namespace
-            class="org.eclipse.ecf.internal.examples.provider.trivial.identity.TrivialNamespace"
+            class="org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace"
             description="ECF Trivial Container Namespace"
             name="ecf.namespace.trivial">
       </namespace>
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialID.java
old mode 100755
new mode 100644
similarity index 85%
rename from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
rename to examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialID.java
index 0d10a27..859d249
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialID.java
@@ -9,25 +9,15 @@
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
 
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.trivial.identity;
 
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.identity.StringID;
 
-/**
- *
- */
 public class TrivialID extends StringID {
 
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = -3656862045346223983L;
 
-	/**
-	 * @param n
-	 * @param s
-	 */
 	protected TrivialID(Namespace n, String s) {
 		super(n, s);
 	}
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/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
old mode 100755
new mode 100644
similarity index 95%
rename from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java
rename to examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java
index 2898a5f..3b7ab14
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/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
@@ -9,15 +9,12 @@
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
 
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.trivial.identity;
 
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDCreateException;
 import org.eclipse.ecf.core.identity.Namespace;
 
-/**
- *
- */
 public class TrivialNamespace extends Namespace {
 
 	private static final long serialVersionUID = 1235788855435011811L;
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java
old mode 100755
new mode 100644
index 8888164..6b68fdd
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java
@@ -23,7 +23,7 @@
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.internal.examples.provider.trivial.identity.TrivialNamespace;
+import org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace;
 
 /**
  * Trivial container implementation. Note that container adapter implementations can be
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
old mode 100755
new mode 100644
index 4cce5e6..c678294
--- 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
@@ -19,9 +19,6 @@
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.provider.BaseContainerInstantiator;
 
-/**
- *
- */
 public class TrivialContainerInstantiator extends BaseContainerInstantiator {
 
 	/* (non-Javadoc)
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 d193831..6fe7d65 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
@@ -3,12 +3,12 @@
   <endpoint-description>
     <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
     <property name="endpoint.framework.uuid" value-type="String" value="70cd3d4b-4931-0010-1b63-d64101cefd5e"/>
-    <property name="endpoint.id" value-type="String" value="ecftcp://VAIO:3282/server"/>
-    <property name="endpoint.package.version.org.eclipse.ecf.tests.remoteservice" value-type="String" value="2.0.0"/>
-    <property name="endpoint.service.id" value-type="Long" value="1"/>
+    <property name="endpoint.id" value-type="String" value="ecftcp://localhost:3787/server"/>
+    <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="objectClass" value-type="String">
       <array>
-        <value>org.eclipse.ecf.tests.remoteservice.IConcatService</value>
+        <value>org.eclipse.ecf.examples.remoteservices.hello.IHello</value>
       </array>
     </property>
     <property name="remote.configs.supported" value-type="String">
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 f329f1a..a5b48ad 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
@@ -1,46 +1,47 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>
-      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <plugins>
-      <plugin id="ch.ethz.iks.r_osgi.remote"/>
-      <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"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.rs"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <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.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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-   <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.osgi" autoStart="true" startLevel="-1" />
-   </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>
+      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <plugins>
+      <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <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"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.rs"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <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.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.preferences"/>
+      <plugin id="org.eclipse.equinox.registry"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.objectweb.asm"/>
+   </plugins>
+
+   <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.osgi" autoStart="true" startLevel="-1" />
+   </configurations>
+
+</product>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
similarity index 74%
rename from "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
rename to "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
index b335ebb..61983c8 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.generichelloconsumer.local" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">
+<product name="Generic Hello Consumer EDEF Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.edef.generic" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.1.qualifier" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -31,9 +31,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.edef"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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"/>
@@ -48,5 +48,9 @@
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
    </plugins>
 
+   <configurations>
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" 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 721e9de..916a78a 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.generichelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="Generic Hello Consumer Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zeroconf.generic" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -30,9 +30,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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"/>
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 972935f..87026b8 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="R-OSGi Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.rosgihelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="R-OSGi Hello Consumer Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zeroconf.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -32,9 +32,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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.jslp"/>
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 7ebd524..c09306f 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.zoogenerichelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="Generic Hello Consumer Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zookeeper.generic" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -40,9 +40,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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.provider.zookeeper"/>
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 02cb790..d910b78 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="R-OSGi Zookeeper Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.rosgizookeeperhelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="R-OSGi Hello Consumer Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zookeeper.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -39,9 +39,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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.r_osgi"/>
       <plugin id="org.eclipse.ecf.provider.zookeeper"/>
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 8dcb26e..bc8fe36 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
@@ -64,7 +64,7 @@
 		// property set (as defined by OSGi 4.2 remote services spec).
 		helloServiceTracker = new ServiceTracker(bundleContext,
 				createRemoteFilter(), this);
-		helloServiceTracker.open(true);
+		helloServiceTracker.open();
 
 		waitForDone();
 
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 2b7f2f3..f32aa23 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"
@@ -1,59 +1,67 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product name="ECF Remote Services Example Hello DS" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.HelloConsumerDS" version="1.0.0" useFeatures="false" includeLaunchers="true">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console -consoleLog</programArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <launcher>
-      <solaris/>
-      <win useIco="false">
-         <bmp/>
-      </win>
-   </launcher>
-
-   <vm>
-   </vm>
-
-   <plugins>
-      <plugin id="org.eclipse.core.contenttype"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.core.runtime"/>
-      <plugin id="org.eclipse.ecf"/>
-      <plugin id="org.eclipse.ecf.discovery"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
-      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
-      <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.sharedobject"/>
-      <plugin id="org.eclipse.equinox.app"/>
-      <plugin id="org.eclipse.equinox.common"/>
-      <plugin id="org.eclipse.equinox.concurrent"/>
-      <plugin id="org.eclipse.equinox.ds"/>
-      <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"/>
-   </plugins>
-
-   <configurations>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="3" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
-   </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="ECF Remote Services Example Hello DS" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.HelloConsumerDS" version="3.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-console -consoleLog</programArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.core.runtime"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer"/>
+      <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.sharedobject"/>
+      <plugin id="org.eclipse.equinox.app"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <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="org.eclipse.core.runtime" autoStart="true" startLevel="2" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer" 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.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" />
+   </configurations>
+
+</product>
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 338236e..2e9073a 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: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
  CDC-1.1/Foundation-1.1
-Import-Package: org.eclipse.ecf.core;version="3.0.0",
- org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
- org.eclipse.equinox.app;version="1.0.0"
+Import-Package: org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+ org.eclipse.equinox.app;version="1.1.0"
 Service-Component: OSGI-INF/hello.xml
 Bundle-Localization: bundle
-Export-Package: org.eclipse.ecf.examples.internal.remoteservices.hello.ds.host
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
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 ad44a49..81a1286 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,9 +3,8 @@
    <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="org.eclipse.ecf.containerFactoryArgs" type="String" value="ecftcp://localhost:30001/server"/>
+   <property name="ecf.exported.containerfactoryargs" type="String" value="ecftcp://localhost:3787/server"/>
    <service>
       <provide interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
    </service>
-   <reference cardinality="1..1" interface="org.eclipse.ecf.core.IContainerFactory" name="IContainerFactory" policy="static"/>
 </scr:component>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties
index f1d5c84..4402b98 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties
@@ -2,16 +2,14 @@
 bin.includes = META-INF/,\
                .,\
                OSGI-INF/hello.xml,\
-               plugin.xml,\
                about.html,\
                bundle.properties,\
                products/,\
-               OSGI-INF/
+               OSGI-INF/,\
+               plugin.xml
 source.. = src/
 src.includes = bundle.properties,\
                about.html,\
                products/
-jre.compilation.profile = J2SE-1.4
-javacTarget=jsr14
-javacSource=1.5
+jre.compilation.profile = J2SE-1.5
                
\ No newline at end of file
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 2123f0b..98efe93 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,58 +1,66 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="true">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console -consoleLog</programArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <launcher>
-      <solaris/>
-      <win useIco="false">
-         <bmp/>
-      </win>
-   </launcher>
-
-   <vm>
-   </vm>
-
-   <plugins>
-      <plugin id="org.eclipse.core.contenttype"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.core.runtime"/>
-      <plugin id="org.eclipse.ecf"/>
-      <plugin id="org.eclipse.ecf.discovery"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.host"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
-      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
-      <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.sharedobject"/>
-      <plugin id="org.eclipse.equinox.app"/>
-      <plugin id="org.eclipse.equinox.common"/>
-      <plugin id="org.eclipse.equinox.concurrent"/>
-      <plugin id="org.eclipse.equinox.ds"/>
-      <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"/>
-   </plugins>
-
-   <configurations>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.host" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
-   </configurations>
-
-</product>
+<?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.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-console -consoleLog</programArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+      <plugin id="org.eclipse.core.contenttype"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.core.runtime"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.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.sharedobject"/>
+      <plugin id="org.eclipse.equinox.app"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.ds"/>
+      <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="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" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java
index 08567f8..ca1158e 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java
@@ -25,4 +25,5 @@
 		System.out.println("received HelloMessage="+message);
 		return "Server says 'Hi' back to "+message.getFrom();
 	}
+	
 }
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 18982db..85ca81b 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
@@ -1,42 +1,43 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product application="org.eclipse.ui.ide.workbench" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>
-      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <plugins>
-      <plugin id="ch.ethz.iks.r_osgi.remote"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.ecf"/>
-      <plugin id="org.eclipse.ecf.discovery"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host.rs"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <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.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.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-   <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.osgi" autoStart="true" startLevel="-1" />
-   </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product application="org.eclipse.ui.ide.workbench" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>
+      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <plugins>
+      <plugin id="ch.ethz.iks.r_osgi.remote"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host.rs"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <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.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.registry"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.objectweb.asm"/>
+   </plugins>
+
+   <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.osgi" autoStart="true" startLevel="-1" />
+   </configurations>
+
+</product>
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
similarity index 68%
copy from "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
copy to "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
index b335ebb..e0761ff 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.generichelloconsumer.local" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">
+<product name="Generic Hello Host EDEF Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.edef.generic" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
 
    <launcherArgs>
-      <programArgs>-console -consoleLog -containerType ecf.generic.client</programArgs>
+      <programArgs>-containerType ecf.generic.server
+-containerId ecftcp://localhost:3787/server
+-console
+-consoleLog</programArgs>
       <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
    </launcherArgs>
 
@@ -28,12 +31,11 @@
       <plugin id="org.eclipse.ecf"/>
       <plugin id="org.eclipse.ecf.discovery"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.edef"/>
+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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"/>
@@ -48,5 +50,10 @@
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
    </plugins>
 
+   <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.osgi" autoStart="true" startLevel="-1" />
+   </configurations>
 
 </product>
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 3b7b8dc..bb54de1 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="Generic Hello Host" uid="org.eclipse.ecf.examples.remoteservices.generichellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="Generic Hello Host Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zeroconf.generic" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -33,9 +33,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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"/>
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 4ee20b3..3309270 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="R-OSGI Hello Host" uid="org.eclipse.ecf.examples.remoteservices.rosgihellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="R-OSGI Hello Host Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zeroconf.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -32,9 +32,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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"/>
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 b8d2e4a..7bc633d 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="Generic Zookeeper Hello Host" uid="org.eclipse.ecf.examples.remoteservices.genericzookeeperhellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="Generic Hello Host Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zookeeper.generic" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -10,7 +10,7 @@
       <programArgs>-console 
 -consoleLog
 -containerType ecf.generic.server
--containerId ecftcp://localhost:5782/server</programArgs>
+-containerId ecftcp://localhost:3787/server</programArgs>
       <vmArgs>-Dzoodiscovery.dataDir=zookeeperdata2
 -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:2002;clientPort=2001
 -Xms40m
@@ -41,9 +41,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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.provider.zookeeper"/>
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 fb66985..08f0205 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"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="R-OSGI Zookeeper Hello Host" uid="org.eclipse.ecf.examples.remoteservices.rosgizookeeperhellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">
+<product name="R-OSGI Hello Host Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zookeeper.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">
 
    <configIni use="default">
    </configIni>
@@ -39,9 +39,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>
       <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
       <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.r_osgi"/>
       <plugin id="org.eclipse.ecf.provider.zookeeper"/>
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 f4fe9e5..e131411 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,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 3.0.100.qualifier
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
@@ -12,3 +12,4 @@
 Bundle-Localization: bundle
 Import-Package: org.eclipse.ecf.remoteservice,
  org.eclipse.equinox.concurrent.future;version="1.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF
index 87a1594..f24ba90 100644
--- a/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF
@@ -8,8 +8,8 @@
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.3
-Import-Package: org.eclipse.ecf.core;version="3.0.0",
- org.eclipse.ecf.core.identity;version="3.0.0",
+Import-Package: org.eclipse.ecf.core,
+ org.eclipse.ecf.core.identity,
  org.eclipse.ecf.core.util,
  org.eclipse.osgi.framework.console;version="1.0.0",
  org.osgi.framework;version="1.3.0",
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 331f2bb..66ee459 100644
--- a/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.identity;singleton:=true
-Bundle-Version: 3.1.100.qualifier
+Bundle-Version: 3.1.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.identity.Activator
 Bundle-Localization: plugin
 Bundle-Vendor: %plugin.provider
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 c040aed..7bbadf3 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
@@ -36,6 +36,7 @@
 		addNamespace0(new StringID.StringIDNamespace());
 		addNamespace0(new GUID.GUIDNamespace());
 		addNamespace0(new LongID.LongNamespace());
+		addNamespace0(new URIID.URIIDNamespace());
 	}
 
 	private synchronized static void initialize() {
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java
index 5c76c2e..661fbc7 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+ * Copyright (c) 2011 Composent 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
@@ -19,6 +19,49 @@
  */
 public class URIID extends BaseID implements IResourceID {
 
+	static class URIIDNamespace extends Namespace {
+
+		private static final long serialVersionUID = 115165512542491014L;
+
+		public URIIDNamespace(String name, String desc) {
+			super(name, desc);
+		}
+
+		public URIIDNamespace() {
+			super(URIID.class.getName(), "URIID Namespace"); //$NON-NLS-1$
+		}
+
+		public ID createInstance(Object[] parameters) throws IDCreateException {
+			try {
+				String init = getInitStringFromExternalForm(parameters);
+				if (init != null)
+					return new URIID(this, new URI(init));
+				if (parameters[0] instanceof URI)
+					return new URIID(this, (URI) parameters[0]);
+				if (parameters[0] instanceof String)
+					return new URIID(this, new URI((String) parameters[0]));
+				throw new IDCreateException("Cannot create URIID");
+			} catch (Exception e) {
+				throw new IDCreateException(URIIDNamespace.this.getName()
+						+ " createInstance()", e); //$NON-NLS-1$
+			}
+		}
+
+		public String getScheme() {
+			return "uri";
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @seeorg.eclipse.ecf.core.identity.Namespace#
+		 * getSupportedParameterTypesForCreateInstance()
+		 */
+		public Class[][] getSupportedParameterTypes() {
+			return new Class[][] { { String.class }, { URI.class } };
+		}
+	}
+
 	private static final long serialVersionUID = 7328962407044918278L;
 	private final URI uri;
 
@@ -56,4 +99,8 @@
 		return uri;
 	}
 
+	public String toString() {
+		return "URIID [uri=" + uri + "]";
+	}
+
 }
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java
index 2692b72..8de74db 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java
@@ -400,7 +400,11 @@
 
 		if (shouldTrace(pluginId, option)) {
 			StringBuffer buf = new StringBuffer(PREFIX_CATCHING);
-			buf.append(throwable.getMessage()).append(SEPARATOR_SPACE);
+			if (throwable != null) {
+				String message = throwable.getMessage();
+				if (message != null)
+					buf.append(message).append(SEPARATOR_SPACE);
+			}
 			buf.append(PARENTHESIS_OPEN).append(clazz.getName())
 					.append(SEPARATOR_METHOD);
 			buf.append(methodName).append(PARENTHESIS_CLOSE);
@@ -431,7 +435,11 @@
 
 		if (shouldTrace(pluginId, option)) {
 			StringBuffer buf = new StringBuffer(PREFIX_THROWING);
-			buf.append(throwable.getMessage()).append(SEPARATOR_SPACE);
+			if (throwable != null) {
+				String message = throwable.getMessage();
+				if (message != null)
+					buf.append(message).append(SEPARATOR_SPACE);
+			}
 			buf.append(PARENTHESIS_OPEN).append(clazz.getName())
 					.append(SEPARATOR_METHOD);
 			buf.append(methodName).append(PARENTHESIS_CLOSE);
diff --git a/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs
index e50b971..b686d15 100644
--- a/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs
@@ -1,351 +1,358 @@
-#Mon May 04 17:44:35 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.3
-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.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:23:05 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=error
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=800
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs
index ac57995..36fe1ba 100644
--- a/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs
@@ -1,347 +1,354 @@
-#Mon May 04 17:44:36 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-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.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:25:22 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=800
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
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 d59a513..05257a6 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.1.0.qualifier
+Bundle-Version: 4.2.100.qualifier
 Bundle-Name: %plugin.name
 Bundle-Vendor: %plugin.provider
 Bundle-Activator: org.eclipse.ecf.internal.provider.ProviderPlugin
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java
index cfc4ddc..49bf76f 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java
@@ -109,12 +109,12 @@
 		setupThreads();
 	}
 
-	public Client(ISynchAsynchEventHandler handler, int maxmsgs) {
+	public Client(ISynchAsynchEventHandler handler, int keepAlive) {
 		if (handler == null)
 			throw new NullPointerException("event handler cannot be null"); //$NON-NLS-1$
 		this.handler = handler;
+		this.keepAlive = keepAlive;
 		containerID = handler.getEventHandlerID();
-		maxMsg = maxmsgs;
 		this.properties = new HashMap();
 	}
 
@@ -179,8 +179,7 @@
 			fact = SocketFactory.getDefaultSocketFactory();
 		ConnectResultMessage res = null;
 		try {
-			keepAlive = timeout;
-			final Socket s = fact.createSocket(anURI.getHost(), anURI.getPort(), keepAlive);
+			final Socket s = fact.createSocket(anURI.getHost(), anURI.getPort(), timeout);
 			// Set socket options
 			setSocketOptions(s);
 			// Now we've got a connection so set our socket
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 4f68a7d..1d088cf 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
@@ -10,6 +10,9 @@
  ******************************************************************************/
 package org.eclipse.ecf.provider.generic;
 
+import java.io.IOException;
+import java.net.BindException;
+import java.net.ServerSocket;
 import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.ecf.core.*;
@@ -33,6 +36,10 @@
 
 	private static final int CREATE_INSTANCE_ERROR_CODE = 4441;
 
+	private static final String ID_PROP = "id"; //$NON-NLS-1$
+
+	private static final String KEEPALIVE_PROP = "keepAlive"; //$NON-NLS-1$
+
 	public GenericContainerInstantiator() {
 		super();
 	}
@@ -95,7 +102,14 @@
 		ID newID = null;
 		Integer ka = null;
 		if (args != null && args.length > 0) {
-			if (args.length > 1) {
+			if (args[0] instanceof Map) {
+				Map map = (Map) args[0];
+				Object idVal = map.get(ID_PROP);
+				if (idVal == null)
+					throw new IDCreateException("Cannot create ID.  No property with key=" + ID_PROP + " found in configuration=" + map); //$NON-NLS-1$ //$NON-NLS-2$
+				newID = getIDFromArg(idVal);
+				ka = getIntegerFromArg(map.get(KEEPALIVE_PROP));
+			} else if (args.length > 1) {
 				if (args[0] instanceof String || args[0] instanceof ID)
 					newID = getIDFromArg(args[0]);
 				if (args[1] instanceof String || args[1] instanceof Integer)
@@ -123,7 +137,14 @@
 		ID newID = null;
 		Integer ka = null;
 		if (args != null && args.length > 0) {
-			if (args.length > 1) {
+			if (args[0] instanceof Map) {
+				Map map = (Map) args[0];
+				Object idVal = map.get(ID_PROP);
+				if (idVal == null)
+					throw new IDCreateException("Cannot create ID.  No property with key=" + ID_PROP + " found in configuration=" + map); //$NON-NLS-1$ //$NON-NLS-2$
+				newID = getIDFromArg(idVal);
+				ka = getIntegerFromArg(map.get(KEEPALIVE_PROP));
+			} else if (args.length > 1) {
 				if (args[0] instanceof String || args[0] instanceof ID)
 					newID = getIDFromArg(args[0]);
 				if (args[1] instanceof String || args[1] instanceof Integer)
@@ -131,31 +152,76 @@
 			} else
 				newID = getIDFromArg(args[0]);
 		}
-		if (newID == null)
-			newID = IDFactory.getDefault().createStringID(TCPServerSOContainer.DEFAULT_PROTOCOL + "://" + TCPServerSOContainer.DEFAULT_HOST + ":" + TCPServerSOContainer.DEFAULT_PORT + TCPServerSOContainer.DEFAULT_NAME); //$NON-NLS-1$ //$NON-NLS-2$
+		if (newID == null) {
+			int port = -1;
+			if (TCPServerSOContainer.DEFAULT_FALLBACK_PORT) {
+				port = getFreePort();
+			} else if (portIsFree(TCPServerSOContainer.DEFAULT_PORT)) {
+				port = TCPServerSOContainer.DEFAULT_PORT;
+			}
+			if (port < 0)
+				throw new IDCreateException("No server port is available for generic server creation.  org.eclipse.ecf.provider.generic.port.fallback=" + TCPServerSOContainer.DEFAULT_FALLBACK_PORT + " and org.eclipse.ecf.provider.generic.port=" + TCPServerSOContainer.DEFAULT_PORT); //$NON-NLS-1$ //$NON-NLS-2$
+			newID = IDFactory.getDefault().createStringID(TCPServerSOContainer.DEFAULT_PROTOCOL + "://" + TCPServerSOContainer.DEFAULT_HOST + ":" + port + TCPServerSOContainer.DEFAULT_NAME);//$NON-NLS-1$ //$NON-NLS-2$
+		}
 		if (ka == null)
 			ka = new Integer(TCPServerSOContainer.DEFAULT_KEEPALIVE);
 		return new GenericContainerArgs(newID, ka);
 	}
 
+	private boolean portIsFree(int port) {
+		ServerSocket ss = null;
+		try {
+			ss = new ServerSocket(port);
+			ss.close();
+		} catch (BindException e) {
+			return false;
+		} catch (IOException e) {
+			return false;
+		} finally {
+			if (ss != null)
+				try {
+					ss.close();
+				} catch (IOException e) {
+					throw new IDCreateException(e);
+				}
+		}
+		return true;
+	}
+
+	/**
+	 * @return a free socket port
+	 */
+	private int getFreePort() {
+		int port = -1;
+		try {
+			ServerSocket ss = new ServerSocket(0);
+			port = ss.getLocalPort();
+			ss.close();
+		} catch (IOException e) {
+			return -1;
+		}
+		return port;
+	}
+
 	public IContainer createInstance(ContainerTypeDescription description, Object[] args) throws ContainerCreateException {
 		boolean isClient = isClient(description);
 		try {
 			GenericContainerArgs gcargs = null;
-			if (isClient)
-				gcargs = getClientArgs(args);
-			else
-				gcargs = getServerArgs(args);
-			// new ID must not be null
 			if (isClient) {
+				gcargs = getClientArgs(args);
 				return new TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
 			}
-			return new TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+			// 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.getKeepAlive().intValue());
+			}
 		} catch (Exception e) {
 			Trace.catching(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "createInstance", e); //$NON-NLS-1$
 			ProviderPlugin.getDefault().log(new Status(IStatus.ERROR, ProviderPlugin.PLUGIN_ID, CREATE_INSTANCE_ERROR_CODE, "createInstance", e)); //$NON-NLS-1$
 			Trace.throwing(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_THROWING, this.getClass(), "createInstance", e); //$NON-NLS-1$
-			throw new ContainerCreateException("createInstance", e); //$NON-NLS-1$
+			throw new ContainerCreateException("Create of containerType=" + description.getName() + " failed.", e); //$NON-NLS-1$ //$NON-NLS-2$
 		}
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java
index 7f9f4b0..6ba35c6 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java
@@ -29,6 +29,11 @@
 
 	public static String DEFAULT_HOST = System.getProperty("org.eclipse.ecf.provider.generic.host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$
 
+	/**
+	 * @since 4.2
+	 */
+	public static final boolean DEFAULT_FALLBACK_PORT = Boolean.valueOf(System.getProperty("org.eclipse.ecf.provider.generic.port.fallback", "true")).booleanValue(); //$NON-NLS-1$//$NON-NLS-2$
+
 	static {
 		final Boolean useHostname = Boolean.valueOf(System.getProperty("org.eclipse.ecf.provider.generic.host.useHostName", "true")); //$NON-NLS-1$ //$NON-NLS-2$
 		if (useHostname.booleanValue()) {
@@ -65,7 +70,7 @@
 		// Make sure URI syntax is followed.
 		URI actualURI = new URI(getID().getName());
 		int urlPort = actualURI.getPort();
-		if (group == null) {
+		if (grp == null) {
 			isSingle = true;
 			this.group = new TCPServerSOContainerGroup(urlPort);
 			this.group.putOnTheAir();
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 1c84bdd..3ce331d 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
@@ -8,7 +8,6 @@
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Import-Package: com.sun.syndication.feed;version="0.9.0",
  com.sun.syndication.io;version="0.9.0",
- org.eclipse.core.runtime;version="3.4.0",
  org.eclipse.ecf.core.util,
  org.eclipse.ecf.remoteservice,
  org.eclipse.ecf.remoteservice.client,
@@ -16,6 +15,7 @@
  org.osgi.service.log;version="1.3.0",
  org.osgi.util.tracker;version="1.4.0"
 Bundle-ActivationPolicy: lazy
-Require-Bundle: org.jdom;bundle-version="1.0.0"
+Require-Bundle: org.jdom;bundle-version="1.0.0",
+ org.eclipse.equinox.common;bundle-version="3.6.0"
 Export-Package: org.eclipse.ecf.remoteservice.rest.synd
 Bundle-Localization: plugin
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 668eba2..6d3f352 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.1.0.qualifier
+Bundle-Version: 2.2.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rest.Activator
 Bundle-ActivationPolicy: lazy
 Eclipse-BuddyPolicy: global
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java
index 14e1687..a90471a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java
@@ -16,6 +16,7 @@
 
 	private static final long serialVersionUID = -6565657473114300609L;
 	private int errorCode = -1;
+	private String response = null;
 
 	public RestException(IStatus status) {
 		super(status);
@@ -57,7 +58,17 @@
 		this.errorCode = errorCode;
 	}
 
+	public RestException(String message, Throwable cause, int errorCode, String response) {
+		super(message, cause);
+		this.errorCode = errorCode;
+		this.response = response;
+	}
+
 	public int getErrorCode() {
 		return errorCode;
 	}
+
+	public String getResponseBody() {
+		return response;
+	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java
index ad64400..118ec23 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java
@@ -48,6 +48,11 @@
 		this.httpClient = new HttpClient();
 	}
 
+	private boolean isResponseOk(int httpResponseCode) {
+		int isOkCode = httpResponseCode - 200;
+		return (isOkCode >= 0 && isOkCode < 100);
+	}
+
 	/**
 	 * Calls the Rest service with given URL of IRestCall. The returned value is
 	 * the response body as an InputStream.
@@ -67,18 +72,17 @@
 		int responseCode = -1;
 		try {
 			responseCode = httpClient.executeMethod(httpMethod);
-			if (responseCode == HttpStatus.SC_OK) {
-				// Get response bytes
-				byte[] responseBytes = httpMethod.getResponseBody();
-				String responseCharSet = null;
-				if (httpMethod instanceof HttpMethodBase) {
-					HttpMethodBase methodBase = (HttpMethodBase) httpMethod;
-					responseCharSet = methodBase.getRequestCharSet();
-				}
+			if (isResponseOk(responseCode)) {
 				// Get responseBody as String
-				responseBody = getResponseAsString(responseBytes, responseCharSet);
-			} else
-				handleException("Http response not OK.  URL=" + uri + " responseCode=" + new Integer(responseCode), null, responseCode); //$NON-NLS-1$ //$NON-NLS-2$
+				responseBody = getResponseAsString(httpMethod);
+			} else {
+				// If this method returns true, we should retrieve the response body
+				if (retrieveErrorResponseBody(responseCode)) {
+					responseBody = getResponseAsString(httpMethod);
+				}
+				// Now pass to the exception handler
+				handleException("Http response not OK.  URL=" + uri + " responseCode=" + new Integer(responseCode), null, responseCode, responseBody); //$NON-NLS-1$ //$NON-NLS-2$
+			}
 		} catch (HttpException e) {
 			handleException("Transport HttpException", e, responseCode); //$NON-NLS-1$
 		} catch (IOException e) {
@@ -93,15 +97,35 @@
 		return result;
 	}
 
+	protected boolean retrieveErrorResponseBody(int responseCode) {
+		// XXX this needs to be defined differently for 
+		return false;
+	}
+
+	protected String getResponseAsString(HttpMethod httpMethod) throws IOException {
+		// Get response bytes
+		byte[] responseBytes = httpMethod.getResponseBody();
+		String responseCharSet = null;
+		if (httpMethod instanceof HttpMethodBase) {
+			HttpMethodBase methodBase = (HttpMethodBase) httpMethod;
+			responseCharSet = methodBase.getRequestCharSet();
+		}
+		return getResponseAsString(responseBytes, responseCharSet);
+	}
+
 	protected String getResponseAsString(byte[] bytes, String responseCharSet) {
 		if (bytes == null)
 			return null;
 		return EncodingUtil.getString(bytes, responseCharSet);
 	}
 
-	protected void handleException(String message, Throwable e, int responseCode) throws RestException {
+	protected void handleException(String message, Throwable e, int responseCode, String responseBody) throws RestException {
 		logException(message, e);
-		throw new RestException(message, e, responseCode);
+		throw new RestException(message, e, responseCode, responseBody);
+	}
+
+	protected void handleException(String message, Throwable e, int responseCode) throws RestException {
+		handleException(message, e, responseCode, null);
 	}
 
 	protected void setupTimeouts(HttpClient httpClient, IRemoteCall call, IRemoteCallable callable) {
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 c640ead..c82d04e 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
@@ -5,11 +5,13 @@
 Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rpc.Activator
 Bundle-Vendor: %plugin.provider
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ecf
+Require-Bundle: org.eclipse.ecf,
+ org.eclipse.equinox.common;bundle-version="3.6.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
-Import-Package: org.apache.commons.httpclient;version="3.1.0",
+Import-Package: org.osgi.framework, 
+ org.osgi.util.tracker,
+ 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",
  org.apache.commons.httpclient.params;version="3.1.0",
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Messages.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Messages.java
deleted file mode 100644
index d61c69c..0000000
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Messages.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/******************************************************************************* 
- * 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.internal.remoteservice.rpc;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-
-	private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.remoteservice.rpc.messages"; //$NON-NLS-1$
-
-	public static String RPC_INVALID_PARAMETERS_TO_ID_CREATION;
-	public static String RPC_COULD_NOT_CREATE_ID;
-	public static String RPC_COULD_NOT_CREATE_CONTAINER;
-	public static String RPC_EXCEPTION_WHILE_EXECUTION_METHOD;
-
-	static {
-		// initialize resource bundle
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-
-	private Messages() {
-		// empty constructor
-	}
-}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java
index cb028b3..248b63a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java
@@ -33,7 +33,7 @@
 				ID = (RpcId) IDFactory.getDefault().createID(RpcNamespace.NAME, parameters);
 			return new RpcClientContainer(ID);
 		} catch (Exception e) {
-			throw new ContainerCreateException(Messages.RPC_COULD_NOT_CREATE_CONTAINER, e);
+			throw new ContainerCreateException("Could not create RPCClientContainer", e); //$NON-NLS-1$
 		}
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/messages.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/messages.properties
deleted file mode 100644
index 1c4048f..0000000
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/messages.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-############################################################################
-# Copyright (c) 2010-2011 Naumen, 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
-############################################################################
-RPC_INVALID_PARAMETERS_TO_ID_CREATION = Invalid parameters to RPCID creation
-RPC_COULD_NOT_CREATE_ID = Could not create RPC ID
-RPC_COULD_NOT_CREATE_CONTAINER = Could not create RPCClientContainer
-RPC_EXCEPTION_WHILE_EXECUTION_METHOD = Exception while execution method:
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java
index 95cb2f7..b8b41a0 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java
@@ -17,7 +17,6 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.ecf.core.util.ECFException;
 import org.eclipse.ecf.internal.remoteservice.rpc.Activator;
-import org.eclipse.ecf.internal.remoteservice.rpc.Messages;
 import org.eclipse.ecf.remoteservice.IRemoteCall;
 import org.eclipse.ecf.remoteservice.client.*;
 import org.eclipse.ecf.remoteservice.rpc.RpcException;
@@ -96,7 +95,7 @@
 		try {
 			result = client.execute(operation, toObjectsArray(operation, call, callable));
 		} catch (Exception e) {
-			handleException(Messages.RPC_EXCEPTION_WHILE_EXECUTION_METHOD + operation, e);
+			handleException("Exception while executing method:" + operation, e); //$NON-NLS-1$
 		}
 
 		return result;
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 b42a2d9..01720e6 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
@@ -13,7 +13,6 @@
 import java.net.URL;
 import java.util.*;
 import org.eclipse.ecf.core.identity.*;
-import org.eclipse.ecf.internal.remoteservice.rpc.Messages;
 import org.eclipse.ecf.remoteservice.rpc.client.RpcClientContainer;
 
 /**
@@ -80,9 +79,9 @@
 				else if (parameters[0] instanceof RpcId)
 					return (ID) parameters[0];
 			}
-			throw new IllegalArgumentException(Messages.RPC_INVALID_PARAMETERS_TO_ID_CREATION);
+			throw new IllegalArgumentException("Invalid parameters to RPCID creation"); //$NON-NLS-1$
 		} catch (Exception e) {
-			throw new IDCreateException(Messages.RPC_COULD_NOT_CREATE_ID, e);
+			throw new IDCreateException("Could not create RPC ID", e); //$NON-NLS-1$
 		}
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF
index f8f2c8a..4010c7a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF
@@ -7,7 +7,7 @@
 Fragment-Host: org.eclipse.ecf.remoteservice.ui;bundle-version="[3.0.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-Localization: plugin
-Import-Package: org.eclipse.ecf.osgi.services.discovery;version="1.0.0",
- org.eclipse.ecf.osgi.services.distribution;version="1.0.0"
+Import-Package: org.eclipse.ecf.osgi.services.distribution;version="2.0.0",
+ org.eclipse.ecf.osgi.services.remoteserviceadmin;version="1.0.0"
 DynamicImport-Package: *
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml
index 7de9bc7..9482e1e 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml
@@ -23,7 +23,7 @@
                         ifEmpty="false"
                         operator="and">
                         <test
-                              args="osgiservices"
+                              args="ecf.osgirsvc"
                               property="org.eclipse.ecf.discovery.isServiceType"
                               value="true">
                         </test>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java
index 0014a3c..15f00b3 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java
@@ -17,9 +17,8 @@
 import org.eclipse.ecf.discovery.ui.DiscoveryHandlerUtil;
 import org.eclipse.ecf.internal.remoteservices.ui.Activator;
 import org.eclipse.ecf.internal.remoteservices.ui.handlers.ReflectiveRemoteServiceHandler;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
+import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;
 import org.eclipse.ecf.remoteservice.IRemoteService;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.osgi.util.NLS;
@@ -46,13 +45,13 @@
 				.getServiceProperties();
 
 		final String clazz = serviceProperties
-				.getPropertyString(ServicePublication.SERVICE_INTERFACE_NAME);
+				.getPropertyString(Constants.OBJECTCLASS);
 		final String serviceId = new String(
 				serviceProperties
-						.getPropertyBytes(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));
+						.getPropertyString(RemoteConstants.SERVICE_IMPORTED_ENDPOINT_SERVICE_ID));
 		final String containerId = new String(
 				serviceProperties
-						.getPropertyBytes(RemoteServicePublication.ENDPOINT_CONTAINERID));
+						.getPropertyString(RemoteConstants.SERVICE_IMPORTED_ENDPOINT_ID));
 
 		// get the service via the osgi service registry
 		final BundleContext context = Activator.getDefault().getBundle()
@@ -61,8 +60,8 @@
 		try {
 			filter = context.createFilter("(&(" + Constants.OBJECTCLASS + "=" //$NON-NLS-1$ //$NON-NLS-2$
 					+ clazz + ")" + "(" + IDistributionConstants.SERVICE_IMPORTED + "=*" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					+ ")" + "(" + ServicePublication.ENDPOINT_ID + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					+ containerId + "#" + serviceId + "))"); //$NON-NLS-1$ //$NON-NLS-2$
+					+ ")" + "(" + RemoteConstants.SERVICE_IMPORTED_ENDPOINT_ID + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					+ containerId + ")(" + RemoteConstants.SERVICE_IMPORTED_ENDPOINT_SERVICE_ID + "=" + serviceId + "))"); //$NON-NLS-1$ //$NON-NLS-2$
 		} catch (InvalidSyntaxException e1) {
 			MessageDialog.openError(null, Messages.DOSGiReflectiveRemoteServiceHandler_HandlerInvocationFailed,
 					NLS.bind(Messages.DOSGiReflectiveRemoteServiceHandler_FilterCreationFailed, e1.getMessage()));
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch b/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch
index 8b18fe6..029def8 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch
@@ -1,32 +1,33 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" 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"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Discovery and Remote Service UI"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-New_configuration"/>
-<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.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consolelog -console -clean"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dnet.slp.port=65427&#10;-Dnet.mdns.port=65353&#10;&#10;-Dnet.slp.failercount=3&#13;&#10;-Dnet.slp.multicastTimeouts=10,25,50,100,250,500,1000&#13;&#10;-Dnet.slp.multicastMaximumWait=2000"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="restart" value="false"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.jobs@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.core.databinding@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.resources@default:default,org.eclipse.equinox.common@default:default,org.eclipse.core.variables@default:default,org.eclipse.ant.core@default:default,org.eclipse.osgi.services@default:default,org.eclipse.compare.core@default:default,org.eclipse.ui.views@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.core.commands@default:default,org.apache.lucene.analysis@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.core.runtime@default:true,org.eclipse.ecf.ssl@default:false,org.eclipse.ui@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.core.net@default:default,org.eclipse.ui.ide@default:default,org.eclipse.help.base@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.osgi@:,org.eclipse.core.resources.compatibility@default:false,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.platform@default:default,org.eclipse.core.databinding.property@default:default,org.apache.lucene@default:default,org.eclipse.ui.browser@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.ui.forms@default:default,org.eclipse.swt@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.jface@default:default,com.ibm.icu@default:default,org.eclipse.core.expressions@default:default,org.eclipse.jface.text@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.text@default:default,org.eclipse.ui.navigator@default:default,org.objectweb.asm@default:default,org.eclipse.ui.intro@default:default,org.eclipse.equinox.app@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.discovery.ui.edit@default:default,org.eclipse.ecf.discovery.ui.properties.tabbed@default:false,org.eclipse.ecf.provider.discovery@default:default,org.eclipse.ecf.discovery.ui.browser@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.discovery.ui@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.osgi.services@default:default,org.eclipse.ecf.remoteservice.ui@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,ch.ethz.iks.r_osgi.remote@default:default,org.eclipse.ecf.discovery.ui.properties@default:false,org.eclipse.ecf.examples.remoteservices.client@default:false,ch.ethz.iks.slp@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.ecf.provider.r_osgi@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.provider.jslp@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.discovery.ui.model@default:default,org.eclipse.ecf.osgi.services.distribution@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="true"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" 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"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Discovery and Remote Service UI"/>
+<booleanAttribute key="default" value="false"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-New_configuration"/>
+<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.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consolelog -console -clean"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dnet.slp.port=65427&#13;&#10;-Dnet.mdns.port=65353&#13;&#10;&#13;&#10;-Dnet.slp.failercount=3&#13;&#13;&#10;-Dnet.slp.multicastTimeouts=10,25,50,100,250,500,1000&#13;&#13;&#10;-Dnet.slp.multicastMaximumWait=2000"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="restart" value="false"/>
+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.osgi,org.eclipse.osgi.services@default:default,org.eclipse.platform@default:default,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.objectweb.asm@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="ch.ethz.iks.r_osgi.remote@default:default,ch.ethz.iks.slp@default:default,org.eclipse.ecf.discovery.ui.browser@default:default,org.eclipse.ecf.discovery.ui.edit@default:default,org.eclipse.ecf.discovery.ui.model@default:default,org.eclipse.ecf.discovery.ui.properties.tabbed@default:false,org.eclipse.ecf.discovery.ui.properties@default:false,org.eclipse.ecf.discovery.ui@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.remoteservices.client@default:false,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.provider.discovery@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.jslp@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.ui@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default"/>
+<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="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
index ccbc33c..7b6ead6 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
@@ -1,5 +1,24 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <component id="org.eclipse.ecf.remoteservice" version="2">
+    <resource path="src/org/eclipse/ecf/remoteservice/Constants.java" type="org.eclipse.ecf.remoteservice.Constants">
+        <filter comment="Added SERVICE_ASYNC_RSPROXY_CLASS constant" id="403767336">
+            <message_arguments>
+                <message_argument value="org.eclipse.ecf.remoteservice.Constants"/>
+                <message_argument value="SERVICE_ASYNC_RSPROXY_CLASS_"/>
+            </message_arguments>
+        </filter>
+        <filter id="405864542">
+            <message_arguments>
+                <message_argument value="org.eclipse.ecf.remoteservice.Constants"/>
+                <message_argument value="SERVICE_ASYNC_PROXY"/>
+            </message_arguments>
+        </filter>
+        <filter id="1211105284">
+            <message_arguments>
+                <message_argument value="SERVICE_ASYNC_RSPROXY_CLASS_"/>
+            </message_arguments>
+        </filter>
+    </resource>
     <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>
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 85f7e9e..1572038 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;singleton:=true
-Bundle-Version: 6.0.0.qualifier
+Bundle-Version: 6.0.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
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 eda6bbc..202ce16 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
@@ -170,8 +170,8 @@
 		String proxyClassName = convertInterfaceNameToAsyncInterfaceName(c.getName());
 		try {
 			return Class.forName(proxyClassName);
-		} catch (Exception e) {
-			logWarning("No async remote service interface found with name=" + proxyClassName + " for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
+		} catch (ClassNotFoundException e) {
+			logInfo("No async remote service interface found with name=" + proxyClassName + " for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
 			return null;
 		} catch (NoClassDefFoundError e) {
 			logWarning("Async remote service interface with name=" + proxyClassName + " could not be loaded for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
@@ -186,8 +186,8 @@
 		String proxyClassName = convertInterfaceNameToAsyncInterfaceName(c.getName());
 		try {
 			return Class.forName(proxyClassName, true, cl);
-		} catch (Exception e) {
-			logWarning("No async remote service interface found with name=" + proxyClassName + " for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
+		} catch (ClassNotFoundException e) {
+			//logInfo("No async remote service interface found with name=" + proxyClassName + " for remote service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
 			return null;
 		} catch (NoClassDefFoundError e) {
 			logWarning("Async remote service interface with name=" + proxyClassName + " could not be loaded for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
@@ -196,6 +196,12 @@
 	}
 
 	protected String convertInterfaceNameToAsyncInterfaceName(String interfaceName) {
+		if (interfaceName == null)
+			return null;
+		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
 		return interfaceName + IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX;
 	}
 
@@ -367,9 +373,15 @@
 		return methodName.endsWith(IAsyncRemoteServiceProxy.ASYNC_METHOD_SUFFIX) ? methodName.substring(0, methodName.length() - IAsyncRemoteServiceProxy.ASYNC_METHOD_SUFFIX.length()) : methodName;
 	}
 
+	private void logInfo(String message, Throwable e) {
+		Activator a = Activator.getDefault();
+		if (a != null)
+			a.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, message, e));
+	}
+
 	protected void logWarning(String string, Throwable e) {
 		Activator a = Activator.getDefault();
 		if (a != null)
-			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, string));
+			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, string, e));
 	}
 }
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 2319652..2ac0a3d 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
@@ -112,6 +112,55 @@
 	public static final String SERVICE_PREVENT_RSPROXY = "ecf.rsvc.norsproxy"; //$NON-NLS-1$
 
 	/**
+	 * This constant allows the fully qualified async remote service proxy to be specified
+	 * as a service property.  For example, if the remote service interface is as so:
+	 * <pre>
+	 * package foo;
+	 * 
+	 * public interface Bar {
+	 *    String doStuff();
+	 * }
+	 * </pre>
+	 * then by default, the async remote service proxy interface class would be expected 
+	 * to be the following:
+	 * <pre>
+	 * package foo;
+	 * import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
+	 * import org.eclipse.equinox.concurrent.future.IFuture;
+	 *
+	 * public interface BarAsync extends IAsyncRemoteServiceProxy {
+	 *    IFuture doStuffAsync();
+	 * }
+	 * </pre>
+	 * This property allows a new class to be associated with the
+	 * original service interface, so that rather than looking for the foo.BarAsync class
+	 * when a proxy is created, the class specified by the value of the property will
+	 * be used instead.  For example, assume the existance of another async
+	 * remote service interface:
+	 * <pre>
+	 * package gogo;
+	 * import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
+	 * import org.eclipse.equinox.concurrent.future.IFuture;
+	 * 
+	 * public interface MyBar extends IAsyncRemoteServiceProxy {
+	 *    IFuture doStuffAsync();
+	 * }
+	 * </pre>
+	 * Further assume that when the remote service was registered, that a service property 
+	 * was specified:
+	 * <pre>
+	 * serviceProps.put("ecf.rsvc.async.proxy_&lt;fq classname&gt;","&lt;fq substitute&gt;");
+	 * </pre>
+	 * <pre>
+	 * serviceProps.put("ecf.rsvc.async.proxy_foo.Bar","gogo.MyBar");
+	 * </pre>
+	 * Then, when a Bar proxy is created, if the 'gogo.MyBar' interface is available on 
+	 * the client, an async remote service proxy will be added to the proxy, and
+	 * client will be able to asynchronously call MyBar.doStuffAsync() on the proxy.
+	 */
+	public static final String SERVICE_ASYNC_RSPROXY_CLASS_ = "ecf.rsvc.async.proxy_"; //$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/client/AbstractClientContainer.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/AbstractClientContainer.java
index 99837a7..50580f1 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/AbstractClientContainer.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/AbstractClientContainer.java
@@ -10,7 +10,6 @@
 package org.eclipse.ecf.remoteservice.client;
 
 import java.io.NotSerializableException;
-import java.lang.reflect.Method;
 import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.ecf.core.AbstractContainer;
@@ -125,7 +124,9 @@
 	}
 
 	public void addRemoteServiceListener(IRemoteServiceListener listener) {
-		remoteServiceListeners.add(listener);
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.add(listener);
+		}
 	}
 
 	public IFuture asyncGetRemoteServiceReferences(final ID[] idFilter, final String clazz, final String filter) {
@@ -206,16 +207,13 @@
 	}
 
 	public IRemoteServiceRegistration registerRemoteService(final String[] clazzes, Object service, Dictionary properties) {
-		if (service instanceof List) {
-			return registerRemoteCallables(clazzes, (List) service, properties);
-		} else if (service instanceof IRemoteCallable[][]) {
-			return registerCallables(clazzes, (IRemoteCallable[][]) service, properties);
-		}
 		throw new RuntimeException("registerRemoteService cannot be used with client container"); //$NON-NLS-1$
 	}
 
 	public void removeRemoteServiceListener(IRemoteServiceListener listener) {
-		remoteServiceListeners.remove(listener);
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.remove(listener);
+		}
 	}
 
 	public boolean ungetRemoteService(final IRemoteServiceReference reference) {
@@ -246,6 +244,7 @@
 	public IRemoteServiceRegistration registerCallables(IRemoteCallable[] callables, Dictionary properties) {
 		Assert.isNotNull(callables);
 		final RemoteServiceClientRegistration registration = createRestServiceRegistration(callables, properties);
+		this.registry.registerRegistration(registration);
 		// notify
 		fireRemoteServiceEvent(new IRemoteServiceRegisteredEvent() {
 
@@ -265,12 +264,12 @@
 				return registration.getClazzes();
 			}
 		});
-		this.registry.registerRegistration(registration);
 		return registration;
 	}
 
 	public IRemoteServiceRegistration registerCallables(String[] clazzes, IRemoteCallable[][] callables, Dictionary properties) {
 		final RemoteServiceClientRegistration registration = createRestServiceRegistration(clazzes, callables, properties);
+		this.registry.registerRegistration(registration);
 		// notify
 		fireRemoteServiceEvent(new IRemoteServiceRegisteredEvent() {
 
@@ -290,102 +289,9 @@
 				return registration.getClazzes();
 			}
 		});
-		this.registry.registerRegistration(registration);
 		return registration;
 	}
 
-	public IRemoteServiceRegistration registerRemoteCallables(Class[] clazzes, List callablesList, Dictionary properties) {
-		Assert.isNotNull(clazzes);
-		IRemoteCallable[][] callables = createCallablesFromClasses(clazzes, callablesList);
-		Assert.isNotNull(callables);
-		Assert.isTrue(callables.length > 0);
-		final String[] classNames = new String[clazzes.length];
-		for (int i = 0; i < clazzes.length; i++) {
-			classNames[i] = clazzes[i].getName();
-		}
-		return registerCallables(classNames, callables, properties);
-	}
-
-	public IRemoteServiceRegistration registerRemoteCallables(String[] clazzes, List callables, Dictionary properties) {
-		Assert.isNotNull(clazzes);
-		Assert.isNotNull(callables);
-		return registerRemoteCallables(getClazzesFromStrings(clazzes), callables, properties);
-	}
-
-	public IRemoteCallable[][] createCallablesFromClasses(Class[] cls, List callables) {
-		Assert.isNotNull(cls);
-		Assert.isTrue(cls.length > 0);
-		// First create result list to hold IRestCallable[]...for each Class
-		List results = new ArrayList();
-		for (int i = 0; i < cls.length; i++) {
-			Method[] methods = getMethodsForClass(cls[i]);
-			IRemoteCallable[] methodCallables = getCallablesForMethods(methods, callables);
-			if (methodCallables != null && methodCallables.length > 0)
-				results.add(methodCallables);
-		}
-		return (IRemoteCallable[][]) results.toArray(new IRemoteCallable[][] {});
-	}
-
-	protected IRemoteCallable[] getCallablesForMethods(Method[] methods, List callables) {
-		Assert.isNotNull(methods);
-		Assert.isTrue(methods.length > 0);
-		List results = new ArrayList();
-		for (int i = 0; i < methods.length; i++) {
-			IRemoteCallable callable = findCallableForName(methods[i].getName(), callables);
-			if (callable != null)
-				results.add(callable);
-		}
-		return (IRemoteCallable[]) results.toArray(new IRemoteCallable[] {});
-	}
-
-	protected IRemoteCallable findCallableForName(String fqMethodName, List callables) {
-		if (callables == null || callables.isEmpty())
-			return null;
-		for (Iterator i = callables.iterator(); i.hasNext();) {
-			IRemoteCallable callable = (IRemoteCallable) i.next();
-			if (callable != null && fqMethodName.equals(callable.getMethod()))
-				return callable;
-		}
-		return null;
-	}
-
-	private Method[] getMethodsForClass(Class class1) {
-		Method[] results = null;
-		try {
-			results = class1.getDeclaredMethods();
-		} catch (Exception e) {
-			logException("Could not get declared methods for class=" + class1.getName(), e); //$NON-NLS-1$
-			return null;
-		}
-		return results;
-	}
-
-	public Class[] getClazzesFromStrings(String[] clazzes) throws IllegalArgumentException {
-		List results = new ArrayList();
-		for (int i = 0; i < clazzes.length; i++) {
-			Class clazz = getClazzFromString(clazzes[i]);
-			if (clazz != null)
-				results.add(clazz);
-		}
-		return (Class[]) results.toArray(new Class[] {});
-	}
-
-	public Class getClazzFromString(String className) throws IllegalArgumentException {
-		Class result = null;
-		try {
-			result = Class.forName(className, true, this.getClass().getClassLoader());
-		} catch (Exception e) {
-			String errorMsg = "ClassNotFoundException for class with name=" + className; //$NON-NLS-1$
-			logException(errorMsg, e);
-			throw new IllegalArgumentException(errorMsg);
-		} catch (NoClassDefFoundError e) {
-			String errorMsg = "NoClassDefFoundError for class with name=" + className; //$NON-NLS-1$
-			logException(errorMsg, e);
-			throw new IllegalArgumentException(errorMsg);
-		}
-		return result;
-	}
-
 	// IContainer implementation methods
 	public void connect(ID targetID, IConnectContext connectContext1) throws ContainerConnectException {
 		if (targetID == null)
@@ -429,7 +335,9 @@
 
 	public void dispose() {
 		disconnect();
-		remoteServiceListeners.clear();
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.clear();
+		}
 		super.dispose();
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java
index 0b6f1fe..a9034c1 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java
@@ -28,7 +28,7 @@
 public class RemoteServiceClientRegistry implements Serializable {
 
 	private static final long serialVersionUID = -7002609161000008043L;
-	private static long nextServiceId = 0L;
+	private static long nextServiceId = 1L;
 	private ID containerId;
 	private List registrations;
 	private AbstractClientContainer container;
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs
index c454319..8a32301 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Fri Oct 15 17:22:27 PDT 2010
+#Mon May 09 12:40:51 PDT 2011
 eclipse.preferences.version=1
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -34,6 +34,7 @@
 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
 org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
@@ -50,6 +51,7 @@
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
@@ -63,11 +65,15 @@
 org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
 org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
@@ -81,11 +87,12 @@
 org.eclipse.jdt.core.compiler.problem.unusedImport=error
 org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
 org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.source=1.3
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java
index dfd84e6..1942fc4 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java
@@ -1,27 +1,30 @@
-/*******************************************************************************
- * 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) 2007 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.sharedobject.util;
 
 import java.util.LinkedList;
 import java.util.List;
 
 public class SimpleFIFOQueue implements ISimpleFIFOQueue {
-	List list;
+	private final List list;
 
-	boolean stopped;
+	private boolean stopped;
 
 	public SimpleFIFOQueue() {
 		list = new LinkedList();
 		stopped = false;
 	}
 
-	public synchronized boolean enqueue(Object obj) {
+	public synchronized boolean enqueue(final Object obj) {
 		if (isStopped() || obj == null) {
 			return false;
 		}
@@ -35,7 +38,7 @@
 	}
 
 	public synchronized Object dequeue() {
-		Object val = peekQueue();
+		final Object val = peekQueue();
 		if (val != null) {
 			removeHead();
 		}
@@ -48,14 +51,14 @@
 				return null;
 			try {
 				wait();
-			} catch (Exception e) {
+			} catch (final Exception e) {
 				return null;
 			}
 		}
 		return list.get(0);
 	}
 
-	public synchronized Object peekQueue(long waitMS) {
+	public synchronized Object peekQueue(final long waitMS) {
 		if (waitMS == 0)
 			return peekQueue();
 		if (stopped) {
@@ -63,7 +66,7 @@
 		}
 		try {
 			wait(waitMS);
-		} catch (Exception e) {
+		} catch (final Exception e) {
 			return null;
 		}
 		if (isEmpty())
@@ -94,7 +97,7 @@
 	}
 
 	public synchronized Object[] flush() {
-		Object[] out = list.toArray();
+		final Object[] out = list.toArray();
 		list.clear();
 		close();
 		return out;
@@ -106,7 +109,7 @@
 	}
 
 	public String toString() {
-		StringBuffer sb = new StringBuffer("SimpleFIFOQueue["); //$NON-NLS-1$
+		final StringBuffer sb = new StringBuffer("SimpleFIFOQueue["); //$NON-NLS-1$
 		sb.append(list).append("]"); //$NON-NLS-1$
 		return sb.toString();
 	}
diff --git a/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs
index 1ca443a..2512a4c 100644
--- a/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs
@@ -1,350 +1,357 @@
-#Mon May 04 17:44:33 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-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.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:21:42 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=800
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
index 3864e4d..a891433 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.1.200.qualifier
+Bundle-Version: 3.1.300.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.ECFPlugin
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf/javadoc.xml b/framework/bundles/org.eclipse.ecf/javadoc.xml
index 9ed0af2..67d815e 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.5.0" 
+        	doctitle="Eclipse Communication Framework (ECF) 3.5.2" 
         	nodeprecated="false" 
         	nodeprecatedlist="false" 
         	noindex="false" 
@@ -28,9 +28,7 @@
         	
         	<fileset dir="${source}" defaultexcludes="true">
 	        	<include name="**/*.java"/>
-	        	<exclude name="**/util/**"/>
 	        	<exclude name="**/ui/**"/>
-	        	<exclude name="**/provider/**"/>
 	        	<exclude name="**/smack/**"/>
 	        	<exclude name="**/incubation/**"/>
 	        	<exclude name="**/internal/**"/>
@@ -41,6 +39,9 @@
 	        	<exclude name="**/tutorial/**"/>
 	        	<exclude name="**/twitter/**"/>
 	        	<exclude name="**/jivesoftware/**"/>
+	        	<exclude name="**/pubsub/**"/>
+	        	<exclude name="**/collab/**"/>
+	        	<exclude name="**/osgi/services/discovery/**"/>
         	</fileset>
     	</javadoc>
     </target>
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
index 51aefc6..872b875 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
@@ -10,7 +10,6 @@
 package org.eclipse.ecf.core.util;
 
 import org.eclipse.ecf.core.IContainerFactory;
-import org.eclipse.ecf.core.IContainerManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.util.tracker.ServiceTracker;
 
@@ -22,7 +21,7 @@
 public class ContainerFactoryTracker extends ServiceTracker {
 
 	public ContainerFactoryTracker(BundleContext context) {
-		super(context, IContainerManager.class.getName(), null);
+		super(context, IContainerFactory.class.getName(), null);
 	}
 
 	public IContainerFactory getContainerFactory() {
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.classpath
similarity index 88%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
copy to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.classpath
index 64c5e31..f6e5811 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.classpath
@@ -1,7 +1,6 @@
-<?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>
+<?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="output" path="bin"/>
+</classpath>
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
similarity index 89%
copy from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
copy to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
index f9bafca..c508f9a 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.provider.discovery.local</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>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy</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/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0a37305
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 22 13:16:41 PST 2011
+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/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.pde.core.prefs
similarity index 74%
rename from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.pde.core.prefs
index 7fe8cfc..d3f70c8 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.pde.core.prefs
@@ -1,4 +1,4 @@
-#Tue May 04 19:23:54 PDT 2010
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
+#Tue Feb 22 13:16:42 PST 2011
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
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
new file mode 100644
index 0000000..46e42a4
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF Remote Service Admin Proxy
+Bundle-SymbolicName: org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: Eclipse.org - ECF
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/about.html
similarity index 100%
rename from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/about.html
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/build.properties b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/build.properties
new file mode 100644
index 0000000..d5066ef
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\
+               .,\
+               about.html
+src.includes = about.html
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
index 4272128..2ce11a0 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
index 542b8df..77378cc 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,12 @@
-#Sat Jan 22 17:14:11 PST 2011
+#Fri May 13 11:36:47 PDT 2011
 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.codegen.unusedLocal=preserve
 org.eclipse.jdt.core.compiler.compliance=1.5
+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.annotationSuperInterface=warning
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
@@ -35,7 +39,7 @@
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
 org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
 org.eclipse.jdt.core.compiler.problem.nullReference=warning
 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
 org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
@@ -44,12 +48,15 @@
 org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
 org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
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 56dc925..411d4b8 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
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.osgi.services.remoteserviceadmin
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator
 Bundle-Vendor: %bundle.provider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 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;bundle-version="3.6.0",
+ org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy;bundle-version="1.0.0"
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity,
@@ -27,3 +28,4 @@
  org.osgi.service.packageadmin,
  org.osgi.service.remoteserviceadmin;version="1.0.0",
  org.osgi.util.tracker
+DynamicImport-Package: *
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/buckminster.cspex b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/buckminster.cspex
new file mode 100644
index 0000000..ba0cf92
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/buckminster.cspex
@@ -0,0 +1,41 @@
+<?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.equinox.concurrent" componentType="osgi.bundle"/>
+
+		<dependency name="org.eclipse.ecf" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.identity" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.discovery" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.remoteservice" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" componentType="osgi.bundle"/>
+
+		<dependency name="org.eclipse.osgi.services.remoteserviceadmin" 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/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
index 22b24fb..23e285e 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
@@ -5,7 +5,5 @@
                bundle.properties,\
                about.html,\
                .options
-jre.compilation.profile = J2SE-1.4
-javacTarget=jsr14
 src.includes = about.html,\
                bundle.properties
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 d1a3b83..179a771 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
@@ -10,6 +10,10 @@
 package org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;
 
 import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.UUID;
 
@@ -30,6 +34,7 @@
 import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
+import org.osgi.framework.Version;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
 
@@ -40,7 +45,7 @@
 	private static BundleContext context;
 	private static Activator instance;
 
-	static BundleContext getContext() {
+	public static BundleContext getContext() {
 		return context;
 	}
 
@@ -63,6 +68,45 @@
 	private Object saxParserFactoryTrackerLock = new Object();
 	private ServiceTracker saxParserFactoryTracker;
 
+	private static final String RSA_PROXY_BUNDLE_SYMBOLIC_ID = "org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"; //$NON-NLS-1$
+
+	private BundleContext proxyServiceFactoryBundleContext;
+
+	private void initializeProxyServiceFactoryBundle() throws Exception {
+		// First, find proxy bundle
+		for (Bundle b : context.getBundles()) {
+			if (RSA_PROXY_BUNDLE_SYMBOLIC_ID.equals(b.getSymbolicName())) {
+				// first start it
+				b.start();
+				// then get its bundle context
+				proxyServiceFactoryBundleContext = b.getBundleContext();
+			}
+		}
+		if (proxyServiceFactoryBundleContext == null)
+			throw new IllegalStateException("RSA Proxy bundle (symbolic id=='" //$NON-NLS-1$
+					+ RSA_PROXY_BUNDLE_SYMBOLIC_ID
+					+ "') cannot be found, so RSA cannot be started"); //$NON-NLS-1$
+	}
+
+	private void stopProxyServiceFactoryBundle() {
+		if (proxyServiceFactoryBundleContext != null) {
+			// stop it
+			try {
+				proxyServiceFactoryBundleContext.getBundle().stop();
+			} catch (Exception e) {
+				// we don't care
+			}
+			proxyServiceFactoryBundleContext = null;
+		}
+	}
+
+	public BundleContext getProxyServiceFactoryBundleContext() {
+		return proxyServiceFactoryBundleContext;
+	}
+
+	private Map<Bundle, RemoteServiceAdmin> remoteServiceAdmins = new HashMap<Bundle, RemoteServiceAdmin>(
+			1);
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -73,6 +117,14 @@
 	public void start(BundleContext bundleContext) throws Exception {
 		Activator.context = bundleContext;
 		Activator.instance = this;
+		// initialize the RSA proxy service factory bundle...so that we
+		// can get/use *that bundle's BundleContext for registering the
+		// proxy ServiceFactory.
+		// See osgi-dev thread here for info about this
+		// approach/using the ServiceFactory extender approach for this purpose:
+		// https://mail.osgi.org/pipermail/osgi-dev/2011-February/003000.html
+		initializeProxyServiceFactoryBundle();
+
 		// make remote service admin available
 		Properties rsaProps = new Properties();
 		rsaProps.put(RemoteServiceAdmin.SERVICE_PROP, new Boolean(true));
@@ -81,13 +133,27 @@
 						.getName(), new ServiceFactory() {
 					public Object getService(Bundle bundle,
 							ServiceRegistration registration) {
-						return new RemoteServiceAdmin(bundle);
+						RemoteServiceAdmin result = null;
+						synchronized (remoteServiceAdmins) {
+							RemoteServiceAdmin rsa = remoteServiceAdmins
+									.get(bundle);
+							if (rsa == null) {
+								rsa = new RemoteServiceAdmin(bundle);
+								remoteServiceAdmins.put(bundle, rsa);
+							}
+							result = rsa;
+						}
+						return result;
 					}
 
 					public void ungetService(Bundle bundle,
 							ServiceRegistration registration, Object service) {
-						if (service != null)
-							((RemoteServiceAdmin) service).close();
+						synchronized (remoteServiceAdmins) {
+							RemoteServiceAdmin rsa = remoteServiceAdmins
+									.remove(bundle);
+							if (rsa != null)
+								rsa.close();
+						}
 					}
 				}, (Dictionary) rsaProps);
 
@@ -108,6 +174,18 @@
 		endpointDescriptionLocator.start();
 	}
 
+	private void clearRSAs() {
+		synchronized (remoteServiceAdmins) {
+			for (Iterator<Entry<Bundle, RemoteServiceAdmin>> i = remoteServiceAdmins
+					.entrySet().iterator(); i.hasNext();) {
+				Entry<Bundle, RemoteServiceAdmin> entry = i.next();
+				RemoteServiceAdmin rsa = entry.getValue();
+				rsa.close();
+				i.remove();
+			}
+		}
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -123,6 +201,7 @@
 			remoteServiceAdminRegistration.unregister();
 			remoteServiceAdminRegistration = null;
 		}
+		clearRSAs();
 		if (endpointDescriptionAdvertiserRegistration != null) {
 			endpointDescriptionAdvertiserRegistration.unregister();
 			endpointDescriptionAdvertiserRegistration = null;
@@ -148,10 +227,26 @@
 			containerManagerTracker.close();
 			containerManagerTracker = null;
 		}
+		stopProxyServiceFactoryBundle();
 		Activator.context = null;
 		Activator.instance = null;
 	}
 
+	public boolean isOldEquinox() {
+		if (context == null)
+			return false;
+		Bundle systemBundle = context.getBundle(0);
+		String systemBSN = systemBundle.getSymbolicName();
+		if ("org.eclipse.osgi".equals(systemBSN)) { //$NON-NLS-1$
+			Version fixedVersion = new Version("3.7.0"); //$NON-NLS-1$
+			// running on equinox; check the version
+			Version systemVersion = systemBundle.getVersion();
+			if (systemVersion.compareTo(fixedVersion) < 0)
+				return true;
+		}
+		return false;
+	}
+
 	public String getFrameworkUUID() {
 		if (context == null)
 			return null;
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
index 9783f6f..2221298 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
@@ -318,29 +318,23 @@
 	class EndpointDescriptionsHandler extends RootHandler {
 
 		private List<EndpointDescription> endpointDescriptions = new ArrayList<EndpointDescription>();
-		private EndpointDescriptionHandler endpointDescriptionHandler;
 
 		protected void handleRootAttributes(Attributes attributes) {
 		}
 
 		public void startElement(String name, Attributes attributes)
 				throws SAXException {
-			if (ENDPOINT_DESCRIPTION.equals(name)) {
-				if (endpointDescriptionHandler == null) {
-					endpointDescriptionHandler = new EndpointDescriptionHandler(
-							this, attributes, endpointDescriptions);
-				} else
-					duplicateElement(this, name, attributes);
-			} else
+			if (ENDPOINT_DESCRIPTION.equals(name))
+				new EndpointDescriptionHandler(this, attributes,
+						endpointDescriptions);
+			else
 				invalidElement(name, attributes);
 		}
 
 		public void endElement(String namespaceURI, String localName,
 				String qName) {
-			if (elementHandled.equals(localName)) {
-				endpointDescriptionHandler = null;
+			if (elementHandled.equals(localName))
 				super.endElement(namespaceURI, localName, qName);
-			}
 		}
 
 		public List<EndpointDescription> getEndpointDescriptions() {
@@ -363,15 +357,14 @@
 
 		public void startElement(String name, Attributes attributes)
 				throws SAXException {
-			if (ENDPOINT_PROPERTY.equals(name)) {
+			if (ENDPOINT_PROPERTY.equals(name))
 				new EndpointPropertyHandler(this, attributes, properties);
-			}
 		}
 
 		public void endElement(String namespaceURI, String localName,
 				String qName) {
 			if (elementHandled.equals(localName)) {
-				this.descriptions.add(new EndpointDescription(properties));
+				descriptions.add(new EndpointDescription(properties));
 				super.endElement(namespaceURI, localName, qName);
 			}
 		}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
index 5d3ab96..4d6e4f6 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
@@ -20,6 +20,18 @@
 		logError(methodName, debugOption, clazz, message, null);
 		traceException(methodName, debugOption, clazz, message, null);
 	}
+	
+	public static void logInfo(String methodName, String debugOption,
+			Class clazz, String message) {
+		trace(methodName, debugOption, clazz, "INFO:" + message); //$NON-NLS-1$
+		Activator.getDefault().log(
+				new Status(IStatus.INFO, Activator.PLUGIN_ID,
+						IStatus.INFO, clazz.getName() + ":" //$NON-NLS-1$
+								+ ((methodName == null) ? "<unknown>" //$NON-NLS-1$
+										: methodName) + ":" //$NON-NLS-1$
+								+ ((message == null) ? "<empty>" : message), //$NON-NLS-1$
+						null));
+	}
 
 	public static void logWarning(String methodName, String debugOption,
 			Class clazz, String message) {
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 fbb4a4a..cb201ee 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
@@ -20,10 +20,13 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
+import java.util.TreeMap;
 
 import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;
 import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
 import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
+import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 
 public class PropertiesUtil {
@@ -59,7 +62,6 @@
 			RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
 			RemoteConstants.ENDPOINT_IDFILTER_IDS,
 			RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
-			RemoteConstants.ENDPOINT_SERVICE_IMPORTED_CONFIGS_VALUE,
 			RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT,
 			RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS,
 			RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID,
@@ -106,33 +108,45 @@
 	}
 
 	public static String[] getExportedInterfaces(
-			ServiceReference serviceReference) {
-		// Get the OSGi 4.2 specified required service property value
-		Object propValue = serviceReference
-				.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES);
-		// If the required property is not set then it's not being registered
-		// as a remote service so we return null
+			ServiceReference serviceReference,
+			Map<String, Object> overridingProperties) {
+		Object overridingPropValue = overridingProperties
+				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES);
+		if (overridingPropValue != null)
+			return getExportedInterfaces(serviceReference, overridingPropValue);
+		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);
 		boolean wildcard = propValue.equals("*"); //$NON-NLS-1$
 		if (wildcard)
-			return (String[]) serviceReference
-					.getProperty(org.osgi.framework.Constants.OBJECTCLASS);
+			return objectClass;
 		else {
-			final String[] stringValue = getStringArrayFromPropertyValue(propValue);
-			if (stringValue != null && stringValue.length == 1
-					&& stringValue[0].equals("*")) { //$NON-NLS-1$
-				LogUtility
-						.logWarning(
-								"getExportedInterfaces", //$NON-NLS-1$
-								DebugOptions.TOPOLOGY_MANAGER,
-								PropertiesUtil.class,
-								"Service Exported Interfaces Wildcard does not accept String[\"*\"]"); //$NON-NLS-1$
-			}
-			return stringValue;
+			final String[] stringArrayValue = getStringArrayFromPropertyValue(propValue);
+			if (stringArrayValue == null)
+				return null;
+			else if (stringArrayValue.length == 1
+					&& stringArrayValue[0].equals("*")) { //$NON-NLS-1$
+				// this will support the idiom: new String[] { "*" }
+				return objectClass;
+			} else
+				return stringArrayValue;
 		}
 	}
 
+	public static String[] getExportedInterfaces(
+			ServiceReference serviceReference) {
+		return getExportedInterfaces(
+				serviceReference,
+				serviceReference
+						.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES));
+	}
+
 	public static String[] getServiceIntents(ServiceReference serviceReference,
 			Map overridingProperties) {
 		List results = new ArrayList();
@@ -229,8 +243,14 @@
 		return ecfProperties.contains(key);
 	}
 
+	// skip dotted (private) properties (R4.2 enterprise spec. table 122.1)
+	public static boolean isPrivateProperty(String key) {
+		return (key.startsWith(".")); //$NON-NLS-1$
+	}
+
 	public static boolean isReservedProperty(String key) {
-		return isOSGiProperty(key) || isECFProperty(key);
+		return isOSGiProperty(key) || isECFProperty(key)
+				|| isPrivateProperty(key);
 	}
 
 	public static Map createMapFromDictionary(Dictionary input) {
@@ -303,6 +323,16 @@
 		return target;
 	}
 
+	public static Map<String, Object> copyProperties(
+			final ServiceReference serviceReference,
+			final Map<String, Object> target) {
+		final String[] keys = serviceReference.getPropertyKeys();
+		for (int i = 0; i < keys.length; i++) {
+			target.put(keys[i], serviceReference.getProperty(keys[i]));
+		}
+		return target;
+	}
+
 	public static Map<String, Object> copyNonECFProperties(
 			Map<String, Object> source, Map<String, Object> target) {
 		for (String key : source.keySet())
@@ -346,4 +376,31 @@
 		return target;
 	}
 
+	public static Map mergeProperties(final ServiceReference serviceReference,
+			final Map<String, Object> overrides) {
+		return mergeProperties(copyProperties(serviceReference, new HashMap()),
+				overrides);
+	}
+
+	public static Map mergeProperties(final Map<String, Object> source,
+			final Map<String, Object> overrides) {
+
+		// copy to target from service reference
+		final Map target = copyProperties(source, new TreeMap<String, Object>(
+				String.CASE_INSENSITIVE_ORDER));
+
+		// now do actual merge
+		final Set<String> keySet = overrides.keySet();
+		for (final String key : keySet) {
+			// skip keys not allowed
+			if (Constants.SERVICE_ID.equals(key)
+					|| Constants.OBJECTCLASS.equals(key)) {
+				continue;
+			}
+			target.remove(key.toLowerCase());
+			target.put(key.toLowerCase(), overrides.get(key));
+		}
+
+		return target;
+	}
 }
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
index 84ddbe4..3eb2bce 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
@@ -16,6 +16,7 @@
 import java.util.Map;
 
 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;
@@ -26,6 +27,11 @@
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
 import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
 
+/**
+ * Abstract superclass for consumer container selectors...i.e. implementers of
+ * {@link IConsumerContainerSelector}).
+ * 
+ */
 public class AbstractConsumerContainerSelector extends
 		AbstractContainerSelector {
 
@@ -129,7 +135,8 @@
 	}
 
 	protected IRemoteServiceContainer createAndConfigureConsumerContainer(
-			String[] remoteSupportedConfigs, Map remoteExportedProperties) {
+			String[] remoteSupportedConfigs, Map remoteExportedProperties)
+			throws SelectContainerException {
 		if (remoteSupportedConfigs == null
 				|| remoteSupportedConfigs.length == 0)
 			return null;
@@ -164,6 +171,7 @@
 				// If we have one to use, then create the container
 				if (selectedConfig != null) {
 					IRemoteServiceContainer rsContainer = createContainer(
+							desc,
 							selectedConfig,
 							PropertiesUtil
 									.createMapFromDictionary(importedConfigProperties));
@@ -181,18 +189,26 @@
 	}
 
 	protected IRemoteServiceContainer createContainer(
-			String containerTypeDescriptionName, Map properties) {
+			ContainerTypeDescription containerTypeDescription,
+			String containerTypeDescriptionName, Map properties)
+			throws SelectContainerException {
 		try {
 			IContainer container = (properties == null) ? getContainerFactory()
 					.createContainer(containerTypeDescriptionName)
 					: getContainerFactory().createContainer(
 							containerTypeDescriptionName, properties);
+			IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container
+					.getAdapter(IRemoteServiceContainerAdapter.class);
+			if (adapter == null)
+				throw new SelectContainerException(
+						"Container does not implement IRemoteServiceContainerAdapter", null, containerTypeDescription); //$NON-NLS-1$
 			return new RemoteServiceContainer(container);
-		} catch (Exception e) {
-			logException(
-					"Cannot create container with container type description name=" //$NON-NLS-1$
-							+ containerTypeDescriptionName, e);
-			return null;
+		} catch (ContainerCreateException e) {
+			String message = "Cannot create container with container type description name=" //$NON-NLS-1$
+					+ containerTypeDescriptionName;
+			logException(message, e);
+			throw new SelectContainerException(message, e,
+					containerTypeDescription);
 		}
 	}
 
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
index 6b90fe4..a395f39 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
@@ -10,7 +10,9 @@
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -32,6 +34,12 @@
 import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Abstract superclass for both host and consumer container selectors...i.e.
+ * implementers of {@link IHostContainerSelector} or
+ * {@link IConsumerContainerSelector}.
+ * 
+ */
 public abstract class AbstractContainerSelector {
 
 	public static final IRemoteServiceContainer[] EMPTY_REMOTE_SERVICE_CONTAINER_ARRAY = new IRemoteServiceContainer[] {};
@@ -109,25 +117,69 @@
 		return (supportedIntents == null) ? new String[0] : supportedIntents;
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected IContainer createContainer(ServiceReference serviceReference,
+			Map<String, Object> properties,
 			ContainerTypeDescription containerTypeDescription)
-			throws ContainerCreateException {
+			throws SelectContainerException {
 
 		IContainerFactory containerFactory = getContainerFactory();
 
-		Object containerFactoryArguments = serviceReference
-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);
-		if (containerFactoryArguments instanceof String) {
-			return containerFactory.createContainer(containerTypeDescription,
-					(String) containerFactoryArguments);
-		} else if (containerFactoryArguments instanceof ID) {
-			return containerFactory.createContainer(containerTypeDescription,
-					(ID) containerFactoryArguments);
-		} else if (containerFactoryArguments instanceof Object[]) {
-			return containerFactory.createContainer(containerTypeDescription,
-					(Object[]) containerFactoryArguments);
+		final Object containerFactoryArguments = getContainerFactoryArguments(
+				serviceReference, properties, containerTypeDescription);
+
+		try {
+			if (containerFactoryArguments instanceof String) {
+				return containerFactory.createContainer(
+						containerTypeDescription,
+						(String) containerFactoryArguments);
+			} else if (containerFactoryArguments instanceof ID) {
+				return containerFactory.createContainer(
+						containerTypeDescription,
+						(ID) containerFactoryArguments);
+			} else if (containerFactoryArguments instanceof Object[]) {
+				return containerFactory.createContainer(
+						containerTypeDescription,
+						(Object[]) containerFactoryArguments);
+			} else if (containerFactoryArguments instanceof Map) {
+				return containerFactory.createContainer(
+						containerTypeDescription,
+						(Map) containerFactoryArguments);
+			}
+			return containerFactory.createContainer(containerTypeDescription);
+		} catch (ContainerCreateException e) {
+			throw new SelectContainerException(
+					"Exception creating or configuring container", e, //$NON-NLS-1$
+					containerTypeDescription);
 		}
-		return containerFactory.createContainer(containerTypeDescription);
+	}
+
+	protected Object getContainerFactoryArguments(
+			ServiceReference serviceReference, Map<String, Object> properties,
+			ContainerTypeDescription containerTypeDescription) {
+		// If the RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS is set
+		// than use it.
+		final Object containerFactoryArguments = properties
+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);
+		if (containerFactoryArguments != null)
+			return containerFactoryArguments;
+
+		String exportedConfig = containerTypeDescription.getName();
+		// If not, then we look through the properties that start with
+		// <containerTypeDescription.name>.
+		Map<String, Object> results = new HashMap<String, Object>();
+		for (String origKey : properties.keySet()) {
+			if (origKey.startsWith(exportedConfig + ".")) { //$NON-NLS-1$
+				String key = origKey.substring(exportedConfig.length() + 1);
+				if (key != null)
+					results.put(key, properties.get(origKey));
+			}
+		}
+		if (results.size() == 0)
+			return null;
+		return results;
 	}
 
 	protected ID createTargetID(IContainer container, String target) {
@@ -138,9 +190,12 @@
 		container.disconnect();
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected IConnectContext createConnectContext(
-			ServiceReference serviceReference, IContainer container,
-			Object context) {
+			ServiceReference serviceReference, Map<String, Object> properties,
+			IContainer container, Object context) {
 		if (context instanceof IConnectContext)
 			return (IConnectContext) context;
 		return null;
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
index 0768390..201394d 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
@@ -12,8 +12,10 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.ecf.core.ContainerConnectException;
 import org.eclipse.ecf.core.ContainerCreateException;
@@ -29,18 +31,26 @@
 import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Abstract superclass for host container selectors...i.e. implementers of
+ * {@link IHostContainerSelector}.
+ * 
+ */
 public abstract class AbstractHostContainerSelector extends
 		AbstractContainerSelector {
 
-	private static final String NODEFAULT = "<<nodefault>>"; //$NON-NLS-1$
 	protected String[] defaultConfigTypes;
 
 	public AbstractHostContainerSelector(String[] defaultConfigTypes) {
 		this.defaultConfigTypes = defaultConfigTypes;
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected Collection selectExistingHostContainers(
 			ServiceReference serviceReference,
+			Map<String, Object> overridingProperties,
 			String[] serviceExportedInterfaces,
 			String[] serviceExportedConfigs, String[] serviceIntents) {
 		List results = new ArrayList();
@@ -66,10 +76,10 @@
 			if (!description.isServer()) {
 				continue;
 			}
-			
-			if (matchExistingHostContainer(serviceReference, containers[i],
-					adapter, description, serviceExportedConfigs,
-					serviceIntents)) {
+
+			if (matchExistingHostContainer(serviceReference,
+					overridingProperties, containers[i], adapter, description,
+					serviceExportedConfigs, serviceIntents)) {
 				trace("selectExistingHostContainers", "INCLUDING containerID=" //$NON-NLS-1$ //$NON-NLS-2$
 						+ containers[i].getID()
 						+ " configs=" //$NON-NLS-1$
@@ -93,10 +103,14 @@
 		return results;
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected boolean matchHostContainerToConnectTarget(
-			ServiceReference serviceReference, IContainer container) {
-		String target = (String) serviceReference
-				.getProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
+			ServiceReference serviceReference, Map<String, Object> properties,
+			IContainer container) {
+		String target = (String) properties
+				.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
 		if (target == null)
 			return true;
 		// If a targetID is specified, make sure it either matches what the
@@ -108,7 +122,8 @@
 		if (connectedID == null) {
 			// connect to the target and we have a match
 			try {
-				connectHostContainer(serviceReference, container, target);
+				connectHostContainer(serviceReference, properties, container,
+						target);
 			} catch (Exception e) {
 				logException("doConnectContainer containerID=" //$NON-NLS-1$
 						+ container.getID() + " target=" + target, e); //$NON-NLS-1$
@@ -125,22 +140,28 @@
 		return false;
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected boolean matchExistingHostContainer(
-			ServiceReference serviceReference, IContainer container,
-			IRemoteServiceContainerAdapter adapter,
+			ServiceReference serviceReference, Map<String, Object> properties,
+			IContainer container, IRemoteServiceContainerAdapter adapter,
 			ContainerTypeDescription description, String[] requiredConfigTypes,
 			String[] requiredServiceIntents) {
 
 		return matchHostSupportedConfigTypes(requiredConfigTypes, description)
 				&& matchHostSupportedIntents(requiredServiceIntents,
 						description)
-				&& matchHostContainerID(serviceReference, container)
+				&& matchHostContainerID(serviceReference, properties, container)
 				&& matchHostContainerToConnectTarget(serviceReference,
-						container);
+						properties, container);
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected boolean matchHostContainerID(ServiceReference serviceReference,
-			IContainer container) {
+			Map<String, Object> properties, IContainer container) {
 
 		ID containerID = container.getID();
 		// No match if the container has no ID
@@ -148,8 +169,8 @@
 			return false;
 
 		// Then get containerid if specified directly by user in properties
-		ID requiredContainerID = (ID) serviceReference
-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID);
+		ID requiredContainerID = (ID) properties
+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID);
 		// If the CONTAINER_I
 		if (requiredContainerID != null) {
 			return requiredContainerID.equals(containerID);
@@ -158,8 +179,8 @@
 		// arguments
 		// and check if the ID matches that
 		Namespace ns = containerID.getNamespace();
-		Object cid = serviceReference
-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);
+		Object cid = properties
+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);
 		// If no arguments are present, then any container ID should match
 		if (cid == null)
 			return true;
@@ -200,58 +221,54 @@
 		return result;
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected Collection createAndConfigureHostContainers(
-			ServiceReference serviceReference,
+			ServiceReference serviceReference, Map<String, Object> properties,
 			String[] serviceExportedInterfaces, String[] requiredConfigs,
-			String[] requiredIntents) {
+			String[] requiredIntents) throws SelectContainerException {
 
 		List results = new ArrayList();
 		ContainerTypeDescription[] descriptions = getContainerTypeDescriptions();
 		if (descriptions == null)
-			return results;
+			return Collections.EMPTY_LIST;
 		// If there are no required configs specified, then create any defaults
 		if (requiredConfigs == null || requiredConfigs.length == 0) {
-			ContainerTypeDescription[] ctds = getContainerTypeDescriptionsForDefaultConfigTypes(descriptions);
-			if (ctds != null) {
-				for (int i = 0; i < ctds.length; i++) {
-					IRemoteServiceContainer rsContainer = createRSContainer(
-							serviceReference, ctds[i]);
-					if (rsContainer != null)
-						results.add(rsContainer);
-				}
-			}
+			createAndAddDefaultContainers(serviceReference, properties,
+					serviceExportedInterfaces, requiredIntents, descriptions,
+					results);
 		} else {
 			// See if we have a match
 			for (int i = 0; i < descriptions.length; i++) {
-				IRemoteServiceContainer rsContainer = createMatchingContainer(
-						descriptions[i], serviceReference,
+				IRemoteServiceContainer matchingContainer = createMatchingContainer(
+						descriptions[i], serviceReference, properties,
 						serviceExportedInterfaces, requiredConfigs,
 						requiredIntents);
-				if (rsContainer != null)
-					results.add(rsContainer);
-			}
-		}
-		// we still haven't created one then we check for no default and if
-		// not present then we
-		// create default ones
-		if (results.size() == 0 && requiredConfigs != null
-				&& requiredConfigs.length > 0) {
-			List requiredConfigsList = Arrays.asList(requiredConfigs);
-			if (!requiredConfigsList.contains(NODEFAULT)) {
-				ContainerTypeDescription[] ctds = getContainerTypeDescriptionsForDefaultConfigTypes(descriptions);
-				if (ctds != null) {
-					for (int i = 0; i < ctds.length; i++) {
-						IRemoteServiceContainer rsContainer = createRSContainer(
-								serviceReference, ctds[i]);
-						if (rsContainer != null)
-							results.add(rsContainer);
-					}
-				}
+				if (matchingContainer != null)
+					results.add(matchingContainer);
 			}
 		}
 		return results;
 	}
 
+	private void createAndAddDefaultContainers(
+			ServiceReference serviceReference, Map<String, Object> properties,
+			String[] serviceExportedInterfaces, String[] requiredIntents,
+			ContainerTypeDescription[] descriptions, Collection results)
+			throws SelectContainerException {
+		ContainerTypeDescription[] ctds = getContainerTypeDescriptionsForDefaultConfigTypes(descriptions);
+		if (ctds != null) {
+			for (int i = 0; i < ctds.length; i++) {
+				IRemoteServiceContainer matchingContainer = createMatchingContainer(
+						ctds[i], serviceReference, properties,
+						serviceExportedInterfaces, null, requiredIntents);
+				if (matchingContainer != null)
+					results.add(matchingContainer);
+			}
+		}
+	}
+
 	protected ContainerTypeDescription[] getContainerTypeDescriptionsForDefaultConfigTypes(
 			ContainerTypeDescription[] descriptions) {
 		String[] defaultConfigTypes = getDefaultConfigTypes();
@@ -285,54 +302,60 @@
 		return defaultConfigTypes;
 	}
 
+	/**
+	 * @throws ContainerCreateException
+	 * @since 2.0
+	 */
 	protected IRemoteServiceContainer createMatchingContainer(
 			ContainerTypeDescription containerTypeDescription,
-			ServiceReference serviceReference,
+			ServiceReference serviceReference, Map<String, Object> properties,
 			String[] serviceExportedInterfaces, String[] requiredConfigs,
-			String[] requiredIntents) {
+			String[] requiredIntents) throws SelectContainerException {
 
 		if (matchHostSupportedConfigTypes(requiredConfigs,
 				containerTypeDescription)
 				&& matchHostSupportedIntents(requiredIntents,
 						containerTypeDescription)) {
-			return createRSContainer(serviceReference, containerTypeDescription);
+			return createRSContainer(serviceReference, properties,
+					containerTypeDescription);
 		}
 		return null;
 	}
 
+	/**
+	 * @throws ContainerCreateException
+	 * @since 2.0
+	 */
 	protected IRemoteServiceContainer createRSContainer(
-			ServiceReference serviceReference,
-			ContainerTypeDescription containerTypeDescription) {
-		try {
-			IContainer container = createContainer(serviceReference,
-					containerTypeDescription);
-			IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container
-					.getAdapter(IRemoteServiceContainerAdapter.class);
-			if (adapter == null)
-				throw new ContainerCreateException(
-						"Container does not implement IRemoteServiceContainerAdapter"); //$NON-NLS-1$
-			return new RemoteServiceContainer(container, adapter);
-		} catch (Exception e) {
-			logException(
-					"Exception creating container from ContainerTypeDescription=" //$NON-NLS-1$
-							+ containerTypeDescription, e);
-			return null;
-		}
+			ServiceReference serviceReference, Map<String, Object> properties,
+			ContainerTypeDescription containerTypeDescription)
+			throws SelectContainerException {
+		IContainer container = createContainer(serviceReference, properties,
+				containerTypeDescription);
+		IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container
+				.getAdapter(IRemoteServiceContainerAdapter.class);
+		if (adapter == null)
+			throw new SelectContainerException(
+					"Container does not implement IRemoteServiceContainerAdapter", null, containerTypeDescription); //$NON-NLS-1$
+		return new RemoteServiceContainer(container, adapter);
 	}
 
+	/**
+	 * @since 2.0
+	 */
 	protected void connectHostContainer(ServiceReference serviceReference,
-			IContainer container, Object target)
+			Map<String, Object> properties, IContainer container, Object target)
 			throws ContainerConnectException, IDCreateException {
 		ID targetID = (target instanceof String) ? IDUtil.createID(
 				container.getConnectNamespace(), (String) target) : IDUtil
 				.createID(container.getConnectNamespace(),
 						new Object[] { target });
-		Object context = serviceReference
-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT);
+		Object context = properties
+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT);
 		IConnectContext connectContext = null;
 		if (context != null) {
-			connectContext = createConnectContext(serviceReference, container,
-					context);
+			connectContext = createConnectContext(serviceReference, properties,
+					container, context);
 		}
 		// connect the container
 		container.connect(targetID, connectContext);
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 67c526d..43b89df 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
@@ -25,6 +25,12 @@
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;
 import org.osgi.framework.Version;
 
+/**
+ * Abstract superclass for metadata factories...i.e. implementers of
+ * {@link IServiceInfoFactory}.
+ * 
+ * 
+ */
 public abstract class AbstractMetadataFactory {
 
 	protected static final String LIST_SEPARATOR = " "; //$NON-NLS-1$
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 71f3c53..8c6048e 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
@@ -31,6 +31,16 @@
 import org.osgi.service.remoteserviceadmin.ImportRegistration;
 import org.osgi.util.tracker.ServiceTracker;
 
+/**
+ * Abstract superclass for topology managers. This abstract superclass provides
+ * basic functionality for topology managers to reuse. New topology managers can
+ * extend this class to get or customize desired functionality. Alternatively,
+ * they can use this class as a guide to implementing desired topology manager
+ * behavior. For description of the role of topology managers see the <a
+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGI 4.2 Remote
+ * Service Admin specification (chap 122)</a>.
+ * 
+ */
 public abstract class AbstractTopologyManager {
 
 	public static final String SERVICE_EXPORTED_INTERFACES_WILDCARD = "*"; //$NON-NLS-1$
@@ -56,9 +66,12 @@
 	}
 
 	protected String getFrameworkUUID() {
-		return Activator.getDefault().getFrameworkUUID();
+		Activator a = Activator.getDefault();
+		if (a == null)
+			return null;
+		return a.getFrameworkUUID();
 	}
-	
+
 	protected IEndpointDescriptionAdvertiser getEndpointDescriptionAdvertiser(
 			EndpointDescription endpointDescription) {
 		synchronized (endpointDescriptionAdvertiserTrackerLock) {
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
index 013aca7..e06dff7 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
@@ -9,9 +9,16 @@
  ******************************************************************************/
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;
 
+import java.util.List;
+
 import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
 
+/**
+ * Default implementation of {@link IConsumerContainerSelector}.
+ * 
+ */
 public class ConsumerContainerSelector extends
 		AbstractConsumerContainerSelector implements IConsumerContainerSelector {
 
@@ -22,33 +29,37 @@
 	}
 
 	public IRemoteServiceContainer selectConsumerContainer(
-			EndpointDescription endpointDescription) {
+			EndpointDescription endpointDescription)
+			throws SelectContainerException {
 		trace("selectConsumerContainers", "endpointDescription=" + endpointDescription); //$NON-NLS-1$ //$NON-NLS-2$
 
+		// Get service.imported.configs
+		List<String> sic = PropertiesUtil
+				.getStringPlusProperty(
+						endpointDescription.getProperties(),
+						org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS);
+		String[] serviceImportedConfigs = sic.toArray(new String[sic.size()]);
 		// Get the endpointID
 		ID endpointContainerID = endpointDescription.getContainerID();
 
-		String[] remoteSupportedConfigs = (String[]) endpointDescription
-				.getProperties()
-				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);
-
 		// Get connect targetID
 		ID connectTargetID = endpointDescription.getConnectTargetID();
 
 		IRemoteServiceContainer rsContainer = selectExistingConsumerContainer(
-				endpointContainerID, remoteSupportedConfigs, connectTargetID);
+				endpointContainerID, serviceImportedConfigs, connectTargetID);
 
 		// If we haven't found any existing containers then we create one
 		// from the remoteSupportedConfigs...*iff* autoCreateContainer is
 		// set to true
 		if (rsContainer == null && autoCreateContainer)
 			rsContainer = createAndConfigureConsumerContainer(
-					remoteSupportedConfigs, endpointDescription.getProperties());
+					serviceImportedConfigs, endpointDescription.getProperties());
 
 		// Get the connect target ID from the endpointDescription
 		// and connect the given containers to the connect targetID
 		// This is only needed when when the endpointID is different from
-		// the connect targetID, and the containers are not already connected
+		// the connect targetID, and the containers are not already
+		// connected
 		connectContainerToTarget(rsContainer, connectTargetID);
 
 		return rsContainer;
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
index 0be3c3f..557c9b2 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
@@ -15,7 +15,8 @@
 /**
  * Discovered endpoint description. Instances of this class represent discovered
  * endpoint descriptions that were discovered by a particular discovery locator
- * namespace.  Instances of this class are typically created via a {@link IDiscoveredEndpointDescriptionFactory}.
+ * namespace. Instances of this class are typically created via a
+ * {@link IDiscoveredEndpointDescriptionFactory}.
  * 
  * @see IDiscoveredEndpointDescriptionFactory
  */
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
index 65c2cae..c44c8e6 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
@@ -20,7 +20,8 @@
 import org.osgi.service.remoteserviceadmin.EndpointDescription;
 
 /**
- * Default implementation of {@link IDiscoveredEndpointDescriptionFactory} service.
+ * Default implementation of {@link IDiscoveredEndpointDescriptionFactory}
+ * service.
  * 
  * @see IDiscoveredEndpointDescriptionFactory
  */
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 6c34885..e30a413 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
@@ -17,6 +17,7 @@
 
 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.IDUtil;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;
 import org.osgi.framework.ServiceReference;
@@ -50,14 +51,17 @@
 	private String rsFilter;
 
 	private int hashCode = 7;
-	
+	private Map overrides;
+
 	private void computeHashCode() {
 		this.hashCode = 31 * this.hashCode + getId().hashCode();
-		this.hashCode = 31 * this.hashCode + new Long(getServiceId()).intValue();
+		this.hashCode = 31 * this.hashCode
+				+ new Long(getServiceId()).intValue();
 		String frameworkUUID = getFrameworkUUID();
-		this.hashCode = 31 * this.hashCode + (frameworkUUID==null?0:frameworkUUID.hashCode());
+		this.hashCode = 31 * this.hashCode
+				+ (frameworkUUID == null ? 0 : frameworkUUID.hashCode());
 	}
-	
+
 	/**
 	 * 
 	 * @param reference
@@ -126,11 +130,7 @@
 		try {
 			return IDUtil.createID(idNamespace, idName);
 		} catch (IDCreateException e) {
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"cannot create a valid ID: idNamespace=" + idNamespace //$NON-NLS-1$
-							+ ", idName=" + idName); //$NON-NLS-1$
-			iae.initCause(e);
-			throw iae;
+			return IDFactory.getDefault().createStringID(idName);
 		}
 	}
 
@@ -206,7 +206,7 @@
 	public int hashCode() {
 		return hashCode;
 	}
-	
+
 	public boolean equals(Object other) {
 		if (other == null)
 			return false;
@@ -216,7 +216,7 @@
 			return false;
 		EndpointDescription o = (EndpointDescription) other;
 		String frameworkUUID = getFrameworkUUID();
-		// equals returns true:  1) if getId() returns same String
+		// equals returns true: 1) if getId() returns same String
 		return getId().equals(o.getId())
 		// 2) getServiceId() returns same value
 				&& getServiceId() == o.getServiceId()
@@ -232,4 +232,21 @@
 				+ ",properties=" + getProperties() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	void setPropertiesOverrides(Map propertiesOverrides) {
+		this.overrides = PropertiesUtil.mergeProperties(super.getProperties(),
+				propertiesOverrides);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.osgi.service.remoteserviceadmin.EndpointDescription#getProperties()
+	 */
+	@Override
+	public Map<String, Object> getProperties() {
+		if (overrides != null)
+			return overrides;
+		return super.getProperties();
+	}
 }
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
index 80ff4a9..6e42be4 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
@@ -20,6 +20,10 @@
 import org.eclipse.ecf.discovery.IServiceInfo;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;
 
+/**
+ * Default implementation of {@link IEndpointDescriptionAdvertiser}.
+ * 
+ */
 public class EndpointDescriptionAdvertiser implements
 		IEndpointDescriptionAdvertiser {
 
@@ -85,7 +89,9 @@
 			return createErrorStatus(messagePrefix
 					+ " endpointDescription=" //$NON-NLS-1$
 					+ endpointDescription
-					+ ".  No endpointDescriptionLocator advertisers available.  Cannot unpublish endpointDescription=" //$NON-NLS-1$
+					+ ".  No endpointDescriptionLocator advertisers available.  Cannot "  //$NON-NLS-1$
+					+ (advertise ? "publish" : "unpublish")  //$NON-NLS-1$ //$NON-NLS-2$
+					+ " endpointDescription=" //$NON-NLS-1$ 
 					+ endpointDescription);
 		for (int i = 0; i < discoveryAdvertisers.length; i++) {
 			IServiceInfo serviceInfo = (advertise ? serviceInfoFactory
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
index 7edd6f0..f852af3 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
@@ -57,6 +57,11 @@
 import org.osgi.util.tracker.ServiceTracker;
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
+/**
+ * Implementation of EndpointDescription discovery mechanism, using any/all ECF
+ * discovery providers (implementers if {@link IDiscoveryLocator}.
+ * 
+ */
 public class EndpointDescriptionLocator {
 
 	private BundleContext context;
@@ -384,7 +389,7 @@
 			String matchingFilters, boolean discovered) {
 		if (eventQueue == null)
 			return;
-		trace("queueEndpointDescription", "endpointDescription="
+		trace("queueEndpointDescription", "endpointDescription=" //$NON-NLS-1$ //$NON-NLS-2$
 				+ endpointDescription);
 		synchronized (eventQueue) {
 			eventQueue
@@ -596,19 +601,27 @@
 			List<String> filters = PropertiesUtil.getStringPlusProperty(
 					getMapFromProperties(refs[i]),
 					EndpointListener.ENDPOINT_LISTENER_SCOPE);
-			String matchingFilter = isMatch(description, filters);
-			if (matchingFilter != null)
-				results.add(new EndpointListenerHolder(listener, description,
-						matchingFilter));
+			if (filters.size() > 0) {
+				String matchingFilter = isMatch(description, filters);
+				if (matchingFilter != null)
+					results.add(new EndpointListenerHolder(listener,
+							description, matchingFilter));
+			}
 		}
 		return (EndpointListenerHolder[]) results
 				.toArray(new EndpointListenerHolder[results.size()]);
 	}
 
 	private String isMatch(EndpointDescription description, List<String> filters) {
-		for (String filter : filters)
-			if (description.matches(filter))
-				return filter;
+		for (String filter : filters) {
+			try {
+				if (description.matches(filter))
+					return filter;
+			} catch (IllegalArgumentException e) {
+				logError("isMatch", "invalid endpoint listener filter=" //$NON-NLS-1$ //$NON-NLS-2$
+						+ filters, e);
+			}
+		}
 		return null;
 	}
 
@@ -812,6 +825,8 @@
 		}
 
 		void handleService(IServiceInfo serviceInfo, boolean discovered) {
+			logInfo("handleService", "serviceInfo=" + serviceInfo //$NON-NLS-1$ //$NON-NLS-2$
+					+ ",discovered=" + discovered); //$NON-NLS-1$
 			IServiceID serviceID = serviceInfo.getServiceID();
 			if (matchServiceID(serviceID))
 				handleOSGiServiceEndpoint(serviceID, serviceInfo, discovered);
@@ -855,6 +870,12 @@
 			}
 		}
 
+		private void logInfo(String methodName, String message) {
+			LogUtility.logInfo(methodName,
+					DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),
+					message);
+		}
+
 		private void logWarning(String methodName, String message) {
 			LogUtility.logWarning(methodName,
 					DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),
@@ -891,8 +912,9 @@
 				// for given serviceID and serviceInfo
 				return (discovered) ? factory
 						.createDiscoveredEndpointDescription(locator,
-								serviceInfo) : factory
-						.removeDiscoveredEndpointDescription(locator, serviceId);
+								serviceInfo)
+						: factory.removeDiscoveredEndpointDescription(locator,
+								serviceId);
 			} catch (Exception e) {
 				logError(
 						methodName,
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
index ed6de2b..ab3fe2b 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
@@ -9,6 +9,12 @@
  ******************************************************************************/
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;
 
+/**
+ * Exception class to represent endpoint description parse problems when
+ * performed by {@link IEndpointDescriptionReader}.
+ * 
+ * @see IEndpointDescriptionReader#readEndpointDescriptions(java.io.InputStream)
+ */
 public class EndpointDescriptionParseException extends Exception {
 
 	private static final long serialVersionUID = -4481979787400184664L;
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
index 5d46705..1197f12 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
@@ -19,6 +19,10 @@
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.EndpointDescriptionParser;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;
 
+/**
+ * Default implementation of {@link IEndpointDescriptionReader}.
+ * 
+ */
 public class EndpointDescriptionReader implements IEndpointDescriptionReader {
 
 	public org.osgi.service.remoteserviceadmin.EndpointDescription[] readEndpointDescriptions(
@@ -42,7 +46,7 @@
 						DebugOptions.ENDPOINT_DESCRIPTION_READER,
 						this.getClass(),
 						"Exception parsing endpoint description properties", e); //$NON-NLS-1$
-				throw new IOException("Error creating endpoint description: "
+				throw new IOException("Error creating endpoint description: " //$NON-NLS-1$
 						+ e.getMessage());
 			}
 		}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
index 47a70f0..82dc11c 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
@@ -16,6 +16,14 @@
 import java.util.Map;
 import java.util.Set;
 
+/**
+ * Endpoint description writer class for writing {@link EndpointDescription}s to
+ * the OSGi 4.2 Remote Service Admin Endpoint Description Extender Format
+ * (section 122.8 of OSGi 4.2 enterprise specification). This class may be used
+ * or extended to write {@link EndpointDescription} instances to the format
+ * specified by OSGi 4.2 section 122.8.
+ * 
+ */
 public class EndpointDescriptionWriter {
 
 	protected String indent = "  "; //$NON-NLS-1$
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
index 4fba499..28873c1 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
@@ -11,11 +11,16 @@
 
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Map;
 
 import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
 import org.osgi.framework.ServiceReference;
 
+/**
+ * Default implementation of {@link IHostContainerSelector} service.
+ * 
+ */
 public class HostContainerSelector extends AbstractHostContainerSelector
 		implements IHostContainerSelector {
 
@@ -30,35 +35,44 @@
 	// Adding synchronized to make the host container finding
 	// thread safe to deal with bug
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=331836
+	/**
+	 * @see org.eclipse.ecf.osgi.services.remoteserviceadmin.IHostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference,
+	 *      java.util.Map, java.lang.String[], java.lang.String[],
+	 *      java.lang.String[])
+	 * @since 2.0
+	 */
 	public synchronized IRemoteServiceContainer[] selectHostContainers(
 			ServiceReference serviceReference,
+			Map<String, Object> overridingProperties,
 			String[] serviceExportedInterfaces,
-			String[] serviceExportedConfigs, String[] serviceIntents) {
+			String[] serviceExportedConfigs, String[] serviceIntents)
+			throws SelectContainerException {
 		// Find previously created containers that match the given
 		// serviceExportedConfigs and serviceIntents
 		Collection rsContainers = selectExistingHostContainers(
-				serviceReference, serviceExportedInterfaces,
-				serviceExportedConfigs, serviceIntents);
+				serviceReference, overridingProperties,
+				serviceExportedInterfaces, serviceExportedConfigs,
+				serviceIntents);
 
 		if (rsContainers.size() == 0 && autoCreateContainer) {
 			// If no existing containers are found we'll go through
 			// finding/creating/configuring/connecting
 			rsContainers = createAndConfigureHostContainers(serviceReference,
-					serviceExportedInterfaces, serviceExportedConfigs,
-					serviceIntents);
+					overridingProperties, serviceExportedInterfaces,
+					serviceExportedConfigs, serviceIntents);
 
 			// if SERVICE_EXPORTED_CONTAINER_CONNECT_TARGET service property is
 			// specified, then
 			// connect the host container(s)
-			Object target = serviceReference
-					.getProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
+			Object target = overridingProperties
+					.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
 			if (target != null) {
 				for (Iterator i = rsContainers.iterator(); i.hasNext();) {
 					IContainer container = ((IRemoteServiceContainer) i.next())
 							.getContainer();
 					try {
-						connectHostContainer(serviceReference, container,
-								target);
+						connectHostContainer(serviceReference,
+								overridingProperties, container, target);
 					} catch (Exception e) {
 						logException("doConnectContainer failure containerID=" //$NON-NLS-1$
 								+ container.getID() + " target=" + target, e); //$NON-NLS-1$
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
index 732c445..fce1ddb 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
@@ -41,8 +41,12 @@
 	 * @return IRemoteServiceContainer to be used for importing the remote
 	 *         service. May be <code>null</code> if not container is available
 	 *         for use as a consumer for the given endpointDescription.
+	 * @throws SelectContainerException
+	 *             thrown if the host container selection or
+	 *             creation/configuration fails.
 	 */
 	public IRemoteServiceContainer selectConsumerContainer(
-			EndpointDescription endpointDescription);
+			EndpointDescription endpointDescription)
+			throws SelectContainerException;
 
 }
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
index 0e6d0d8..e2b9438 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
@@ -29,18 +29,19 @@
  * instance of {@link DiscoveredEndpointDescriptionFactory} will be used by the
  * {@link EndpointDescriptionLocator}. Note that this default instance is
  * registered with the lowest possible priority, so that if other
- * {@link IDiscoveredEndpointDescriptionFactory} instances are registered, they will be
- * preferred/used over the default. This means that those wishing to
+ * {@link IDiscoveredEndpointDescriptionFactory} instances are registered, they
+ * will be preferred/used over the default. This means that those wishing to
  * customize/control this process of converting {@link IServiceInfo}s to
  * {@link DiscoveredEndpointDescription} must
  * <ul>
- * <li>create their own implementation of {@link IDiscoveredEndpointDescriptionFactory}</li>
+ * <li>create their own implementation of
+ * {@link IDiscoveredEndpointDescriptionFactory}</li>
  * <li>register it with the OSGi service registry with a priority
  * ({org.osgi.framework.Constants#SERVICE_RANKING}) higher than
  * {@link Integer#MIN_VALUE}</li>
  * <ul>
- * Then at runtime, when needed by the {@link EndpointDescriptionLocator},
- * the new discovered endpoint description factory will be used.
+ * Then at runtime, when needed by the {@link EndpointDescriptionLocator}, the
+ * new discovered endpoint description factory will be used.
  * 
  * @see IServiceInfoFactory
  * 
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
index fb0760d..b12c9ff 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
@@ -16,8 +16,9 @@
  * Service for reading endpoint descriptions from xml-files in the Endpoint
  * Description Extender Format (EDEF) specified in section 122.8 of the <a
  * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGi Enterprise
- * Specification</a>. The InputStream provided must be of the EDEF format,
- * otherwise an IOException or EndpointDescriptionParseException will be thrown.
+ * Specification (chapter 122)</a>. The InputStream provided must be of the EDEF
+ * format, otherwise an IOException or EndpointDescriptionParseException will be
+ * thrown.
  * 
  */
 public interface IEndpointDescriptionReader {
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
index 40d7515..f7ecdf3 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
@@ -9,6 +9,8 @@
  ******************************************************************************/
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;
 
+import java.util.Map;
+
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
 import org.osgi.framework.ServiceReference;
@@ -43,6 +45,9 @@
 	 * @param serviceReference
 	 *            the service reference given by the
 	 *            {@link RemoteServiceAdmin#exportService(ServiceReference, java.util.Map)}
+	 * @param overridingProperties
+	 *            the map portion given by the
+	 *            {@link RemoteServiceAdmin#exportService(ServiceReference, java.util.Map)}
 	 * @param exportedInterfaces
 	 *            the exportedInterfaces (typically associated with
 	 *            {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES}
@@ -61,8 +66,14 @@
 	 *         should be used to export the given remote service (typically via
 	 *         {@link IRemoteServiceContainerAdapter#registerRemoteService(String[], Object, java.util.Dictionary)}
 	 *         ). Will not be <code>null</code>, but may be empty array.
+	 * @throws SelectContainerException
+	 *             thrown if the host container selection or
+	 *             creation/configuration fails.
+	 * @since 2.0
 	 */
 	IRemoteServiceContainer[] selectHostContainers(
-			ServiceReference serviceReference, String[] exportedInterfaces,
-			String[] exportedConfigs, String[] serviceIntents);
+			ServiceReference serviceReference,
+			Map<String, Object> overridingProperties,
+			String[] exportedInterfaces, String[] exportedConfigs,
+			String[] serviceIntents) throws SelectContainerException;
 }
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 8eb0ff1..86a73b5 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
@@ -18,8 +18,10 @@
 
 /**
  * ECF Remote Service Admin RemoteConstants. These are constants for ECF's RSA
- * implementation-specific meta-data.
- * 
+ * implementation-specific meta-data. For OSGi Remote constant see
+ * {@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>.
  */
 public class RemoteConstants {
 
@@ -116,8 +118,6 @@
 	 */
 	public static final String ENDPOINT_REMOTESERVICE_FILTER = "ecf.endpoint.rsfilter"; //$NON-NLS-1$
 
-	public static final String ENDPOINT_SERVICE_IMPORTED_CONFIGS_VALUE = "org.eclipse.ecf.config"; //$NON-NLS-1$
-
 	/**
 	 * Container factory arguments for exported remote service hosts. If
 	 * specified as a service property upon remote service registration, this
@@ -162,4 +162,25 @@
 	 * the SERVICE_IMPORTED value appropriately.
 	 */
 	public static final String SERVICE_IMPORTED_VALUETYPE = "ecf.service.imported.valuetype"; //$NON-NLS-1$
+	/**
+	 * This property is set on the remote service proxy during
+	 * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}
+	 * , before local service proxy registration. It's String value is set to
+	 * the value returned from
+	 * {@link org.osgi.service.remoteserviceadmin.EndpointDescription#getId()}.
+	 * It allows those accessing the remote service proxy to get information
+	 * about the endpoint id.
+	 */
+	public static final String SERVICE_IMPORTED_ENDPOINT_ID = "ecf.service.imported.endpoint.id"; //$NON-NLS-1$
+
+	/**
+	 * This property is set on the remote service proxy during
+	 * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}
+	 * , before local service proxy registration. It's Long value is set to the
+	 * value returned from
+	 * {@link org.osgi.service.remoteserviceadmin.EndpointDescription#getServiceId()}
+	 * . It allows those accessing the remote service proxy to get information
+	 * about the endpoint remote service id.
+	 */
+	public static final String SERVICE_IMPORTED_ENDPOINT_SERVICE_ID = "ecf.service.imported.endpoint.service.id"; //$NON-NLS-1$
 }
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java
index 951e18e..e8a68f4 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java
@@ -13,7 +13,19 @@
 import java.util.Collection;
 
 import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
 
+/**
+ * Exception class for the case when no remote reference is found during
+ * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}
+ * . Instances of this class will be thrown when the call to
+ * {@link IRemoteServiceContainerAdapter#getRemoteServiceReferences(ID, ID[], String, String)}
+ * made in
+ * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}
+ * fail to find any available remote references (e.g. due to connection problem
+ * or remote reference lookup problem).
+ * 
+ */
 public class RemoteReferenceNotFoundException extends Exception {
 
 	private static final long serialVersionUID = -4174685192086828376L;
@@ -48,9 +60,9 @@
 	}
 
 	public String toString() {
-		return "RemoteReferenceNotFoundException[targetID=" + targetID
-				+ ", idFilter=" + Arrays.toString(idFilter) + ", interfaces="
-				+ interfaces + ", rsFilter=" + rsFilter + "]";
+		return "RemoteReferenceNotFoundException[targetID=" + targetID //$NON-NLS-1$
+				+ ", idFilter=" + Arrays.toString(idFilter) + ", interfaces=" //$NON-NLS-1$ //$NON-NLS-2$
+				+ interfaces + ", rsFilter=" + rsFilter + "]"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
 }
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 d1b3e36..4688995 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
@@ -10,6 +10,7 @@
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
@@ -45,6 +46,7 @@
 import org.eclipse.ecf.remoteservice.events.IRemoteServiceUnregisteredEvent;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceException;
 import org.osgi.framework.ServiceFactory;
@@ -59,7 +61,16 @@
 import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener;
 import org.osgi.util.tracker.ServiceTracker;
 
-@SuppressWarnings("deprecation")
+/**
+ * ECF implementation of <a
+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGI 4.2 Remote
+ * Service Admin service</a>. This service can be used by topology managers to
+ * to export and/or import remote services with any <a
+ * href="http://wiki.eclipse.org/ECF_Connection_Creation_and_Management">ECF
+ * container</a> that implements the <a
+ * href="http://wiki.eclipse.org/ECF/API_Docs#Remote_Services_API">ECF remote
+ * service API</a>.
+ */
 public class RemoteServiceAdmin implements
 		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin {
 
@@ -102,8 +113,8 @@
 	public RemoteServiceAdmin(Bundle clientBundle) {
 		this.clientBundle = clientBundle;
 		Assert.isNotNull(this.clientBundle);
-		trace("RemoteServiceAdmin<init>",
-				"clientBundle=" + clientBundle.getSymbolicName());
+		trace("RemoteServiceAdmin<init>", //$NON-NLS-1$
+				"clientBundle=" + clientBundle.getSymbolicName()); //$NON-NLS-1$
 		// Only setup defaults if it hasn't already been done by some other
 		// Remote Service Admin instance
 		Properties props = new Properties();
@@ -149,6 +160,19 @@
 		}
 	}
 
+	private boolean validExportedInterfaces(ServiceReference serviceReference,
+			String[] exportedInterfaces) {
+		if (exportedInterfaces == null || exportedInterfaces.length == 0)
+			return false;
+		List<String> objectClassList = Arrays
+				.asList((String[]) serviceReference
+						.getProperty(org.osgi.framework.Constants.OBJECTCLASS));
+		for (int i = 0; i < exportedInterfaces.length; i++)
+			if (!objectClassList.contains(exportedInterfaces[i]))
+				return false;
+		return true;
+	}
+
 	// RemoteServiceAdmin service interface impl methods
 	public Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> exportService(
 			ServiceReference serviceReference,
@@ -157,22 +181,20 @@
 		trace("exportService", "serviceReference=" + serviceReference //$NON-NLS-1$ //$NON-NLS-2$
 				+ ",properties=" + overridingProperties); //$NON-NLS-1$
 
-		overridingProperties = (overridingProperties == null) ? Collections.EMPTY_MAP
-				: overridingProperties;
+		overridingProperties = PropertiesUtil.mergeProperties(serviceReference,
+				overridingProperties == null ? Collections.EMPTY_MAP
+						: overridingProperties);
 
 		// First get exported interfaces
-		String[] exportedInterfaces = (String[]) overridingProperties
-				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES);
-		// As per 122.5.1 we only use the OBJECTCLASS value from the
-		// serviceReference, not from the overridingProperties map
-		if (exportedInterfaces == null)
-			exportedInterfaces = PropertiesUtil
-					.getExportedInterfaces(serviceReference);
-		// If exportedInterfaces is still null, we throw
+		String[] exportedInterfaces = PropertiesUtil.getExportedInterfaces(
+				serviceReference, overridingProperties);
 		if (exportedInterfaces == null)
 			throw new IllegalArgumentException(
 					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES
 							+ " not set"); //$NON-NLS-1$
+		// verifyExportedInterfaces
+		if (!validExportedInterfaces(serviceReference, exportedInterfaces))
+			return Collections.EMPTY_LIST;
 
 		// Get optional exported configs
 		String[] exportedConfigs = PropertiesUtil
@@ -190,22 +212,30 @@
 
 		// Get a host container selector, and use it to
 		IHostContainerSelector hostContainerSelector = getHostContainerSelector();
-		if (hostContainerSelector == null) {
-			logError("handleServiceRegistering", //$NON-NLS-1$
-					"No defaultHostContainerSelector available"); //$NON-NLS-1$
-			return Collections.EMPTY_LIST;
-		}
 		// select ECF remote service containers that match given exported
 		// interfaces, configs, and intents
-		IRemoteServiceContainer[] rsContainers = hostContainerSelector
-				.selectHostContainers(serviceReference, exportedInterfaces,
-						exportedConfigs, serviceIntents);
-		// If none found, log a warning and we're done
+		IRemoteServiceContainer[] rsContainers = null;
+		try {
+			rsContainers = hostContainerSelector.selectHostContainers(
+					serviceReference, overridingProperties, exportedInterfaces,
+					exportedConfigs, serviceIntents);
+		} catch (SelectContainerException e) {
+			ExportRegistration errorRegistration = createErrorExportRegistration(
+					serviceReference, overridingProperties,
+					"Error selecting or creating host container for serviceReference=" //$NON-NLS-1$
+							+ serviceReference + " properties=" //$NON-NLS-1$
+							+ overridingProperties, e);
+			Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> result = new ArrayList<org.osgi.service.remoteserviceadmin.ExportRegistration>();
+			result.add(errorRegistration);
+			publishExportEvent(errorRegistration);
+			return result;
+		}
+		// If none found, log warning and return
 		if (rsContainers == null || rsContainers.length == 0) {
-			logWarning(
-					"handleServiceRegistered", "No remote service containers found for serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$
-							+ serviceReference
-							+ ". Remote service NOT EXPORTED"); //$NON-NLS-1$
+			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>();
@@ -223,23 +253,36 @@
 				if (exportEndpoint != null)
 					exportRegistration = new ExportRegistration(exportEndpoint);
 				else {
+					Map endpointDescriptionProperties = createExportEndpointDescriptionProperties(
+							serviceReference, overridingProperties,
+							exportedInterfaces, serviceIntents, rsContainers[i]);
 					// otherwise, actually export the service to create a new
-					// ExportEndpoint
-					// and use it to create a new ExportRegistration
-					exportRegistration = new ExportRegistration(
-							exportService(serviceReference,
-									overridingProperties, exportedInterfaces,
-									serviceIntents, rsContainers[i]));
-					// If no exception, we add it to our known set of exported
-					// registrations
-					if (exportRegistration.getException() == null)
-						addExportRegistration(exportRegistration);
+					// ExportEndpoint and use it to create a new
+					// ExportRegistration
+					EndpointDescription endpointDescription = new EndpointDescription(
+							serviceReference, endpointDescriptionProperties);
+					try {
+						// Check security access for export
+						checkEndpointPermission(endpointDescription,
+								EndpointPermission.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);
+					}
 				}
+				// If no exception, we add it to our known set of exported
+				// registrations
+				if (exportRegistration.getException() == null)
+					addExportRegistration(exportRegistration);
 				// We add it to the results in either case
 				exportRegistrations.add(exportRegistration);
 			}
 		}
-		// publish all exportRegistrations
+		// publish all activeExportRegistrations
 		for (ExportRegistration exportReg : exportRegistrations)
 			publishExportEvent(exportReg);
 		// and return
@@ -247,6 +290,21 @@
 				exportRegistrations);
 	}
 
+	private ExportRegistration createErrorExportRegistration(
+			ServiceReference serviceReference,
+			Map<String, Object> overridingProperties, String errorMessage,
+			SelectContainerException exception) {
+		ContainerTypeDescription ctd = exception.getContainerTypeDescription();
+		overridingProperties
+				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
+						"noendpoint"); //$NON-NLS-1$
+		overridingProperties
+				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,
+						(ctd == null) ? "noconfig" : ctd.getName()); //$NON-NLS-1$
+		return new ExportRegistration(exception, new EndpointDescription(
+				serviceReference, overridingProperties));
+	}
+
 	public org.osgi.service.remoteserviceadmin.ImportRegistration importService(
 			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription) {
 
@@ -255,9 +313,6 @@
 		// permission
 		checkEndpointPermission(endpointDescription, EndpointPermission.IMPORT);
 
-		if (endpointDescription.getServiceId() == 0)
-			return handleNonOSGiService(endpointDescription);
-
 		EndpointDescription ed = null;
 		if (endpointDescription instanceof EndpointDescription)
 			ed = (EndpointDescription) endpointDescription;
@@ -274,8 +329,14 @@
 			return null;
 		}
 		// Select the rsContainer to handle the endpoint description
-		IRemoteServiceContainer rsContainer = consumerContainerSelector
-				.selectConsumerContainer(ed);
+		IRemoteServiceContainer rsContainer = null;
+		try {
+			rsContainer = consumerContainerSelector.selectConsumerContainer(ed);
+		} catch (SelectContainerException e) {
+			ImportRegistration errorRegistration = new ImportRegistration(ed, e);
+			publishImportEvent(errorRegistration);
+			return errorRegistration;
+		}
 		// If none found, log a warning and we're done
 		if (rsContainer == null) {
 			logWarning(
@@ -292,8 +353,7 @@
 			if (importEndpoint != null)
 				importRegistration = new ImportRegistration(importEndpoint);
 			else {
-				importEndpoint = importService(ed, rsContainer);
-				importRegistration = new ImportRegistration(importEndpoint);
+				importRegistration = importService(ed, rsContainer);
 				if (importRegistration.getException() == null)
 					addImportRegistration(importRegistration);
 			}
@@ -355,15 +415,18 @@
 		return clientBundle.getBundleContext();
 	}
 
-	private Bundle getClientBundle() {
-		return clientBundle;
+	private Bundle getRSABundle() {
+		BundleContext bundleContext = Activator.getContext();
+		if (bundleContext == null)
+			return null;
+		return bundleContext.getBundle();
 	}
 
 	private void addImportRegistration(ImportRegistration importRegistration) {
 		synchronized (importedRegistrations) {
 			importedRegistrations.add(importRegistration);
-			trace("addImportRegistration", "importRegistration="
-					+ importRegistration + " importedRegistrations="
+			trace("addImportRegistration", "importRegistration=" //$NON-NLS-1$ //$NON-NLS-2$
+					+ importRegistration + " importedRegistrations=" //$NON-NLS-1$
 					+ importedRegistrations);
 		}
 	}
@@ -371,8 +434,8 @@
 	private void addExportRegistration(ExportRegistration exportRegistration) {
 		synchronized (exportedRegistrations) {
 			exportedRegistrations.add(exportRegistration);
-			trace("addExportRegistration", "exportRegistration="
-					+ exportRegistration + " exportedRegistrations="
+			trace("addExportRegistration", "exportRegistration=" //$NON-NLS-1$ //$NON-NLS-2$
+					+ exportRegistration + " exportedRegistrations=" //$NON-NLS-1$
 					+ exportedRegistrations);
 		}
 	}
@@ -434,10 +497,7 @@
 		private EndpointDescription endpointDescription;
 
 		private IRemoteServiceRegistration rsRegistration;
-		private ExportReference exportReference;
-		private Set<ExportRegistration> exportRegistrations = new HashSet<ExportRegistration>();
-
-		private Throwable exception;
+		private Set<ExportRegistration> activeExportRegistrations = new HashSet<ExportRegistration>();
 
 		ExportEndpoint(ServiceReference serviceReference,
 				EndpointDescription endpointDescription,
@@ -446,24 +506,8 @@
 			this.serviceReference = serviceReference;
 			Assert.isNotNull(endpointDescription);
 			this.endpointDescription = endpointDescription;
-
 			Assert.isNotNull(reg);
 			this.rsRegistration = reg;
-			this.exportReference = new ExportReference(serviceReference,
-					endpointDescription);
-		}
-
-		ExportEndpoint(ServiceReference serviceReference,
-				EndpointDescription endpointDescription, Throwable t) {
-			Assert.isNotNull(serviceReference);
-			this.serviceReference = serviceReference;
-			Assert.isNotNull(endpointDescription);
-			this.endpointDescription = endpointDescription;
-			this.exception = t;
-		}
-
-		synchronized Throwable getException() {
-			return exception;
 		}
 
 		synchronized ID getContainerID() {
@@ -478,78 +522,73 @@
 			return endpointDescription;
 		}
 
-		synchronized ExportReference getExportReference() {
-			return exportReference;
-		}
-
 		synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {
 			return rsRegistration;
 		}
 
-		synchronized boolean add(ExportRegistration exportRegistration) {
-			return this.exportRegistrations.add(exportRegistration);
+		synchronized boolean addExportRegistration(
+				ExportRegistration exportRegistration) {
+			return this.activeExportRegistrations.add(exportRegistration);
 		}
 
 		synchronized boolean close(ExportRegistration exportRegistration) {
-			boolean removed = this.exportRegistrations
+			boolean removed = this.activeExportRegistrations
 					.remove(exportRegistration);
-			if (removed && exportRegistrations.size() == 0) {
+			if (removed && activeExportRegistrations.size() == 0) {
 				if (rsRegistration != null) {
 					rsRegistration.unregister();
 					rsRegistration = null;
 				}
-				if (exportReference != null) {
-					exportReference.close();
-					exportReference = null;
-				}
+				serviceReference = null;
+				endpointDescription = null;
 			}
 			return removed;
 		}
-
-		public synchronized String toString() {
-			return "ExportEndpoint[rsRegistration=" + rsRegistration //$NON-NLS-1$
-					+ ", exportReference=" + exportReference + "]"; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
 	}
 
 	class ExportRegistration implements
 			org.osgi.service.remoteserviceadmin.ExportRegistration {
 
-		private ExportEndpoint exportEndpoint;
+		private ExportReference exportReference;
+
+		private boolean closed = false;
 
 		ExportRegistration(ExportEndpoint exportEndpoint) {
 			Assert.isNotNull(exportEndpoint);
-			this.exportEndpoint = exportEndpoint;
-			// Add ourselves to this exported endpoint
-			this.exportEndpoint.add(this);
+			exportEndpoint.addExportRegistration(this);
+			this.exportReference = new ExportReference(exportEndpoint);
 		}
 
-		synchronized ID getContainerID() {
-			return (exportEndpoint == null) ? null : exportEndpoint
-					.getContainerID();
+		ExportRegistration(Throwable exception,
+				EndpointDescription errorEndpointDescription) {
+			Assert.isNotNull(exception);
+			this.exportReference = new ExportReference(exception,
+					errorEndpointDescription);
+			this.closed = true;
 		}
 
-		synchronized ServiceReference getServiceReference() {
-			return (exportEndpoint == null) ? null : exportEndpoint
-					.getServiceReference();
+		ID getContainerID() {
+			return exportReference.getContainerID();
 		}
 
-		public synchronized org.osgi.service.remoteserviceadmin.ExportReference getExportReference() {
+		ServiceReference getServiceReference() {
+			return exportReference.getExportedService();
+		}
+
+		public org.osgi.service.remoteserviceadmin.ExportReference getExportReference() {
 			Throwable t = getException();
 			if (t != null)
 				throw new IllegalStateException(
 						"Cannot get export reference as export registration is invalid", //$NON-NLS-1$
 						t);
-			return (exportEndpoint == null) ? null : exportEndpoint
-					.getExportReference();
+			return exportReference;
 		}
 
-		synchronized boolean match(ServiceReference serviceReference) {
+		boolean match(ServiceReference serviceReference) {
 			return match(serviceReference, null);
 		}
 
-		synchronized boolean match(ServiceReference serviceReference,
+		boolean match(ServiceReference serviceReference,
 				ID containerID) {
 			ServiceReference ourServiceReference = getServiceReference();
 			if (ourServiceReference == null)
@@ -569,51 +608,45 @@
 
 		synchronized ExportEndpoint getExportEndpoint(
 				ServiceReference serviceReference, ID containerID) {
-			return match(serviceReference, containerID) ? exportEndpoint : null;
+			return match(serviceReference, containerID) ? exportReference
+					.getExportEndpoint() : null;
 		}
 
-		synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {
-			return (exportEndpoint == null) ? null : exportEndpoint
-					.getRemoteServiceRegistration();
+		IRemoteServiceRegistration getRemoteServiceRegistration() {
+			return exportReference.getRemoteServiceRegistration();
 		}
 
-		synchronized EndpointDescription getEndpointDescription() {
-			return (exportEndpoint == null) ? null : exportEndpoint
-					.getEndpointDescription();
+		EndpointDescription getEndpointDescription() {
+			return exportReference.getEndpointDescription();
 		}
 
 		public void close() {
-			boolean closed = false;
-			Throwable t = null;
-			org.osgi.service.remoteserviceadmin.ExportReference exportReference = null;
+			boolean publish = false;
+			ID containerID = null;
+			Throwable exception = null;
 			EndpointDescription endpointDescription = null;
 			synchronized (this) {
-				if (exportEndpoint != null) {
-					t = getException();
-					exportReference = (t == null) ? getExportReference() : null;
+				// Only do this once
+				if (!closed) {
+					containerID = getContainerID();
+					exception = getException();
 					endpointDescription = getEndpointDescription();
-					closed = exportEndpoint.close(this);
-					exportEndpoint = null;
+					publish = exportReference.close(this);
+					closed = true;
 				}
 			}
-			if (closed) {
-				removeExportRegistration(this);
-				publishEvent(
-						new RemoteServiceAdminEvent(
-								endpointDescription.getContainerID(),
-								RemoteServiceAdminEvent.EXPORT_UNREGISTRATION,
-								getClientBundle(), exportReference, t),
+			removeExportRegistration(this);
+			Bundle rsaBundle = getRSABundle();
+			// Only publish events
+			if (publish && rsaBundle != null)
+				publishEvent(new RemoteServiceAdminEvent(containerID,
+						RemoteServiceAdminEvent.EXPORT_UNREGISTRATION,
+						rsaBundle, exportReference, exception),
 						endpointDescription);
-			}
 		}
 
-		public synchronized Throwable getException() {
-			return (exportEndpoint == null) ? null : exportEndpoint
-					.getException();
-		}
-
-		public synchronized String toString() {
-			return "ExportRegistration[exportEndpoint=" + exportEndpoint + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+		public Throwable getException() {
+			return exportReference.getException();
 		}
 
 	}
@@ -621,31 +654,63 @@
 	class ExportReference implements
 			org.osgi.service.remoteserviceadmin.ExportReference {
 
-		private ServiceReference serviceReference;
-		private EndpointDescription endpointDescription;
+		private ExportEndpoint exportEndpoint;
 
-		ExportReference(ServiceReference serviceReference,
-				EndpointDescription endpointDescription) {
-			this.serviceReference = serviceReference;
-			this.endpointDescription = endpointDescription;
+		private Throwable exception;
+		private EndpointDescription errorEndpointDescription;
+
+		ExportReference(ExportEndpoint exportEndpoint) {
+			Assert.isNotNull(exportEndpoint);
+			this.exportEndpoint = exportEndpoint;
+		}
+
+		ExportReference(Throwable exception,
+				EndpointDescription errorEndpointDescription) {
+			Assert.isNotNull(exception);
+			this.exception = exception;
+			Assert.isNotNull(exception);
+			this.errorEndpointDescription = errorEndpointDescription;
+		}
+
+		synchronized Throwable getException() {
+			return exception;
+		}
+
+		synchronized boolean close(ExportRegistration exportRegistration) {
+			if (exportEndpoint == null)
+				return false;
+			boolean result = exportEndpoint.close(exportRegistration);
+			exportEndpoint = null;
+			return result;
+		}
+
+		synchronized ExportEndpoint getExportEndpoint() {
+			return exportEndpoint;
+		}
+
+		synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {
+			return (exportEndpoint == null) ? null : exportEndpoint
+					.getRemoteServiceRegistration();
+		}
+
+		synchronized ID getContainerID() {
+			return (exportEndpoint == null) ? null : exportEndpoint
+					.getContainerID();
 		}
 
 		public synchronized ServiceReference getExportedService() {
-			return serviceReference;
+			return (exportEndpoint == null) ? null : exportEndpoint
+					.getServiceReference();
 		}
 
 		public synchronized org.osgi.service.remoteserviceadmin.EndpointDescription getExportedEndpoint() {
-			return endpointDescription;
+			return (exportEndpoint == null) ? null : exportEndpoint
+					.getEndpointDescription();
 		}
 
-		synchronized void close() {
-			this.serviceReference = null;
-			this.endpointDescription = null;
-		}
-
-		public synchronized String toString() {
-			return "ExportReference[serviceReference=" + serviceReference //$NON-NLS-1$
-					+ ", endpointDescription=" + endpointDescription + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+		synchronized EndpointDescription getEndpointDescription() {
+			return (exportEndpoint == null) ? errorEndpointDescription
+					: exportEndpoint.getEndpointDescription();
 		}
 
 	}
@@ -657,10 +722,7 @@
 		private IRemoteServiceListener rsListener;
 		private IRemoteServiceReference rsReference;
 		private ServiceRegistration proxyRegistration;
-		private ImportReference importReference;
-		private Set<ImportRegistration> importRegistrations = new HashSet<ImportRegistration>();
-
-		private Throwable exception;
+		private Set<ImportRegistration> activeImportRegistrations = new HashSet<ImportRegistration>();
 
 		ImportEndpoint(IRemoteServiceContainerAdapter rsContainerAdapter,
 				IRemoteServiceReference rsReference,
@@ -672,45 +734,35 @@
 			this.rsReference = rsReference;
 			this.rsListener = rsListener;
 			this.proxyRegistration = proxyRegistration;
-			this.importReference = new ImportReference(
-					proxyRegistration.getReference(), endpointDescription);
 			// Add the remoteservice listener to the container adapter, so that
-			// the
-			// rsListener
-			// notified asynchronously if our underlying remote service
-			// reference is
-			// unregistered locally
-			// due to disconnect or remote ejection
+			// the rsListener notified asynchronously if our underlying remote
+			// service
+			// reference is unregistered locally due to disconnect or remote
+			// ejection
 			this.rsContainerAdapter.addRemoteServiceListener(this.rsListener);
 		}
 
-		ImportEndpoint(IRemoteServiceContainerAdapter rsContainerAdapter,
-				EndpointDescription endpointDescription, Throwable t) {
-			this.rsContainerAdapter = rsContainerAdapter;
-			this.endpointDescription = endpointDescription;
-			this.exception = t;
-		}
-
 		synchronized EndpointDescription getEndpointDescription() {
 			return endpointDescription;
 		}
 
-		synchronized Throwable getException() {
-			return exception;
+		synchronized ServiceRegistration getProxyRegistration() {
+			return proxyRegistration;
 		}
 
 		synchronized ID getContainerID() {
 			return (rsReference == null) ? null : rsReference.getContainerID();
 		}
 
-		synchronized boolean add(ImportRegistration importRegistration) {
-			return this.importRegistrations.add(importRegistration);
+		synchronized boolean addImportRegistration(
+				ImportRegistration importRegistration) {
+			return this.activeImportRegistrations.add(importRegistration);
 		}
 
 		synchronized boolean close(ImportRegistration importRegistration) {
-			boolean removed = this.importRegistrations
+			boolean removed = this.activeImportRegistrations
 					.remove(importRegistration);
-			if (removed && importRegistrations.size() == 0) {
+			if (removed && activeImportRegistrations.size() == 0) {
 				if (proxyRegistration != null) {
 					proxyRegistration.unregister();
 					proxyRegistration = null;
@@ -728,38 +780,21 @@
 					}
 					rsContainerAdapter = null;
 				}
-				if (importReference != null) {
-					importReference.close();
-					importReference = null;
-				}
+				endpointDescription = null;
 			}
 			return removed;
 		}
 
-		synchronized ImportReference getImportReference() {
-			return importReference;
-		}
-
 		synchronized boolean match(IRemoteServiceID remoteServiceID) {
 			if (remoteServiceID == null || rsReference == null)
 				return false;
 			return rsReference.getID().equals(remoteServiceID);
 		}
 
-		public synchronized String toString() {
-			return "ImportEndpoint[rsReference=" + rsReference //$NON-NLS-1$
-					+ ", proxyRegistration=" + proxyRegistration //$NON-NLS-1$
-					+ ", importReference=" + importReference + "]"; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
 		synchronized boolean match(EndpointDescription ed) {
-			if (importReference == null)
+			if (activeImportRegistrations.size() == 0)
 				return false;
-			EndpointDescription importedEndpoint = (EndpointDescription) importReference
-					.getImportedEndpoint();
-			if (importedEndpoint == null)
-				return false;
-			return importedEndpoint.isSameService(ed);
+			return this.endpointDescription.isSameService(ed);
 		}
 
 	}
@@ -767,80 +802,76 @@
 	class ImportRegistration implements
 			org.osgi.service.remoteserviceadmin.ImportRegistration {
 
-		private ImportEndpoint importEndpoint;
+		private ImportReference importReference;
+
+		private boolean closed = false;
 
 		ImportRegistration(ImportEndpoint importEndpoint) {
 			Assert.isNotNull(importEndpoint);
-			this.importEndpoint = importEndpoint;
-			this.importEndpoint.add(this);
+			importEndpoint.addImportRegistration(this);
+			this.importReference = new ImportReference(importEndpoint);
 		}
 
-		synchronized ID getContainerID() {
-			return importEndpoint == null ? null : importEndpoint
-					.getContainerID();
+		ImportRegistration(EndpointDescription errorEndpointDescription,
+				Throwable exception) {
+			this.importReference = new ImportReference(
+					errorEndpointDescription, exception);
 		}
 
-		synchronized EndpointDescription getEndpointDescription() {
-			return (importEndpoint == null) ? null : importEndpoint
-					.getEndpointDescription();
+		ID getContainerID() {
+			return importReference.getContainerID();
 		}
 
-		synchronized boolean match(IRemoteServiceID remoteServiceID) {
-			if (importEndpoint == null)
-				return false;
-			return importEndpoint.match(remoteServiceID);
+		EndpointDescription getEndpointDescription() {
+			return importReference.getEndpointDescription();
 		}
 
-		synchronized ImportEndpoint getImportEndpoint(EndpointDescription ed) {
-			if (importEndpoint == null)
-				return null;
-			if (importEndpoint.match(ed))
-				return importEndpoint;
-			return null;
+		boolean match(IRemoteServiceID remoteServiceID) {
+			return importReference.match(remoteServiceID);
 		}
 
-		public synchronized org.osgi.service.remoteserviceadmin.ImportReference getImportReference() {
+		ImportEndpoint getImportEndpoint(EndpointDescription ed) {
+			return importReference.match(ed);
+		}
+
+		public org.osgi.service.remoteserviceadmin.ImportReference getImportReference() {
 			Throwable t = getException();
 			if (t != null)
 				throw new IllegalStateException(
 						"Cannot get import reference as registration not properly initialized", //$NON-NLS-1$
 						t);
-			return importEndpoint == null ? null : importEndpoint
-					.getImportReference();
+			return importReference;
 		}
 
 		public void close() {
-			boolean closed = false;
-			org.osgi.service.remoteserviceadmin.ImportReference importReference = null;
+			boolean publish = false;
+			ID containerID = null;
+			Throwable exception = null;
 			EndpointDescription endpointDescription = null;
-			Throwable t = null;
 			synchronized (this) {
-				if (importEndpoint != null) {
-					t = getException();
-					importReference = (t == null) ? getImportReference() : null;
+				// only do this once
+				if (!closed) {
+					containerID = getContainerID();
+					exception = getException();
 					endpointDescription = getEndpointDescription();
-					closed = importEndpoint.close(this);
-					importEndpoint = null;
+					publish = importReference.close(this);
+					closed = true;
 				}
 			}
-			if (closed) {
-				removeImportRegistration(this);
+			removeImportRegistration(this);
+			Bundle rsaBundle = getRSABundle();
+			if (publish && rsaBundle != null)
 				publishEvent(
 						new RemoteServiceAdminEvent(
-								endpointDescription.getContainerID(),
+								containerID,
 								RemoteServiceAdminEvent.IMPORT_UNREGISTRATION,
-								getClientBundle(), importReference, t),
+								rsaBundle, importReference, exception),
 						endpointDescription);
-			}
+
 		}
 
-		public synchronized Throwable getException() {
-			return (importEndpoint == null) ? null : importEndpoint
-					.getException();
-		}
-
-		public synchronized String toString() {
-			return "ImportRegistration[importEndpoint=" + importEndpoint + "]"; //$NON-NLS-1$ //$NON-NLS-2$
+		public Throwable getException() {
+			return importReference.getException();
 		}
 
 	}
@@ -848,32 +879,65 @@
 	class ImportReference implements
 			org.osgi.service.remoteserviceadmin.ImportReference {
 
-		private ServiceReference importedServiceReference;
-		private EndpointDescription endpointDescription;
+		private ImportEndpoint importEndpoint;
 
-		ImportReference(ServiceReference serviceReference,
-				EndpointDescription endpointDescription) {
-			this.importedServiceReference = serviceReference;
-			this.endpointDescription = endpointDescription;
+		private Throwable exception;
+		private EndpointDescription errorEndpointDescription;
+
+		ImportReference(ImportEndpoint importEndpoint) {
+			Assert.isNotNull(importEndpoint);
+			this.importEndpoint = importEndpoint;
+		}
+
+		ImportReference(EndpointDescription endpointDescription,
+				Throwable exception) {
+			Assert.isNotNull(exception);
+			this.exception = exception;
+			Assert.isNotNull(endpointDescription);
+			this.errorEndpointDescription = endpointDescription;
+		}
+
+		synchronized Throwable getException() {
+			return exception;
+		}
+
+		synchronized boolean match(IRemoteServiceID remoteServiceID) {
+			return (importEndpoint == null) ? null : importEndpoint
+					.match(remoteServiceID);
+		}
+
+		synchronized ImportEndpoint match(EndpointDescription ed) {
+			if (importEndpoint != null && importEndpoint.match(ed))
+				return importEndpoint;
+			return null;
+		}
+
+		synchronized EndpointDescription getEndpointDescription() {
+			return (importEndpoint == null) ? errorEndpointDescription
+					: importEndpoint.getEndpointDescription();
+		}
+
+		synchronized ID getContainerID() {
+			return (importEndpoint == null) ? null : importEndpoint
+					.getContainerID();
 		}
 
 		public synchronized ServiceReference getImportedService() {
-			return importedServiceReference;
+			return (importEndpoint == null) ? null : importEndpoint
+					.getProxyRegistration().getReference();
 		}
 
 		public synchronized org.osgi.service.remoteserviceadmin.EndpointDescription getImportedEndpoint() {
-			return endpointDescription;
+			return (importEndpoint == null) ? null : importEndpoint
+					.getEndpointDescription();
 		}
 
-		synchronized void close() {
-			this.importedServiceReference = null;
-			this.endpointDescription = null;
-		}
-
-		public synchronized String toString() {
-			return "ImportReference[importedServiceReference=" //$NON-NLS-1$
-					+ importedServiceReference + ", endpointDescription=" //$NON-NLS-1$
-					+ endpointDescription + "]"; //$NON-NLS-1$
+		synchronized boolean close(ImportRegistration importRegistration) {
+			if (importEndpoint == null)
+				return false;
+			boolean result = importEndpoint.close(importRegistration);
+			importEndpoint = null;
+			return result;
 		}
 
 	}
@@ -898,53 +962,69 @@
 			EndpointDescription endpointDescription) {
 		EventAdmin eventAdmin = getEventAdmin();
 		if (eventAdmin == null) {
-			logWarning("postEvent", "No event admin available to post event=" //$NON-NLS-1$ //$NON-NLS-2$
-					+ event);
+			//logWarning("RemoteServiceAdmin.postEvent", "No event admin service available to post event=" //$NON-NLS-1$ //$NON-NLS-2$
+			//		+ event);
 			return;
 		}
 		int eventType = event.getType();
 		String eventTypeName = null;
+		String registrationTypeName = null;
 		switch (eventType) {
 		case (RemoteServiceAdminEvent.EXPORT_REGISTRATION):
 			eventTypeName = "EXPORT_REGISTRATION"; //$NON-NLS-1$
+			registrationTypeName = "export.registration";//$NON-NLS-1$
 			break;
 		case (RemoteServiceAdminEvent.EXPORT_ERROR):
 			eventTypeName = "EXPORT_ERROR"; //$NON-NLS-1$
+			registrationTypeName = "export.registration";//$NON-NLS-1$
 			break;
 		case (RemoteServiceAdminEvent.EXPORT_UNREGISTRATION):
 			eventTypeName = "EXPORT_UNREGISTRATION"; //$NON-NLS-1$
+			registrationTypeName = "export.registration";//$NON-NLS-1$
 			break;
 		case (RemoteServiceAdminEvent.EXPORT_WARNING):
 			eventTypeName = "EXPORT_WARNING"; //$NON-NLS-1$
+			registrationTypeName = "export.registration";//$NON-NLS-1$
 			break;
 		case (RemoteServiceAdminEvent.IMPORT_REGISTRATION):
 			eventTypeName = "IMPORT_REGISTRATION"; //$NON-NLS-1$
+			registrationTypeName = "import.registration";//$NON-NLS-1$
 			break;
 		case (RemoteServiceAdminEvent.IMPORT_ERROR):
 			eventTypeName = "IMPORT_ERROR"; //$NON-NLS-1$
+			registrationTypeName = "import.registration";//$NON-NLS-1$
 			break;
 		case (RemoteServiceAdminEvent.IMPORT_UNREGISTRATION):
 			eventTypeName = "IMPORT_UNREGISTRATION"; //$NON-NLS-1$
+			registrationTypeName = "import.registration";//$NON-NLS-1$
 			break;
 		case (RemoteServiceAdminEvent.IMPORT_WARNING):
 			eventTypeName = "IMPORT_WARNING"; //$NON-NLS-1$
+			registrationTypeName = "import.registration";//$NON-NLS-1$
 			break;
 		}
-		if (eventTypeName == null)
+		if (eventTypeName == null) {
 			logError("postEvent", "Event type=" + eventType //$NON-NLS-1$ //$NON-NLS-2$
 					+ " not understood for event=" + event + ".  Not posting"); //$NON-NLS-1$ //$NON-NLS-2$
+			return;
+		}
 		String topic = "org/osgi/service/remoteserviceadmin/" + eventTypeName; //$NON-NLS-1$
-		Bundle rsaBundle = getClientBundle();
+		Bundle rsaBundle = getRSABundle();
+		if (rsaBundle == null) {
+			logError(
+					"postEvent", "RSA Bundle is null.  Not posting remote service admin event=" + event); //$NON-NLS-1$ //$NON-NLS-2$
+			return;
+		}
 		Dictionary eventProperties = new Properties();
-		eventProperties.put("clientBundle", rsaBundle); //$NON-NLS-1$
-		eventProperties.put("clientBundle.id", //$NON-NLS-1$
+		eventProperties.put("bundle", rsaBundle); //$NON-NLS-1$
+		eventProperties.put("bundle.id", //$NON-NLS-1$
 				new Long(rsaBundle.getBundleId()));
-		eventProperties.put("clientBundle.symbolicname", //$NON-NLS-1$
+		eventProperties.put("bundle.symbolicname", //$NON-NLS-1$
 				rsaBundle.getSymbolicName());
-		eventProperties.put("clientBundle.version", rsaBundle.getVersion()); //$NON-NLS-1$
+		eventProperties.put("bundle.version", rsaBundle.getVersion()); //$NON-NLS-1$
 		String[] signers = getSignersForBundle(clientBundle);
 		if (signers != null && signers.length > 0)
-			eventProperties.put("clientBundle.signer", signers); //$NON-NLS-1$
+			eventProperties.put("bundle.signer", signers); //$NON-NLS-1$
 		Throwable t = event.getException();
 		if (t != null)
 			eventProperties.put("cause", t); //$NON-NLS-1$
@@ -976,6 +1056,9 @@
 									.size()]));
 		eventProperties.put("timestamp", new Long(new Date().getTime())); //$NON-NLS-1$
 		eventProperties.put("event", event); //$NON-NLS-1$
+		if (registrationTypeName != null) {
+			eventProperties.put(registrationTypeName, endpointDescription);
+		}
 		postRemoteServiceAdminEvent(topic, eventProperties);
 
 	}
@@ -995,8 +1078,8 @@
 		RemoteServiceAdminEvent rsaEvent = new RemoteServiceAdminEvent(
 				exportRegistration.getContainerID(),
 				(exception == null) ? RemoteServiceAdminEvent.EXPORT_REGISTRATION
-						: RemoteServiceAdminEvent.EXPORT_ERROR,
-				getClientBundle(), exportReference, exception);
+						: RemoteServiceAdminEvent.EXPORT_ERROR, getRSABundle(),
+				exportReference, exception);
 		publishEvent(rsaEvent, exportRegistration.getEndpointDescription());
 	}
 
@@ -1007,8 +1090,8 @@
 		RemoteServiceAdminEvent rsaEvent = new RemoteServiceAdminEvent(
 				importRegistration.getContainerID(),
 				(exception == null) ? RemoteServiceAdminEvent.IMPORT_REGISTRATION
-						: RemoteServiceAdminEvent.IMPORT_ERROR,
-				getClientBundle(), importReference, exception);
+						: RemoteServiceAdminEvent.IMPORT_ERROR, getRSABundle(),
+				importReference, exception);
 		publishEvent(rsaEvent, importRegistration.getEndpointDescription());
 	}
 
@@ -1027,7 +1110,7 @@
 				remoteServiceAdminListenerTracker = new ServiceTracker(
 						getClientBundleContext(),
 						RemoteServiceAdminListener.class.getName(), null);
-				remoteServiceAdminListenerTracker.open(true);
+				remoteServiceAdminListenerTracker.open();
 			}
 		}
 		ServiceReference[] unfilteredRefs = remoteServiceAdminListenerTracker
@@ -1064,7 +1147,7 @@
 		synchronized (eventAdminTrackerLock) {
 			eventAdminTracker = new ServiceTracker(getClientBundleContext(),
 					EventAdmin.class.getName(), null);
-			eventAdminTracker.open(true);
+			eventAdminTracker.open();
 		}
 		return (EventAdmin) eventAdminTracker.getService();
 	}
@@ -1251,7 +1334,8 @@
 			endpointDescriptionProperties
 					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,
 							remoteConfigsSupported);
-		// SERVICE_IMPORTED_CONFIGS...set to same value as remote configs
+		// SERVICE_IMPORTED_CONFIGS...set to constant value for all ECF
+		// providers
 		// supported (which is computed
 		// for the exporting ECF container
 		endpointDescriptionProperties
@@ -1259,7 +1343,7 @@
 						remoteConfigsSupported);
 
 		// SERVICE_INTENTS
-		String[] intents = (String[]) PropertiesUtil
+		Object intents = PropertiesUtil
 				.getPropertyValue(
 						null,
 						overridingProperties,
@@ -1313,8 +1397,9 @@
 			endpointDescriptionProperties.put(
 					RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER, rsFilter);
 
-		return endpointDescriptionProperties;
-
+		// Finally, copy all non-reserved properties
+		return PropertiesUtil.copyNonReservedProperties(overridingProperties,
+				endpointDescriptionProperties);
 	}
 
 	private Map<String, Object> copyNonReservedProperties(
@@ -1392,21 +1477,16 @@
 		}
 	}
 
-	private org.osgi.service.remoteserviceadmin.ImportRegistration handleNonOSGiService(
-			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription) {
-		// With non-OSGi service id (service id=0), we log a warning and return
-		// null;
-		logWarning("handleNonOSGiService", //$NON-NLS-1$
-				"OSGi remote service id is 0 for endpointDescription=" //$NON-NLS-1$
-						+ endpointDescription);
-		return null;
-	}
-
 	private ImportEndpoint createAndRegisterProxy(
 			EndpointDescription endpointDescription,
 			IRemoteServiceContainer rsContainer,
 			IRemoteServiceReference selectedRsReference) throws Exception {
 
+		BundleContext proxyServiceFactoryContext = getProxyServiceFactoryContext(endpointDescription);
+		if (proxyServiceFactoryContext == null)
+			throw new NullPointerException(
+					"getProxyServiceFactoryContext returned null.  Cannot register proxy service factory"); //$NON-NLS-1$
+
 		IRemoteServiceContainerAdapter containerAdapter = rsContainer
 				.getContainerAdapter();
 		ID rsContainerID = rsContainer.getContainer().getID();
@@ -1422,12 +1502,14 @@
 		Map proxyProperties = createProxyProperties(endpointDescription,
 				rsContainer, selectedRsReference, rs);
 
-		List<String> interfaces = endpointDescription.getInterfaces();
+		// sync sref props with endpoint props
+		endpointDescription.setPropertiesOverrides(proxyProperties);
 
-		ServiceRegistration proxyRegistration = getClientBundleContext()
-				.registerService(
-						(String[]) interfaces.toArray(new String[interfaces
-								.size()]),
+		List<String> serviceTypes = endpointDescription.getInterfaces();
+
+		ServiceRegistration proxyRegistration = proxyServiceFactoryContext
+				.registerService((String[]) serviceTypes
+						.toArray(new String[serviceTypes.size()]),
 						createProxyServiceFactory(endpointDescription, rs),
 						(Dictionary) PropertiesUtil
 								.createDictionaryFromMap(proxyProperties));
@@ -1437,6 +1519,49 @@
 				endpointDescription);
 	}
 
+	private BundleContext getProxyServiceFactoryContext(
+			EndpointDescription endpointDescription) throws Exception {
+		Activator a = Activator.getDefault();
+		if (a == null)
+			throw new NullPointerException(
+					"ECF RemoteServiceAdmin Activator cannot be null."); //$NON-NLS-1$
+		if (a.isOldEquinox()) {
+			PackageAdmin packageAdmin = getPackageAdmin();
+			if (packageAdmin == null)
+				throw new NullPointerException(
+						"PackageAdmin cannot be accessed by ECF RemoteServiceAdmin"); //$NON-NLS-1$
+			// In this case, we get the Bundle that exposes the first service
+			// interface class
+			BundleContext rsaContext = Activator.getContext();
+			if (rsaContext == null)
+				throw new NullPointerException(
+						"RSA BundleContext cannot be null"); //$NON-NLS-1$
+			List<String> interfaces = endpointDescription.getInterfaces();
+			Collection<Class> serviceInterfaceClasses = loadServiceInterfacesViaBundle(
+					rsaContext.getBundle(),
+					interfaces.toArray(new String[interfaces.size()]));
+			if (serviceInterfaceClasses.size() == 0)
+				throw new NullPointerException(
+						"No interface classes loadable for endpointDescription=" //$NON-NLS-1$
+								+ endpointDescription);
+			// Get the bundle responsible for the first service interface class
+			Class serviceInterfaceClass = serviceInterfaceClasses.iterator()
+					.next();
+			Bundle bundle = packageAdmin.getBundle(serviceInterfaceClass);
+			if (bundle == null)
+				throw new BundleException("Bundle for service interface class=" //$NON-NLS-1$
+						+ serviceInterfaceClass.getName() + " cannot be found"); //$NON-NLS-1$
+			int bundleState = bundle.getState();
+			BundleContext bundleContext = bundle.getBundleContext();
+			if (bundleContext == null)
+				throw new BundleException("Bundle=" + bundle.getSymbolicName() //$NON-NLS-1$
+						+ " in wrong state (" + bundleState //$NON-NLS-1$
+						+ ") for using BundleContext proxy service factory"); //$NON-NLS-1$
+			return bundleContext;
+		}
+		return a.getProxyServiceFactoryBundleContext();
+	}
+
 	private ServiceFactory createProxyServiceFactory(
 			EndpointDescription endpointDescription,
 			IRemoteService remoteService) {
@@ -1486,8 +1611,6 @@
 		public void ungetService(Bundle bundle,
 				ServiceRegistration registration, Object service) {
 			ungetProxyClassLoader(bundle);
-			this.remoteService = null;
-			this.interfaceVersions = null;
 		}
 	}
 
@@ -1513,8 +1636,9 @@
 							+ " via clientBundle=" + bundleSymbolicName); //$NON-NLS-1$
 
 		// Now verify that the classes are of valid versions
-		verifyServiceInterfaceVersionsForProxy(requestingBundle,
-				serviceInterfaceClasses, interfaceVersions);
+		if (!verifyServiceInterfaceVersionsForProxy(requestingBundle,
+				serviceInterfaceClasses, interfaceVersions))
+			return null;
 
 		// Now create/get class loader for proxy. This will typically
 		// be an instance of ProxyClassLoader
@@ -1634,10 +1758,10 @@
 		return className.substring(0, lastDotIndex);
 	}
 
-	private void comparePackageVersions(String packageName,
+	private boolean comparePackageVersions(String packageName,
 			Version remoteVersion, Version localVersion)
 			throws RuntimeException {
-		
+
 		if (remoteVersion == null)
 			throw new NullPointerException("Remote package=" + packageName //$NON-NLS-1$
 					+ " has no Version"); //$NON-NLS-1$
@@ -1654,17 +1778,13 @@
 		// be exactly the same, or we thrown a runtime exception
 		int compareResult = localVersion.compareTo(remoteVersion);
 		// Now check compare result, and throw exception to fail compare
-		if (compareResult != 0)
-			throw new RuntimeException(
-					"Package version compare failed with compareResult=" //$NON-NLS-1$
-							+ compareResult + " for package=" + packageName //$NON-NLS-1$
-							+ " localVersion=" + localVersion //$NON-NLS-1$
-							+ " remoteVersion=" + remoteVersion); //$NON-NLS-1$
+		return (compareResult != 0);
 	}
-	
-	private void verifyServiceInterfaceVersionsForProxy(Bundle bundle,
+
+	private boolean verifyServiceInterfaceVersionsForProxy(Bundle bundle,
 			Collection<Class> classes, Map<String, Version> interfaceVersions) {
 		// For all service interface classes
+		boolean result = true;
 		for (Class clazz : classes) {
 			String className = clazz.getName();
 			String packageName = getPackageName(className);
@@ -1674,9 +1794,18 @@
 				throw new NullPointerException(
 						"No exported package found for class=" + className); //$NON-NLS-1$
 			// Now do compare via package version comparator service
-			comparePackageVersions(packageName,
-					interfaceVersions.get(className), exportedPackage.getVersion());
+			Version remoteVersion = interfaceVersions.get(className);
+			Version localVersion = exportedPackage.getVersion();
+			if (comparePackageVersions(packageName, remoteVersion, localVersion)) {
+				logError("verifyServiceInterfaceVersionsForProxy", //$NON-NLS-1$
+						"Failed version check for proxy creation.  clientBundle=" //$NON-NLS-1$
+								+ clientBundle + " interfaceType=" + className //$NON-NLS-1$
+								+ " remoteVersion=" + remoteVersion //$NON-NLS-1$
+								+ " localVersion=" + localVersion); //$NON-NLS-1$
+				result = false;
+			}
 		}
+		return result;
 	}
 
 	private IRemoteServiceReference selectRemoteServiceReference(
@@ -1742,17 +1871,26 @@
 		resultProperties
 				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,
 						importedConfigs);
+
+		// Set endpoint.id and endpoint.service.id
+		resultProperties
+				.put(org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_ENDPOINT_ID,
+						endpointDescription
+								.getProperties()
+								.get(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID));
+		resultProperties
+				.put(org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_ENDPOINT_SERVICE_ID,
+						endpointDescription
+								.getProperties()
+								.get(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID));
+
 		return resultProperties;
 	}
 
-	private ExportEndpoint exportService(ServiceReference serviceReference,
+	private ExportRegistration exportService(ServiceReference serviceReference,
 			Map<String, Object> overridingProperties,
-			String[] exportedInterfaces, String[] serviceIntents,
-			IRemoteServiceContainer rsContainer) {
-
-		Map endpointDescriptionProperties = createExportEndpointDescriptionProperties(
-				serviceReference, overridingProperties, exportedInterfaces,
-				serviceIntents, rsContainer);
+			String[] exportedInterfaces, IRemoteServiceContainer rsContainer,
+			Map<String, Object> endpointDescriptionProperties) throws Exception {
 
 		// Create remote service properties
 		Map remoteServiceProperties = copyNonReservedProperties(
@@ -1765,46 +1903,29 @@
 		// Register remote service via ECF container adapter to create
 		// remote service registration
 		IRemoteServiceRegistration remoteRegistration = null;
-		Throwable exception = null;
-		try {
-			// Check security access for export
-			checkEndpointPermission(new EndpointDescription(serviceReference,
-					endpointDescriptionProperties), EndpointPermission.EXPORT);
-
-			if (containerAdapter instanceof IOSGiRemoteServiceContainerAdapter) {
-				IOSGiRemoteServiceContainerAdapter osgiContainerAdapter = (IOSGiRemoteServiceContainerAdapter) containerAdapter;
-				remoteRegistration = osgiContainerAdapter
-						.registerRemoteService(
-								exportedInterfaces,
-								serviceReference,
-								PropertiesUtil
-										.createDictionaryFromMap(remoteServiceProperties));
-			} else
-				remoteRegistration = containerAdapter
-						.registerRemoteService(
-								exportedInterfaces,
-								getClientBundleContext().getService(
-										serviceReference),
-								PropertiesUtil
-										.createDictionaryFromMap(remoteServiceProperties));
-			endpointDescriptionProperties
-					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,
-							remoteRegistration
-									.getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));
-		} catch (Exception e) {
-			exception = e;
-			if (remoteRegistration != null)
-				remoteRegistration.unregister();
-		}
+		if (containerAdapter instanceof IOSGiRemoteServiceContainerAdapter) {
+			IOSGiRemoteServiceContainerAdapter osgiContainerAdapter = (IOSGiRemoteServiceContainerAdapter) containerAdapter;
+			remoteRegistration = osgiContainerAdapter.registerRemoteService(
+					exportedInterfaces, serviceReference, PropertiesUtil
+							.createDictionaryFromMap(remoteServiceProperties));
+		} else
+			remoteRegistration = containerAdapter.registerRemoteService(
+					exportedInterfaces,
+					getClientBundleContext().getService(serviceReference),
+					PropertiesUtil
+							.createDictionaryFromMap(remoteServiceProperties));
+		endpointDescriptionProperties
+				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,
+						remoteRegistration
+								.getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));
 		EndpointDescription endpointDescription = new EndpointDescription(
 				serviceReference, endpointDescriptionProperties);
 		// Create ExportEndpoint/ExportRegistration
-		return (exception == null) ? new ExportEndpoint(serviceReference,
-				endpointDescription, remoteRegistration) : new ExportEndpoint(
-				serviceReference, endpointDescription, exception);
+		return new ExportRegistration(new ExportEndpoint(serviceReference,
+				endpointDescription, remoteRegistration));
 	}
 
-	private ImportEndpoint importService(
+	private ImportRegistration importService(
 			EndpointDescription endpointDescription,
 			IRemoteServiceContainer rsContainer) {
 		trace("doImportService", "endpointDescription=" + endpointDescription //$NON-NLS-1$ //$NON-NLS-2$
@@ -1862,16 +1983,16 @@
 				throw new RemoteReferenceNotFoundException(targetID, idFilter,
 						interfaces, rsFilter);
 
-			return createAndRegisterProxy(endpointDescription, rsContainer,
-					selectedRsReference);
+			return new ImportRegistration(createAndRegisterProxy(
+					endpointDescription, rsContainer, selectedRsReference));
 		} catch (Exception e) {
 			logError(
-					"importService", "selectRemoteServiceReference returned null for rsRefs=" //$NON-NLS-1$
+					"importService", "selectRemoteServiceReference returned null for rsRefs=" //$NON-NLS-1$ //$NON-NLS-2$
 							+ rsRefs + ",targetID=" + targetID //$NON-NLS-1$
 							+ ",idFilter=" + idFilter + ",interfaces=" //$NON-NLS-1$ //$NON-NLS-2$
 							+ interfaces + ",rsFilter=" + rsFilter //$NON-NLS-1$
-							+ ",rsContainerID=" + rsContainerID, e);
-			return new ImportEndpoint(containerAdapter, endpointDescription, e);
+							+ ",rsContainerID=" + rsContainerID, e); //$NON-NLS-1$
+			return new ImportRegistration(endpointDescription, e);
 		}
 	}
 
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java
index 5e3d63c..6466654 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java
@@ -4,7 +4,16 @@
 import org.osgi.framework.Bundle;
 import org.osgi.service.remoteserviceadmin.ExportReference;
 import org.osgi.service.remoteserviceadmin.ImportReference;
+import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener;
 
+/**
+ * ECF implementationm of
+ * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent}.
+ * Instances of this class are delivered to {@link RemoteServiceAdminListener}s
+ * via the ECF implemenation of {@link RemoteServiceAdmin} as per the OSGi 4.2
+ * Remote Service Admin specification (chap 122 of OSGi 4.2 specification).
+ * 
+ */
 public class RemoteServiceAdminEvent extends
 		org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent {
 
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/SelectContainerException.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/SelectContainerException.java
new file mode 100644
index 0000000..6c175ce
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/SelectContainerException.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * 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.osgi.services.remoteserviceadmin;
+
+import org.eclipse.ecf.core.ContainerTypeDescription;
+
+public class SelectContainerException extends Exception {
+
+	private static final long serialVersionUID = -5507248105370677422L;
+
+	private ContainerTypeDescription containerTypeDescription;
+
+	public SelectContainerException(String message, Throwable cause,
+			ContainerTypeDescription containerTypeDescription) {
+		super(message, cause);
+		this.containerTypeDescription = containerTypeDescription;
+	}
+
+	public ContainerTypeDescription getContainerTypeDescription() {
+		return containerTypeDescription;
+	}
+}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
index be69449..0b14c51 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
@@ -26,6 +26,10 @@
 import org.eclipse.ecf.discovery.identity.ServiceIDFactory;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;
 
+/**
+ * Default implementation of {@link IServiceInfoFactory}.
+ * 
+ */
 public class ServiceInfoFactory extends AbstractMetadataFactory implements
 		IServiceInfoFactory {
 
@@ -60,8 +64,7 @@
 		}
 	}
 
-	public IServiceInfo createServiceInfo(
-			IDiscoveryAdvertiser advertiser,
+	public IServiceInfo createServiceInfo(IDiscoveryAdvertiser advertiser,
 			EndpointDescription endpointDescription) {
 		try {
 			Namespace advertiserNamespace = advertiser.getServicesNamespace();
@@ -196,12 +199,11 @@
 				IServiceTypeID.DEFAULT_NA);
 		return ServiceIDFactory.getDefault().createServiceTypeID(
 				advertiser.getServicesNamespace(),
-				new String[] { RemoteConstants.DISCOVERY_SERVICE_TYPE }, scopes,
-				protocols, namingAuthority);
+				new String[] { RemoteConstants.DISCOVERY_SERVICE_TYPE },
+				scopes, protocols, namingAuthority);
 	}
 
-	public IServiceInfo removeServiceInfo(
-			IDiscoveryAdvertiser advertiser,
+	public IServiceInfo removeServiceInfo(IDiscoveryAdvertiser advertiser,
 			EndpointDescription endpointDescription) {
 		Namespace advertiserNamespace = advertiser.getServicesNamespace();
 		ServiceInfoKey key = new ServiceInfoKey(endpointDescription,
diff --git a/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF b/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF
index 4992021..a3ad329 100644
--- a/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF
+++ b/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.jivesoftware.smack
-Bundle-Version: 3.1.0
+Bundle-Version: 3.1.100.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs
index 70af5b8..9e50486 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs
@@ -1,330 +1,354 @@
-#Mon May 04 17:44:36 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-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.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:40:02 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=error
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=800
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html b/providers/bundles/org.eclipse.ecf.provider.dnssd/about.html
similarity index 100%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
copy to providers/bundles/org.eclipse.ecf.provider.dnssd/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties b/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
index 2427e71..08578c8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
@@ -3,6 +3,8 @@
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               plugin.properties
+               plugin.properties,\
+               about.html
 additional.bundles = org.eclipse.equinox.concurrent
-src.includes = plugin.properties
+src.includes = plugin.properties,\
+               about.html
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 95b0aee..cf5e8a3 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.0.qualifier
+Bundle-Version: 4.0.1.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient.Activator
 Require-Bundle: org.eclipse.equinox.common,
@@ -25,6 +25,5 @@
 Export-Package: org.eclipse.ecf.internal.provider.filetransfer.httpclient;x-internal:=true,
  org.eclipse.ecf.provider.filetransfer.httpclient
 Bundle-Vendor: %plugin.provider
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-ActivationPolicy: lazy
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 b34d342..a725abc 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
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007 IBM, Composent Inc. and others.
+ * Copyright (c) 2007, 2011 IBM, 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
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    Chris Aniszczyk - initial API and implementation
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session 
  *****************************************************************************/
 package org.eclipse.ecf.internal.provider.filetransfer.httpclient;
 
@@ -37,6 +38,8 @@
 
 	private ISSLSocketFactoryModifier sslSocketFactoryModifier;
 
+	private ConnectionManagerHelper cmHelper;
+
 	/**
 	 * The constructor
 	 */
@@ -64,6 +67,13 @@
 
 	}
 
+	public ConnectionManagerHelper getConnectionManagerHelper() {
+		if (cmHelper == null) {
+			cmHelper = new ConnectionManagerHelper();
+		}
+		return cmHelper;
+	}
+
 	public ISSLSocketFactoryModifier getSSLSocketFactoryModifier() {
 		return sslSocketFactoryModifier;
 	}
@@ -81,6 +91,9 @@
 		if (logServiceTracker != null) {
 			logServiceTracker.close();
 		}
+		if (cmHelper != null) {
+			cmHelper.shutdown();
+		}
 		this.context = null;
 		plugin = null;
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionManagerHelper.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionManagerHelper.java
new file mode 100644
index 0000000..4a08b8c
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionManagerHelper.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+* Copyright (c) 2011 IBM, 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:
+*   IBM Corporation - initial API and implementation
+******************************************************************************/
+
+package org.eclipse.ecf.internal.provider.filetransfer.httpclient;
+
+import java.util.Map;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
+import org.eclipse.ecf.core.util.Trace;
+import org.eclipse.ecf.filetransfer.IRetrieveFileTransferOptions;
+import org.eclipse.ecf.provider.filetransfer.httpclient.HttpClientOptions;
+
+public class ConnectionManagerHelper {
+
+	public static final int DEFAULT_CONNECTION_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_CONNECTION_TIMEOUT;
+	public static final int DEFAULT_READ_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_READ_TIMEOUT;
+
+	private MultiThreadedHttpConnectionManager connectionManager;
+
+	public ConnectionManagerHelper() {
+	}
+
+	private static int getIntegerProperty(String prop, int intDefault) {
+		int retVal = intDefault;
+		String systemProp = System.getProperty(prop);
+		if (systemProp != null) {
+			try {
+				retVal = Integer.parseInt(systemProp);
+			} catch (NumberFormatException e) {
+				Trace.trace(Activator.PLUGIN_ID, "Bad value for property '" + prop + "' : " + e + ". Using default value " + intDefault + "."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+			}
+		}
+		return retVal;
+	}
+
+	private static long getLongProperty(String prop, long longDefault) {
+		long retVal = longDefault;
+		String systemProp = System.getProperty(prop);
+		if (systemProp != null) {
+			try {
+				retVal = Long.parseLong(systemProp);
+			} catch (NumberFormatException e) {
+				Trace.trace(Activator.PLUGIN_ID, "Bad value for property '" + prop + "' : " + e + ". Using default value " + longDefault + "."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+			}
+		}
+		return retVal;
+	}
+
+	private static boolean shouldReuseConnectionsOption() {
+		boolean retVal = ConnectionOptions.REUSE_CONNECTIONS_DEFAULT;
+		String systemProp = System.getProperty(ConnectionOptions.PROP_REUSE_CONNECTIONS);
+		if (systemProp != null) {
+			retVal = Boolean.valueOf(systemProp).booleanValue();
+		}
+		return retVal;
+	}
+
+	public static int getConnectTimeout(final Map options) {
+		int result = DEFAULT_CONNECTION_TIMEOUT;
+		Map localOptions = options;
+		if (localOptions != null) {
+			// See if the connect timeout option is present, if so set
+			Object o = localOptions.get(IRetrieveFileTransferOptions.CONNECT_TIMEOUT);
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+				return result;
+			}
+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+			}
+		}
+		return result;
+	}
+
+	public static int getSocketReadTimeout(Map options) {
+		int result = DEFAULT_READ_TIMEOUT;
+		Map localOptions = options;
+		if (localOptions != null) {
+			// See if the connect timeout option is present, if so set
+			Object o = localOptions.get(IRetrieveFileTransferOptions.READ_TIMEOUT);
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+				return result;
+			}
+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout"); //$NON-NLS-1$
+			if (o != null) {
+				if (o instanceof Integer) {
+					result = ((Integer) o).intValue();
+				} else if (o instanceof String) {
+					result = new Integer(((String) o)).intValue();
+				}
+			}
+		}
+		return result;
+	}
+
+	public synchronized void initConnectionManager(HttpClient httpClient, Map options) {
+		if (!shouldReuseConnectionsOption()) {
+			Trace.trace(Activator.PLUGIN_ID, "Connections are not reused. To reuse connections set system property '" + ConnectionOptions.PROP_REUSE_CONNECTIONS + "' to true."); //$NON-NLS-1$ //$NON-NLS-2$
+			initParameters(httpClient, new MultiThreadedHttpConnectionManager(), false, options);
+			return;
+		}
+		if (connectionManager == null) {
+			connectionManager = new MultiThreadedHttpConnectionManager();
+			Trace.trace(Activator.PLUGIN_ID, "Created shared connection manager."); //$NON-NLS-1$ 
+		} else {
+			Trace.trace(Activator.PLUGIN_ID, "Reusing shared connection manager."); //$NON-NLS-1$ 
+		}
+		initParameters(httpClient, connectionManager, true, options);
+	}
+
+	private static void initParameters(HttpClient httpClient, HttpConnectionManager cm, boolean cmIsShared, Map options) {
+
+		if (cmIsShared) {
+			long closeIdlePeriod = getLongProperty(ConnectionOptions.PROP_POOL_CLOSE_IDLE_PERIOD, ConnectionOptions.POOL_CLOSE_IDLE_PERIOD_DEFAULT);
+			if (closeIdlePeriod > 0) {
+				Trace.trace(Activator.PLUGIN_ID, "Closing connections which were idle at least " + closeIdlePeriod + " milliseconds."); //$NON-NLS-1$ //$NON-NLS-2$
+				cm.closeIdleConnections(closeIdlePeriod);
+			}
+		}
+
+		// HttpClient parameters can be traced independently
+		httpClient.setHttpConnectionManager(cm);
+		int readTimeout = getSocketReadTimeout(options);
+		cm.getParams().setSoTimeout(readTimeout);
+		int connectTimeout = getConnectTimeout(options);
+		cm.getParams().setConnectionTimeout(connectTimeout);
+
+		if (cmIsShared) {
+			HttpConnectionManagerParams cmParams = cm.getParams();
+			int maxHostConnections = getIntegerProperty(ConnectionOptions.PROP_MAX_CONNECTIONS_PER_HOST, ConnectionOptions.MAX_CONNECTIONS_PER_HOST_DEFAULT);
+			int maxTotalConnections = getIntegerProperty(ConnectionOptions.PROP_MAX_TOTAL_CONNECTIONS, ConnectionOptions.MAX_TOTAL_CONNECTIONS_DEFAULT);
+
+			cmParams.setDefaultMaxConnectionsPerHost(maxHostConnections);
+			cmParams.setMaxTotalConnections(maxTotalConnections);
+			long connectionManagerTimeout = getLongProperty(ConnectionOptions.PROP_POOL_CONNECTION_TIMEOUT, ConnectionOptions.POOL_CONNECTION_TIMEOUT_DEFAULT);
+			httpClient.getParams().setConnectionManagerTimeout(connectionManagerTimeout);
+		}
+	}
+
+	public synchronized void shutdown() {
+		if (connectionManager != null) {
+			connectionManager.shutdown();
+			connectionManager = null;
+		}
+	}
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionOptions.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionOptions.java
new file mode 100644
index 0000000..500e23d
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionOptions.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+* Copyright (c) 2011 IBM, 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:
+*   IBM Corporation - initial API and implementation
+******************************************************************************/
+package org.eclipse.ecf.internal.provider.filetransfer.httpclient;
+
+/**
+ * Options to enable reusing socket connections.
+ * <p>
+ * System property {@link #PROP_REUSE_CONNECTIONS} determines whether this file transfer 
+ * provider reuses connections. 
+ * </p> <p>
+ * Without connection reuse each transfer or browse operations uses its 
+ * own connection independent connection. As a result no connections are reused.
+ * </p>
+ * <p> With connection reuse enable a single connection pool is used. Details
+ * of its behavior can be further customized with the following system properties:
+ * <ul>
+ * <li>{@link #PROP_MAX_TOTAL_CONNECTIONS}</li>
+ * <li>{@link #PROP_MAX_CONNECTIONS_PER_HOST}</li>
+ * <li>{@link #PROP_POOL_CONNECTION_TIMEOUT}</li>
+ * <li>{@link #PROP_POOL_CLOSE_IDLE_PERIOD}</li>
+ * </ul>
+ * Changing this and any of the other system properties does not affect connections
+ * already made.  
+ * </p>
+ * @since 4.0.1
+ */
+public interface ConnectionOptions {
+	/**
+	 * System property name to enable connection reuse for this provider.
+	 * <p>
+	 * The boolean value of this system property determines connection reuse. 
+	 * The default value of this property is {@value #REUSE_CONNECTIONS_DEFAULT} as 
+	 * defined by {@link #REUSE_CONNECTIONS_DEFAULT}. </p>
+	 */
+	public String PROP_REUSE_CONNECTIONS = "org.eclipse.ecf.provider.filetransfer.httpclient.reuseConnections.enabled"; //$NON-NLS-1$
+	public boolean REUSE_CONNECTIONS_DEFAULT = true;
+
+	/**
+	 * System property name to specify maximum number of total connections in connection reuse mode.
+	 * <p>
+	 * This property only applies when connection reuse is enabled by {@link #PROP_REUSE_CONNECTIONS}.
+	 * </p><p>
+	 * The default value of this property is {@value #MAX_TOTAL_CONNECTIONS_DEFAULT} as 
+	 * defined by {@link #MAX_TOTAL_CONNECTIONS_DEFAULT}. </p>
+	 * <p>
+	 * When the maximum number of connections are being used simultaneously another connection request 
+	 * waits until a connection becomes available to the connection pool. The maximum wait time can 
+	 * be adjusted using {@link #PROP_POOL_CONNECTION_TIMEOUT}. 
+	 * </p><p>
+	 * </p>     
+	 */
+	public String PROP_MAX_TOTAL_CONNECTIONS = "org.eclipse.ecf.provider.filetransfer.httpclient.maxConnectionsTotal"; //$NON-NLS-1$
+	public int MAX_TOTAL_CONNECTIONS_DEFAULT = 200; // HttpClient default is 20.
+
+	/**
+	 * System property name to specify maximum number of connections per host in connection reuse mode.
+	 * <p>
+	 * This property only applies when connection reuse is enabled by {@link #PROP_REUSE_CONNECTIONS}.
+	 * </p><p>
+	 * The default value of this property is {@value #MAX_CONNECTIONS_PER_HOST_DEFAULT} as 
+	 * defined by {@link #MAX_CONNECTIONS_PER_HOST_DEFAULT}. </p>
+	 * <p>
+	 * When the maximum number of connections are being used simultaneously another connection request 
+	 * waits until a connection becomes available to the connection pool. The maximum wait time can 
+	 * be adjusted using {@link #PROP_POOL_CONNECTION_TIMEOUT}. 
+	 * </p><p>
+	 * </p>     
+	 */
+	public String PROP_MAX_CONNECTIONS_PER_HOST = "org.eclipse.ecf.provider.filetransfer.httpclient.maxConnectionsPerHost"; //$NON-NLS-1$
+	public int MAX_CONNECTIONS_PER_HOST_DEFAULT = 4; // HttpClient default is 2. 
+
+	/**
+	 * Property for connection pool timeout.
+	 * <p>
+	 * This property only applies when connection reuse is enabled by {@link #PROP_REUSE_CONNECTIONS}.
+	 * </p><p>
+	 * This is the name for a system property to change the timeout value for a 
+	 * caller waits until a connection becomes available in the connection pool.
+	 * </p> 
+	 * <p>
+	 * The value is a long value and its unit is milliseconds.
+	 * With the value 0 no timeouts are used so that the caller waits until a connection becomes available.
+	 * </p><p>
+	 * The default value of this property is {@value #POOL_CONNECTION_TIMEOUT_DEFAULT} as 
+	 * defined by {@link #POOL_CONNECTION_TIMEOUT_DEFAULT}. </p>
+	 * </p>
+	 */
+	public String PROP_POOL_CONNECTION_TIMEOUT = "org.eclipse.ecf.provider.filetransfer.httpclient.poolConnectionTimeout"; //$NON-NLS-1$
+
+	public long POOL_CONNECTION_TIMEOUT_DEFAULT = 0;
+
+	/**
+	 * Property to set period after which idle connections are closed. 
+	 * <p>
+	 * This setting only applies when reusing connection is enabled (see {@link #PROP_REUSE_CONNECTIONS}.
+	 * <p></p> 
+	 * This is the name for a system property to change the time period after
+	 * which an idle connection can be closed by the ECF HttpClient based provider. 
+	 * Currently idle connections are only closed when another transfer is made.
+	 * </p> 
+	 * <p>
+	 * The value is a long value and its unit is milliseconds.
+	 * When the value is 0 (or negative) idle connections are never closed except on shutdown.
+	 * </p><p>
+	 * The default is {@value #POOL_CLOSE_IDLE_PERIOD_DEFAULT} as 
+	 * defined by {@link #POOL_CLOSE_IDLE_PERIOD_DEFAULT}.
+	 * </p>
+	 */
+	public String PROP_POOL_CLOSE_IDLE_PERIOD = "org.eclipse.ecf.provider.filetransfer.httpclient.poolCloseIdle"; //$NON-NLS-1$
+
+	/**
+	 * Default period before idle connections are closed.
+	 * <p>
+	 * The default period after which idle connections can be closed is 3 minutes.  
+	 * </p> 
+	 */
+	public long POOL_CLOSE_IDLE_PERIOD_DEFAULT = 3 * 60 * 1000;
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java
index d2edd7c..061a02a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007 IBM, Composent Inc. and others.
+ * Copyright (c) 2007, 2011 IBM, 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
@@ -7,13 +7,13 @@
  *
  * Contributors:
  *    Composent, Inc. - initial API and implementation
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session 
  *****************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.httpclient;
 
 import java.net.MalformedURLException;
 import java.net.URL;
 import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
@@ -50,7 +50,7 @@
 					throw new RemoteFileSystemException(NLS.bind("Exception creating URL for {0}", directoryOrFileId)); //$NON-NLS-1$
 				}
 
-				HttpClientFileSystemBrowser browser = new HttpClientFileSystemBrowser(new HttpClient(new MultiThreadedHttpConnectionManager()), directoryOrFileId, listener, url, connectContext, proxy);
+				HttpClientFileSystemBrowser browser = new HttpClientFileSystemBrowser(new HttpClient(), directoryOrFileId, listener, url, connectContext, proxy);
 				return browser.sendBrowseRequest();
 			}
 
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 8c44535..daa4288 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
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2008, 2010 Composent, Inc., IBM and others.
+ * Copyright (c) 2008, 2011 Composent, Inc., IBM 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
@@ -8,6 +8,7 @@
  * Contributors:
  *    Composent, Inc. - initial API and implementation
  *    Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session     
  *****************************************************************************/
 
 package org.eclipse.ecf.provider.filetransfer.httpclient;
@@ -17,6 +18,7 @@
 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;
 import org.apache.commons.httpclient.HostConfiguration;
@@ -152,7 +154,6 @@
 				}
 			}
 		}
-
 	}
 
 	protected boolean hasForceNTLMProxyOption() {
@@ -179,6 +180,11 @@
 			setupProxy(proxy);
 	}
 
+	private void initHttpClientConnectionManager() {
+		Map options = null; //Currently there is no API to pass in options to browse request
+		Activator.getDefault().getConnectionManagerHelper().initConnectionManager(httpClient, options);
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser#runRequest()
 	 */
@@ -186,9 +192,7 @@
 		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "runRequest"); //$NON-NLS-1$
 		setupProxies();
 		// set timeout
-		httpClient.getHttpConnectionManager().getParams().setSoTimeout(DEFAULT_CONNECTION_TIMEOUT);
-		httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
-		httpClient.getParams().setConnectionManagerTimeout(DEFAULT_CONNECTION_TIMEOUT);
+		initHttpClientConnectionManager();
 
 		String urlString = directoryOrFile.toString();
 		CredentialsProvider credProvider = new HttpClientProxyCredentialProvider() {
@@ -216,6 +220,7 @@
 		headMethod.getParams().setParameter(CredentialsProvider.PROVIDER, credProvider);
 		// 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$
+		headMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$
 
 		long lastModified = 0;
 		long fileLength = -1;
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 5bb12eb..7c951d1 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
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2010 Composent, Inc., IBM All rights reserved. This
+ * Copyright (c) 2004, 2011 Composent, Inc., IBM 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
@@ -9,6 +9,7 @@
  *  Maarten Meijer - bug 237936, added gzip encoded transfer default
  *  Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy
  *  Henrich Kraemer - bug 263613, [transport] Update site contacting / downloading is not cancelable
+ *  Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session  
  ******************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.httpclient;
 
@@ -69,6 +70,7 @@
 import org.eclipse.ecf.filetransfer.identity.IFileID;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.Activator;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ConnectingSocketMonitor;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ConnectionManagerHelper;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.DebugOptions;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ECFHttpClientProtocolSocketFactory;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ECFHttpClientSecureProtocolSocketFactory;
@@ -270,11 +272,11 @@
 	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
 	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout
 	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
-	protected static final int DEFAULT_CONNECTION_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_CONNECTION_TIMEOUT;
+	protected static final int DEFAULT_CONNECTION_TIMEOUT = ConnectionManagerHelper.DEFAULT_CONNECTION_TIMEOUT;
 	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
 	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout
 	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
-	protected static final int DEFAULT_READ_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_READ_TIMEOUT;
+	protected static final int DEFAULT_READ_TIMEOUT = ConnectionManagerHelper.DEFAULT_READ_TIMEOUT;
 
 	protected static final int HTTP_PORT = 80;
 
@@ -315,9 +317,8 @@
 	private ConnectingSocketMonitor connectingSockets;
 	private FileTransferJob connectJob;
 
-	public HttpClientRetrieveFileTransfer(HttpClient httpClient) {
-		this.httpClient = httpClient;
-		Assert.isNotNull(this.httpClient);
+	public HttpClientRetrieveFileTransfer(HttpClient client) {
+		this.httpClient = client;
 		proxyHelper = new JREProxyHelper();
 		connectingSockets = new ConnectingSocketMonitor(1);
 		socketEventSource = new SocketEventSource() {
@@ -604,58 +605,18 @@
 	}
 
 	protected int getSocketReadTimeout() {
-		int result = DEFAULT_READ_TIMEOUT;
-		Map localOptions = getOptions();
-		if (localOptions != null) {
-			// See if the connect timeout option is present, if so set
-			Object o = localOptions.get(IRetrieveFileTransferOptions.READ_TIMEOUT);
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-				return result;
-			}
-			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout"); //$NON-NLS-1$
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-			}
-		}
-		return result;
+		return ConnectionManagerHelper.getSocketReadTimeout(getOptions());
 	}
 
 	/**
 	 * @since 4.0
 	 */
 	protected int getConnectTimeout() {
-		int result = DEFAULT_CONNECTION_TIMEOUT;
-		Map localOptions = getOptions();
-		if (localOptions != null) {
-			// See if the connect timeout option is present, if so set
-			Object o = localOptions.get(IRetrieveFileTransferOptions.CONNECT_TIMEOUT);
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-				return result;
-			}
-			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout"); //$NON-NLS-1$
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-			}
-		}
-		return result;
+		return ConnectionManagerHelper.getConnectTimeout(getOptions());
+	}
+
+	private void initHttpClientConnectionManager() {
+		Activator.getDefault().getConnectionManagerHelper().initConnectionManager(httpClient, getOptions());
 	}
 
 	/* (non-Javadoc)
@@ -670,17 +631,14 @@
 		int code = -1;
 
 		try {
-			httpClient.getHttpConnectionManager().getParams().setSoTimeout(getSocketReadTimeout());
-			int connectTimeout = getConnectTimeout();
-			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectTimeout);
-			httpClient.getParams().setConnectionManagerTimeout(connectTimeout);
-
+			initHttpClientConnectionManager();
 			setupAuthentication(urlString);
 
 			CredentialsProvider credProvider = new ECFCredentialsProvider();
 			setupHostAndPort(credProvider, urlString);
 
 			getMethod = new GzipGetMethod(hostConfigHelper.getTargetRelativePath());
+			getMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$
 			getMethod.setFollowRedirects(true);
 			// 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.
@@ -917,10 +875,7 @@
 		int code = -1;
 
 		try {
-			httpClient.getHttpConnectionManager().getParams().setSoTimeout(getSocketReadTimeout());
-			int connectTimeout = getConnectTimeout();
-			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectTimeout);
-			httpClient.getParams().setConnectionManagerTimeout(connectTimeout);
+			initHttpClientConnectionManager();
 
 			CredentialsProvider credProvider = new ECFCredentialsProvider();
 			setupAuthentication(urlString);
@@ -928,6 +883,7 @@
 			setupHostAndPort(credProvider, urlString);
 
 			getMethod = new GzipGetMethod(hostConfigHelper.getTargetRelativePath());
+			getMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$
 			getMethod.setFollowRedirects(true);
 			// 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.
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java
index bce6b3c..ccb2689 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007 IBM, Composent Inc. and others.
+ * Copyright (c) 2007, 2011 IBM, 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
@@ -7,20 +7,18 @@
  *
  * Contributors:
  *    Composent, Inc. - initial API and implementation
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session 
  *****************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.httpclient;
 
 import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransfer;
 import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransferFactory;
 
-public class HttpClientRetrieveFileTransferFactory implements
-		IRetrieveFileTransferFactory {
+public class HttpClientRetrieveFileTransferFactory implements IRetrieveFileTransferFactory {
 
 	public IRetrieveFileTransfer newInstance() {
-		return new HttpClientRetrieveFileTransfer(new HttpClient(
-				new MultiThreadedHttpConnectionManager()));
+		return new HttpClientRetrieveFileTransfer(new HttpClient());
 	}
 
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
index 279c140..6a01971 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
@@ -1,353 +1,357 @@
-#Thu Mar 18 13:43:03 PDT 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-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.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:40:32 PDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+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.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=error
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=800
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
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 cbf6a1c..12c42d5 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
@@ -26,8 +26,8 @@
  org.eclipse.ecf.provider.filetransfer;x-friends:="org.eclipse.equinox.p2.repository",
  org.eclipse.ecf.provider.filetransfer.browse,
  org.eclipse.ecf.provider.filetransfer.events.socket;version="1.0";x-friends:="org.eclipse.ecf.provider.filetransfer.httpclient",
- org.eclipse.ecf.provider.filetransfer.identity;x-internal:=false,
+ org.eclipse.ecf.provider.filetransfer.identity,
  org.eclipse.ecf.provider.filetransfer.outgoing,
- org.eclipse.ecf.provider.filetransfer.retrieve;x-internal:=false,
+ org.eclipse.ecf.provider.filetransfer.retrieve,
  org.eclipse.ecf.provider.filetransfer.util
 Bundle-ActivationPolicy: lazy
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java b/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
index 58da382..3dc15fe 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
@@ -36,7 +36,8 @@
 
 	private Combo connectTimeOut;
 
-	private String[] connectTimeOutValues = { "10", "15", "20", "25", "30" };
+	private String[] connectTimeOutValues = { "10", "20", "30", "40", "50",
+			"60" };
 
 	IRCConnectWizardPage() {
 		super("IRCConnectWizardPage"); //$NON-NLS-1$
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 db12ffc..dd843ab 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.0.qualifier
+Bundle-Version: 1.3.100.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/IRCChannelContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
index 4716a3e..f98c3c5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
@@ -33,7 +33,7 @@
 		IChatMessageSender, IChatRoomContainer {
 
 	private static final long CONNECT_TIMEOUT = new Long(System.getProperty(
-			"org.eclipse.ecf.provider.irc.connectTimeout", "30000"))
+			"org.eclipse.ecf.provider.irc.connectTimeout", "60000"))
 			.longValue();
 
 	protected List participantListeners = new ArrayList();
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 3c9729b..2201c9a 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
@@ -11,8 +11,6 @@
  ******************************************************************************/
 package org.eclipse.ecf.internal.provider.irc.container;
 
-import java.util.StringTokenizer;
-
 import java.net.InetSocketAddress;
 import java.util.*;
 import org.eclipse.ecf.core.*;
@@ -29,8 +27,8 @@
 import org.eclipse.ecf.presence.chatroom.*;
 import org.eclipse.ecf.presence.history.IHistory;
 import org.eclipse.ecf.presence.history.IHistoryManager;
-import org.eclipse.ecf.presence.im.IChatMessageSender;
 import org.eclipse.ecf.presence.im.IChatMessage.Type;
+import org.eclipse.ecf.presence.im.IChatMessageSender;
 import org.eclipse.equinox.concurrent.future.TimeoutException;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
@@ -49,7 +47,9 @@
 		IChatRoomManager, IChatRoomContainer, IRCMessageChannel,
 		IChatRoomContainerOptionsAdapter {
 
-	private static final long CONNECT_TIMEOUT = 20000;
+	private static final long CONNECT_TIMEOUT = new Long(System.getProperty(
+			"org.eclipse.ecf.provider.irc.connectTimeout", "60000"))
+			.longValue();
 
 	protected IRCConnection connection = null;
 
@@ -73,7 +73,8 @@
 	private IIRCDatashareContainer datashareContainer;
 
 	/**
-	 * Used for determining whether the USERHOST reply should be hijacked or not.
+	 * Used for determining whether the USERHOST reply should be hijacked or
+	 * not.
 	 */
 	private boolean retrieveUserhost;
 
@@ -89,7 +90,8 @@
 	/**
 	 * Creates and returns a datashare container implementation.
 	 * 
-	 * @return a datashare container implementation for this container, or <code>null</code> if it could not be created
+	 * @return a datashare container implementation for this container, or
+	 *         <code>null</code> if it could not be created
 	 */
 	private IIRCDatashareContainer createDatashareContainer() {
 		if (hasDatashare() && hasNIO()) {
@@ -99,18 +101,25 @@
 	}
 
 	/**
-	 * Checks and returns whether the datashare NIO APIs are available in the current OSGi environment.
-	 * @return <code>true</code> if the datashare NIO APIs are available, <code>false</code> otherwise
+	 * Checks and returns whether the datashare NIO APIs are available in the
+	 * current OSGi environment.
+	 * 
+	 * @return <code>true</code> if the datashare NIO APIs are available,
+	 *         <code>false</code> otherwise
 	 */
 	private boolean hasDatashare() {
 		PackageAdmin admin = Activator.getDefault().getPackageAdmin();
-		Bundle[] bundles = admin.getBundles("org.eclipse.ecf.provider.datashare.nio", null); //$NON-NLS-1$
+		Bundle[] bundles = admin.getBundles(
+				"org.eclipse.ecf.provider.datashare.nio", null); //$NON-NLS-1$
 		return bundles != null && bundles.length != 0;
 	}
 
 	/**
-	 * Checks and returns there is Java 1.4 NIO support in the current Java runtime environment.
-	 * @return <code>true</code> if the Java 1.4 NIO APIs are available, <code>false</code> otherwise
+	 * Checks and returns there is Java 1.4 NIO support in the current Java
+	 * runtime environment.
+	 * 
+	 * @return <code>true</code> if the Java 1.4 NIO APIs are available,
+	 *         <code>false</code> otherwise
 	 */
 	private boolean hasNIO() {
 		try {
@@ -183,8 +192,8 @@
 				}
 				if (connectWaiting)
 					throw new TimeoutException(NLS.bind(
-							Messages.IRCRootContainer_Connect_Timeout, tID
-									.getName()), CONNECT_TIMEOUT);
+							Messages.IRCRootContainer_Connect_Timeout,
+							tID.getName()), CONNECT_TIMEOUT);
 				if (connectException != null)
 					throw connectException;
 				this.targetID = tID;
@@ -196,7 +205,7 @@
 					// message to the server so that we can attempt to retrieve
 					// our current IP
 					retrieveUserhost = true;
-					connection.doUserhost(nick);	
+					connection.doUserhost(nick);
 				}
 			} catch (Exception e) {
 				this.targetID = null;
@@ -249,30 +258,30 @@
 				}
 				if (targetID != null) {
 					showMessage(null, NLS.bind(
-							Messages.IRCRootContainer_Disconnected, targetID
-									.getName()));
+							Messages.IRCRootContainer_Disconnected,
+							targetID.getName()));
 					handleDisconnected();
 				}
 			}
 
 			public void onError(String arg0) {
 				trace("handleOnError(" + arg0 + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Error,
-						arg0));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Error, arg0));
 				handleErrorIfConnecting(arg0);
 			}
 
 			public void onError(int arg0, String arg1) {
 				String msg = arg0 + "," + arg1; //$NON-NLS-1$
 				trace("handleOnError(" + msg + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				showMessage(null, NLS
-						.bind(Messages.IRCRootContainer_Error, msg));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Error, msg));
 				handleErrorIfConnecting(arg0 + msg);
 			}
 
 			public void onInvite(String arg0, IRCUser arg1, String arg2) {
-				handleInvite(createIDFromString(arg0), createIDFromString(arg1
-						.getNick()));
+				handleInvite(createIDFromString(arg0),
+						createIDFromString(arg1.getNick()));
 			}
 
 			public void onJoin(String arg0, IRCUser arg1) {
@@ -299,14 +308,12 @@
 					// check if we are the ones that have been kicked
 					if (kicked.equals(((IRCID) targetID).getUsername())) {
 						// fire disconnection events for this channel container
-						channel
-								.fireContainerEvent(new ContainerDisconnectingEvent(
-										channel.getID(), channel.targetID));
+						channel.fireContainerEvent(new ContainerDisconnectingEvent(
+								channel.getID(), channel.targetID));
 						channel.firePresenceListeners(false,
 								new String[] { kicked });
-						channel
-								.fireContainerEvent(new ContainerDisconnectedEvent(
-										channel.getID(), channel.targetID));
+						channel.fireContainerEvent(new ContainerDisconnectedEvent(
+								channel.getID(), channel.targetID));
 					} else {
 						channel.firePresenceListeners(false,
 								new String[] { kicked });
@@ -362,9 +369,11 @@
 						// remote peer and initiate a socket connection
 						String identifier = arg2
 								.substring(5, arg2.length() - 1);
-						StringTokenizer tokenizer = new StringTokenizer(identifier, ":"); //$NON-NLS-1$
-						datashareContainer.enqueue(new InetSocketAddress(tokenizer.nextToken(),
-								Integer.parseInt(tokenizer.nextToken())));
+						StringTokenizer tokenizer = new StringTokenizer(
+								identifier, ":"); //$NON-NLS-1$
+						datashareContainer.enqueue(new InetSocketAddress(
+								tokenizer.nextToken(), Integer
+										.parseInt(tokenizer.nextToken())));
 					}
 				} else {
 					showMessage(arg0, arg1.toString(), arg2);
@@ -430,7 +439,8 @@
 			return null;
 		} else if (serviceType.isInstance(this)) {
 			return this;
-		} else if (datashareContainer != null && serviceType.isInstance(datashareContainer)) {
+		} else if (datashareContainer != null
+				&& serviceType.isInstance(datashareContainer)) {
 			return datashareContainer;
 		}
 		return null;
@@ -640,19 +650,17 @@
 						commandMessage = commandMessage.substring(5);
 						int index = commandMessage.indexOf(COMMAND_DELIM);
 						if (index != -1) {
-							connection
-									.doPrivmsg(commandMessage.substring(0,
-											index), commandMessage
-											.substring(index + 1));
+							connection.doPrivmsg(
+									commandMessage.substring(0, index),
+									commandMessage.substring(index + 1));
 						}
 					} else if (lowerCase.startsWith("/privmsg ")) { //$NON-NLS-1$
 						commandMessage = commandMessage.substring(9);
 						int index = commandMessage.indexOf(COMMAND_DELIM);
 						if (index != -1) {
-							connection
-									.doPrivmsg(commandMessage.substring(0,
-											index), commandMessage
-											.substring(index + 1));
+							connection.doPrivmsg(
+									commandMessage.substring(0, index),
+									commandMessage.substring(index + 1));
 						}
 					} else if (lowerCase.startsWith("/op ")) { //$NON-NLS-1$
 						nextToken(command); // skip command
@@ -881,8 +889,8 @@
 	protected void handle353Reply(String channel, String[] strings) {
 		IRCChannelContainer container = getChannel(channel);
 		if (container == null) {
-			showMessage(null, NLS.bind(Messages.IRCRootContainer_353_Error,
-					channel));
+			showMessage(null,
+					NLS.bind(Messages.IRCRootContainer_353_Error, channel));
 		} else
 			container.firePresenceListeners(true, strings);
 	}
@@ -895,8 +903,8 @@
 				handle353Reply(users[2], parseUserNames(arg2));
 				break;
 			case 311:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Whois,
-						users[1]));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Whois, users[1]));
 				showMessage(null, trimUsername(users[2]) + "@" + users[3]); //$NON-NLS-1$
 				break;
 			case 312:
@@ -904,15 +912,15 @@
 						new Object[] { users[2], arg2 }));
 				break;
 			case 317:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Idle,
-						users[2]));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Idle, users[2]));
 				break;
 			case 318:
 				showMessage(null, Messages.IRCRootContainer_Whois_End);
 				break;
 			case 319:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Channels,
-						arg2));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Channels, arg2));
 				break;
 			case 320:
 				break;
@@ -927,7 +935,7 @@
 			case 302:
 				if (retrieveUserhost) {
 					if (datashareContainer != null) {
-						// set the retrieved ip address from the 
+						// set the retrieved ip address from the
 						arg2 = arg2.trim();
 						String ip = arg2.substring(arg2.lastIndexOf('@') + 1);
 						datashareContainer.setIP(ip);
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.classpath b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/CDC-1.1%Foundation-1.1"/>
-	<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.localdiscovery/.gitignore b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.project b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.project
deleted file mode 100644
index 5729054..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.provider.localdiscovery</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.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index b753aeb..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Tue Apr 20 22:28:50 PDT 2010
-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.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs
deleted file mode 100644
index 7ba0fd8..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs
+++ /dev/null
@@ -1,94 +0,0 @@
-#Tue Apr 20 22:28:22 PDT 2010
-ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
-ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
-CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
-CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
-CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
-CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
-CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
-ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
-ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
-ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
-FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
-FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
-FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
-FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
-ILLEGAL_EXTEND=Warning
-ILLEGAL_IMPLEMENT=Warning
-ILLEGAL_INSTANTIATE=Warning
-ILLEGAL_OVERRIDE=Warning
-ILLEGAL_REFERENCE=Warning
-INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-INVALID_JAVADOC_TAG=Ignore
-INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
-LEAK_EXTEND=Warning
-LEAK_FIELD_DECL=Warning
-LEAK_IMPLEMENT=Warning
-LEAK_METHOD_PARAM=Warning
-LEAK_METHOD_RETURN_TYPE=Warning
-METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
-METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
-UNUSED_PROBLEM_FILTERS=Warning
-automatically_removed_unused_problem_filters=false
-eclipse.preferences.version=1
-incompatible_api_component_version=Error
-incompatible_api_component_version_include_major_without_breaking_change=Disabled
-incompatible_api_component_version_include_minor_without_api_change=Disabled
-invalid_since_tag_version=Error
-malformed_since_tag=Error
-missing_since_tag=Error
-report_api_breakage_when_major_version_incremented=Disabled
-report_resolution_errors_api_component=Warning
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.core.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 57d5040..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Fri Mar 13 19:37:30 CET 2009
-eclipse.preferences.version=1
-pluginProject.equinox=false
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index 1a89716..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,31 +0,0 @@
-#Sat Apr 24 17:41:38 PDT 2010
-compilers.f.unresolved-features=1
-compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=2
-compilers.p.build=1
-compilers.p.build.bin.includes=1
-compilers.p.build.java.compliance=1
-compilers.p.build.missing.output=2
-compilers.p.build.output.library=1
-compilers.p.build.source.library=1
-compilers.p.build.src.includes=1
-compilers.p.deprecated=1
-compilers.p.discouraged-class=2
-compilers.p.internal=1
-compilers.p.missing-packages=2
-compilers.p.missing-version-export-package=2
-compilers.p.missing-version-import-package=2
-compilers.p.missing-version-require-bundle=2
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=2
-compilers.p.unknown-attribute=1
-compilers.p.unknown-class=1
-compilers.p.unknown-element=1
-compilers.p.unknown-identifier=1
-compilers.p.unknown-resource=1
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.s.create-docs=false
-compilers.s.doc-folder=doc
-compilers.s.open-tags=1
-eclipse.preferences.version=1
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/META-INF/MANIFEST.MF
deleted file mode 100644
index eb1e621..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.ecf.provider.localdiscovery;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %Bundle-Vendor.0
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
-Import-Package: org.eclipse.ecf.core.identity,
- org.eclipse.ecf.discovery.identity,
- org.eclipse.ecf.osgi.services.discovery
-Require-Bundle: org.eclipse.equinox.common
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/OSGI-INF/l10n/bundle.properties b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/OSGI-INF/l10n/bundle.properties
deleted file mode 100644
index b3ceef5..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/OSGI-INF/l10n/bundle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-#Properties file for org.eclipse.ecf.provider.localdiscovery
-Bundle-Vendor.0 = Eclipse.org - ECF
-Bundle-Name.0 = ECF Local Discovery Provider
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/about.html b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/about.html
deleted file mode 100644
index ada977b..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/about.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!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>August 25, 2006</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&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>OSGi Materials</h4>
-
-<p>All files in the following sub-directories (and their sub-directories):</p>
-
-<ul>
-	<li>org/osgi</li>
-</ul>
-
-<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>
-
-<blockquote>
-Copyright (c) 2000, 2006
-<br /><br />
-OSGi Alliance
-Bishop Ranch 6<br/>
-2400 Camino Ramon, Suite 375<br/>
-San Ramon, CA 94583 USA
-<br /><br />
-All Rights Reserved.
-</blockquote>
-
-<p>The OSGi Materials are provided to you under the terms and conditions of the Apache License, Version 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE-2.0.txt" target="_blank">LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</p>
-
-<p>Implementation of certain elements of the OSGi Materials may be subject to third party intellectual property rights, including without limitation, patent rights (such a third party may
-or may not be a member of the OSGi Alliance).  The OSGi Alliance and its members are not responsible and shall not be held responsible in any manner for identifying or failing to identify any or all such third party
-intellectual property rights.</p>
-
-<small>OSGi&trade; is a trademark, registered trademark, or service mark of The OSGi Alliance in the US and other countries. Java is a trademark,
-registered trademark, or service mark of Sun Microsystems, Inc. in the US and other countries. All other trademarks, registered trademarks, or
-service marks used in the Content are the property of their respective owners and are hereby recognized.</small>
-</body>
-</html>
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/build.properties b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/build.properties
deleted file mode 100644
index 7bd6a9b..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/build.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               OSGI-INF/l10n/bundle.properties,\
-               about.html,\
-               OSGI-INF/
-src.includes = about.html,\
-               OSGI-INF/l10n/bundle.properties
-jre.compilation.profile = J2SE-1.4
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/plugin.xml
deleted file mode 100644
index 9dcdd7e..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/plugin.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.3"?>
-<plugin>
-   <extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory
-            adaptableType="org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription"
-            class="org.eclipse.ecf.provider.localdiscovery.ServiceEndpointDescriptionFactory">
-         <adapter
-               type="org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription">
-         </adapter>
-      </factory>
-   </extension>
-</plugin>
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/RemoteServiceEndpointDescriptionImpl.java b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/RemoteServiceEndpointDescriptionImpl.java
deleted file mode 100644
index 68360ca..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/RemoteServiceEndpointDescriptionImpl.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.provider.localdiscovery;
-
-import java.net.URI;
-import java.util.Collection;
-import java.util.Map;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-
-public class RemoteServiceEndpointDescriptionImpl extends
-		RemoteServiceEndpointDescription {
-
-	private final ID endpointId;
-	private final ServiceEndpointDescription serviceEndpoint;
-
-	public RemoteServiceEndpointDescriptionImpl(ServiceEndpointDescription sed,
-			ID anEndpointId) {
-		super(sed.getProperties());
-		serviceEndpoint = sed;
-		endpointId = anEndpointId;
-	}
-
-	public RemoteServiceEndpointDescriptionImpl(ServiceEndpointDescription sed,
-			ID anEndpointId, Map properties) {
-		super(properties);
-		serviceEndpoint = sed;
-		endpointId = anEndpointId;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getProperties()
-	 */
-	public Map getProperties() {
-		return serviceEndpoint.getProperties();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getProperty(java.lang.String)
-	 */
-	public Object getProperty(String key) {
-		return serviceEndpoint.getProperty(key);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getPropertyKeys()
-	 */
-	public Collection getPropertyKeys() {
-		return serviceEndpoint.getPropertyKeys();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getEndpointID()
-	 */
-	public String getEndpointID() {
-		return serviceEndpoint.getEndpointID();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getEndpointInterfaceName(java.lang.String)
-	 */
-	public String getEndpointInterfaceName(String interfaceName) {
-		return serviceEndpoint.getEndpointInterfaceName(interfaceName);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getLocation()
-	 */
-	public URI getLocation() {
-		return serviceEndpoint.getLocation();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getProvidedInterfaces()
-	 */
-	public Collection getProvidedInterfaces() {
-		return serviceEndpoint.getProvidedInterfaces();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getVersion(java.lang.String)
-	 */
-	public String getVersion(String interfaceName) {
-		return serviceEndpoint.getVersion(interfaceName);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getECFEndpointID()
-	 */
-	public ID getEndpointAsID() {
-		return endpointId;
-	}
-
-	public ID getConnectTargetID() {
-		return null;
-	}
-
-	public IServiceID getServiceID() {
-		return null;
-	}
-}
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/ServiceEndpointDescriptionFactory.java b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/ServiceEndpointDescriptionFactory.java
deleted file mode 100644
index ba94d31..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/ServiceEndpointDescriptionFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.provider.localdiscovery;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-
-public class ServiceEndpointDescriptionFactory implements IAdapterFactory {
-
-	private static final String ECF_IDENTITY_STRING_ID = "org.eclipse.ecf.core.identity.StringID"; //$NON-NLS-1$
-	private static final String ECF_SP_ECT = "ecf.sp.ect"; //$NON-NLS-1$
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object,
-	 * java.lang.Class)
-	 */
-	public Object getAdapter(Object adaptableObject, Class adapterType) {
-		if (adapterType.equals(RemoteServiceEndpointDescription.class)
-				&& adaptableObject instanceof ServiceEndpointDescription) {
-			final ServiceEndpointDescription sed = (ServiceEndpointDescription) adaptableObject;
-			final Map properties = sed.getProperties();
-			Object obj1 = properties
-					.get(RemoteServicePublication.ENDPOINT_CONTAINERID);
-			final Object obj2 = properties
-					.get(RemoteServicePublication.ENDPOINT_CONTAINERID_NAMESPACE);
-			if (obj1 instanceof byte[]) {
-				obj1 = new String(((byte[]) obj1));
-			}
-			if (obj2 != null && obj1 instanceof String && obj2 instanceof String) {
-				// create the endpoint id
-				final String endpointStr = (String) obj1;
-				final String namespaceStr = (String) obj2;
-				return new RemoteServiceEndpointDescriptionImpl(sed, IDFactory
-						.getDefault().createID(namespaceStr, endpointStr));
-			} else if(obj2 == null && obj1 instanceof String) {
-				// create the endpoint id via the endpoint str for known containers
-				final String endpointStr = (String) obj1;
-				if (endpointStr.startsWith("ecftcp://")) { //$NON-NLS-1$
-					properties.put(ECF_SP_ECT, "ecf.generic.server"); //$NON-NLS-1$
-				} else if(endpointStr.startsWith("r-osgi://")) { //$NON-NLS-1$
-					properties.put(ECF_SP_ECT, "ecf.r_osgi.peer"); //$NON-NLS-1$
-				} else {
-					return null;
-				}
-				return new RemoteServiceEndpointDescriptionImpl(sed, IDFactory
-						.getDefault().createID(ECF_IDENTITY_STRING_ID, endpointStr), properties); //$NON-NLS-1$
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
-	 */
-	public Class[] getAdapterList() {
-		return new Class[] { ServiceEndpointDescription.class };
-	}
-}
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 8c2650b..e5d33c2 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,8 +12,8 @@
 package org.eclipse.ecf.internal.provider.r_osgi;
 
 import ch.ethz.iks.r_osgi.RemoteOSGiService;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
+import org.eclipse.equinox.concurrent.future.IExecutor;
+import org.osgi.framework.*;
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
@@ -23,6 +23,17 @@
  */
 public final class Activator implements BundleActivator {
 
+	// This is a service property that is used to find any IExecutor service instances
+	// to be used for synchronous or asynchronous execution.  The use of the IExecutor
+	// The type of the value for this property is String, and valid values are 'sync' or 'async'
+	// For example, to setup one's own executor implementation to use for async invocation
+	// on a consumer would look like this
+	// 
+	// props.put("org.eclipse.ecf.provider.r_osgi.consumerExecutor","async");
+	// bundleContext.registerService(IExecutor.class.getName(), new MyExecutor(), props);
+	// 
+	public static final String CONSUMER_SYNC_EXECUTOR_TYPE = "org.eclipse.ecf.provider.r_osgi.consumerExecutor"; //$NON-NLS-1$
+
 	// The plug-in ID
 	public static final String PLUGIN_ID = "org.eclipse.ecf.provider.r_osgi"; //$NON-NLS-1$
 
@@ -65,6 +76,12 @@
 	public void stop(final BundleContext bc) throws Exception {
 		r_osgi_tracker.close();
 		r_osgi_tracker = null;
+		synchronized (executorServiceTrackerLock) {
+			if (executorServiceTracker != null) {
+				executorServiceTracker.close();
+				executorServiceTracker = null;
+			}
+		}
 		this.context = null;
 		plugin = null;
 	}
@@ -101,4 +118,27 @@
 		}
 		return plugin;
 	}
+
+	private ServiceTracker executorServiceTracker;
+	private final Object executorServiceTrackerLock = new Object();
+
+	private Filter createExecutorFilter(boolean sync) {
+		try {
+			return getContext().createFilter("(&(" + Constants.OBJECTCLASS + "=" + IExecutor.class.getName() + ")(" + CONSUMER_SYNC_EXECUTOR_TYPE + "=" + ((sync) ? "sync" : "async") + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+		} catch (InvalidSyntaxException e) {
+			// should not happen
+			return null;
+		}
+	}
+
+	public IExecutor getExecutor(boolean sync) {
+		synchronized (executorServiceTrackerLock) {
+			if (executorServiceTracker == null) {
+				Filter syncExecutorFilter = createExecutorFilter(sync);
+				executorServiceTracker = new ServiceTracker(getContext(), syncExecutorFilter, null);
+				executorServiceTracker.open();
+			}
+		}
+		return (IExecutor) executorServiceTracker.getService();
+	}
 }
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 24c67bd..db3bd9e 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
@@ -47,20 +47,20 @@
 	 */
 	public IContainer createInstance(final ContainerTypeDescription description, final Object[] parameters) throws ContainerCreateException {
 		try {
-			final RemoteOSGiService remoteOsGiService = Activator.getDefault().getRemoteOSGiService();
+			final RemoteOSGiService remoteOSGiService = Activator.getDefault().getRemoteOSGiService();
 			if (parameters == null) {
 				//TODO factor localHost and protocol out?
-				final String localHost = InetAddress.getLocalHost().getHostName();
+				final String localHost = InetAddress.getLocalHost().getCanonicalHostName();
 				final String protocol = "r-osgi"; //$NON-NLS-1$
 
-				final int port = remoteOsGiService.getListeningPort(protocol);
+				final int port = remoteOSGiService.getListeningPort(protocol);
 				final ID containerID = new R_OSGiID(protocol + "://" + localHost + ":" + port); //$NON-NLS-1$ //$NON-NLS-2$
-				return new R_OSGiRemoteServiceContainer(remoteOsGiService, containerID);
+				return new R_OSGiRemoteServiceContainer(remoteOSGiService, containerID);
 			} else if (parameters.length > 0) {
 				if (parameters[0] instanceof ID) {
-					return new R_OSGiRemoteServiceContainer(remoteOsGiService, (ID) parameters[0]);
+					return new R_OSGiRemoteServiceContainer(remoteOSGiService, (ID) parameters[0]);
 				} else if (parameters[0] instanceof String) {
-					return new R_OSGiRemoteServiceContainer(remoteOsGiService, new R_OSGiID((String) parameters[0]));
+					return new R_OSGiRemoteServiceContainer(remoteOSGiService, new R_OSGiID((String) parameters[0]));
 				}
 			}
 			throw new ContainerCreateException("Unsupported arguments " //$NON-NLS-1$
@@ -124,4 +124,4 @@
 		return null;
 	}
 
-}
\ No newline at end of file
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java
index 0a5ab38..0e05ded 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java
@@ -83,14 +83,37 @@
 	 * @see org.eclipse.ecf.remoteservice.IRemoteService#callAsync(org.eclipse.ecf.remoteservice.IRemoteCall)
 	 */
 	public IFuture callAsync(final IRemoteCall call) {
-		final AbstractExecutor executor = new ThreadsExecutor();
-		return executor.execute(new IProgressRunnable() {
+		return getAsyncExecutor().execute(new IProgressRunnable() {
 			public Object run(IProgressMonitor monitor) throws Exception {
 				return callSync(call);
 			}
 		}, null);
 	}
 
+	private IExecutor asyncExecutor;
+	private IExecutor syncExecutor;
+	private final Object executorLock = new Object();
+
+	private IExecutor getAsyncExecutor() {
+		synchronized (executorLock) {
+			if (asyncExecutor == null) {
+				IExecutor executor = Activator.getDefault().getExecutor(false);
+				asyncExecutor = (executor == null) ? new ThreadsExecutor() : executor;
+			}
+			return asyncExecutor;
+		}
+	}
+
+	private IExecutor getSyncExecutor() {
+		synchronized (executorLock) {
+			if (syncExecutor == null) {
+				IExecutor executor = Activator.getDefault().getExecutor(true);
+				syncExecutor = (executor == null) ? new ImmediateExecutor() : executor;
+			}
+			return syncExecutor;
+		}
+	}
+
 	/**
 	 * call the service synchronously.
 	 * 
@@ -106,8 +129,7 @@
 		for (int i = 0; i < formalParams.length; i++) {
 			formalParams[i] = call.getParameters()[i].getClass();
 		}
-		IExecutor executor = new ThreadsExecutor();
-		IFuture future = executor.execute(new IProgressRunnable() {
+		IFuture future = getSyncExecutor().execute(new IProgressRunnable() {
 			public Object run(IProgressMonitor monitor) throws Exception {
 				final Method method = ClassUtil.getMethod(service.getClass(), call.getMethod(), formalParams);
 				return method.invoke(service, parameters);
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/about.html b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/about.html
copy to providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties
index 4c4f98f..5bb55b7 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties
@@ -1,5 +1,7 @@
 bin.includes = META-INF/,\
                .,\
                fragment.xml,\
-               plugin.properties
-src.includes = fragment.xml
+               plugin.properties,\
+               about.html
+src.includes = fragment.xml,\
+               about.html
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/about.html
similarity index 100%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
copy to providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties
index 08c1199..7c663ae 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties
@@ -3,5 +3,7 @@
 bin.includes = META-INF/,\
                .,\
                plugin.properties,\
-               fragment.xml
-src.includes = fragment.xml
+               fragment.xml,\
+               about.html
+src.includes = fragment.xml,\
+               about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java
index 99dac02..f85b693 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java
@@ -1,84 +1,85 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 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.internal.provider.xmpp.ui;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.provider.xmpp.ui.messages"; //$NON-NLS-1$
-
-	public static String XMPPConnectWizardPage_WIZARD_TITLE;
-	public static String XMPPConnectWizardPage_WIZARD_DESCRIPTION;
-	public static String XMPPCompoundContributionItem_CHOOSE_FILE;
-	public static String XMPPConnectWizard_RECEIVE_ERROR_MESSAGE;
-
-	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE;
-
-	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE;
-
-	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE;
-
-	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE;
-
-	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE;
-
-	public static String XMPPHyperlink_MESSAGING_ERROR_MESSAGE;
-
-	public static String XMPPHyperlink_MESSAGING_ERROR_TITLE;
-
-	public static String XMPPHyperlink_SELECT_ACCOUNT_MESSAGE;
-
-	public static String XMPPHyperlink_SELECT_ACCOUNT_TITLE;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE;
-
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TITLE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_STATUS;
-	public static String XMPPConnectWizardPage_LABEL_USERID;
-	public static String XMPPConnectWizard_FILE_SAVE_TITLE;
-	public static String XMPPConnectWizardPage_WIZARD_STATUS;
-	public static String XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE;
-	public static String XMPPConnectWizardPage_USERID_TEMPLATE;
-	public static String XMPPConnectWizardPage_WIZARD_PASSWORD;
-	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER;
-	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT;
-	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE;
-	public static String XMPPConnectWizard_FILE_RECEIVE_TITLE;
-	public static String XMPPConnectWizard_FILE_RECEIVE_MESSAGE;
-	public static String XMPPCompoundContributionItem_SEND_FILE;
-	public static String XMPPConnectWizard_RECEIVE_ERROR_TITLE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION;
-	public static String XMPPCompoundContributionItem_SEND_ERROR_TITLE;
-	public static String XMPPCompoundContributionItem_SEND_ERROR_MESSAGE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD;
-	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE;
-	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE;
-
-	public static String XMPPConnectWizard_WIZARD_TITLE;
-	public static String XMPPSConnectWizard_WIZARD_TITLE;
-
-	private Messages() {
-	}
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 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.internal.provider.xmpp.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.provider.xmpp.ui.messages"; //$NON-NLS-1$
+
+	public static String XMPPConnectWizardPage_WIZARD_TITLE;
+	public static String XMPPConnectWizardPage_WIZARD_DESCRIPTION;
+	public static String XMPPCompoundContributionItem_CHOOSE_FILE;
+	public static String XMPPConnectWizard_RECEIVE_ERROR_MESSAGE;
+
+	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE;
+
+	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE;
+
+	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE;
+
+	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE;
+
+	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE;
+
+	public static String XMPPHyperlink_MESSAGING_ERROR_MESSAGE;
+
+	public static String XMPPHyperlink_MESSAGING_ERROR_TITLE;
+
+	public static String XMPPHyperlink_SELECT_ACCOUNT_MESSAGE;
+
+	public static String XMPPHyperlink_SELECT_ACCOUNT_TITLE;
+
+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL;
+
+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT;
+
+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE;
+
+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE;
+
+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE;
+
+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TITLE;
+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_STATUS;
+	public static String XMPPConnectWizardPage_LABEL_USERID;
+	public static String XMPPConnectWizard_FILE_SAVE_TITLE;
+	public static String XMPPConnectWizardPage_WIZARD_STATUS;
+	public static String XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE;
+	public static String XMPPConnectWizardPage_USERID_TEMPLATE;
+	public static String XMPPConnectWizardPage_WIZARD_PASSWORD;
+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_KEYSTORE_PASSWORD;
+	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER;
+	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT;
+	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE;
+	public static String XMPPConnectWizard_FILE_RECEIVE_TITLE;
+	public static String XMPPConnectWizard_FILE_RECEIVE_MESSAGE;
+	public static String XMPPCompoundContributionItem_SEND_FILE;
+	public static String XMPPConnectWizard_RECEIVE_ERROR_TITLE;
+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION;
+	public static String XMPPCompoundContributionItem_SEND_ERROR_TITLE;
+	public static String XMPPCompoundContributionItem_SEND_ERROR_MESSAGE;
+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE;
+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD;
+	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE;
+	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE;
+
+	public static String XMPPConnectWizard_WIZARD_TITLE;
+	public static String XMPPSConnectWizard_WIZARD_TITLE;
+
+	private Messages() {
+	}
+
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties
index 1ea13a8..59dc50a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties
@@ -1,54 +1,55 @@
-################################################################################
-# Copyright (c) 2007 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
-################################################################################
-
-XMPPConnectWizardPage_WIZARD_TITLE=XMPP Connection Wizard
-XMPPConnectWizardPage_WIZARD_DESCRIPTION=Specify an XMPP account to connect to.
-XMPPCompoundContributionItem_CHOOSE_FILE=Choose File For {0}
-XMPPConnectWizard_RECEIVE_ERROR_MESSAGE=Error receiving file {0} from {1}.  Error: {2}
-XMPPSConnectWizardPage_WIZARD_PAGE_TITLE=XMPPS Connection Wizard
-XMPPSConnectWizardPage_WIZARD_PAGE_STATUS=A valid User ID must be specified.
-XMPPConnectWizardPage_LABEL_USERID=User ID:
-XMPPConnectWizard_FILE_SAVE_TITLE=Save File From {0}
-XMPPConnectWizardPage_WIZARD_STATUS=A valid connect ID must be specified.
-XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE=The User ID is malformed.
-XMPPConnectWizardPage_USERID_TEMPLATE=<user>@<xmppserver>[:port]
-XMPPConnectWizardPage_WIZARD_PASSWORD=Password:
-XMPPConnectWizardPage_WIZARD_ALT_SERVER=Alternative Server (optional):
-XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT=(use 'talk.google.com' if User ID is a Google for Domains account)
-XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE=The Alternative Server name is malformed.
-XMPPConnectWizard_FILE_RECEIVE_TITLE=File Receive Request From {0}
-XMPPConnectWizard_FILE_RECEIVE_MESSAGE=User {0} would like to send you a file called {1}\n\nThe size of the file is {2}\nDescription: {3}\n\nDo you want to receive this file?
-XMPPCompoundContributionItem_SEND_FILE=Send File
-XMPPConnectWizard_RECEIVE_ERROR_TITLE=Receive Error
-XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION=Specify an XMPPS account to connect to.
-XMPPCompoundContributionItem_SEND_ERROR_TITLE=Send Error
-XMPPCompoundContributionItem_SEND_ERROR_MESSAGE=Error sending file {0}.  Error: {1}
-XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE=<user>@<xmppsserver>[:port]
-XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD=Password:
-XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE=File Send Refused
-XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE=Error opening view
-XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT=Connect to Account
-XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL=Cancel
-XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE=You are not currently connected so messages cannot be sent.\n\nDo you want to connect and login to {0}?
-XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE=Error opening view: {0}.  See Error Log for Details
-XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE=Send of {0} refused by {1}
-XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE=Error opening messages view
-XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE=Send Message
-XMPPHyperlink_SELECT_ACCOUNT_TITLE=Select Account
-XMPPHyperlink_SELECT_ACCOUNT_MESSAGE=Select Account to Use
-XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE=Select Action
-XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE=The target host {0} is not the same as {1}.\n\nDo you want to:\n\n1) Send message to {2} from {3}?\n\n2) Connect and login to account {2}?
-XMPPHyperlink_MESSAGING_ERROR_TITLE=Messaging Error
-XMPPHyperlink_MESSAGING_ERROR_MESSAGE=You don't want to talk to yourself, do you?
-XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE=Connect To Account
-
-XMPPConnectWizard_WIZARD_TITLE=New XMPP Connection
-XMPPSConnectWizard_WIZARD_TITLE=New XMPPS Connection
+################################################################################
+# Copyright (c) 2007 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
+################################################################################
+
+XMPPConnectWizardPage_WIZARD_TITLE=XMPP Connection Wizard
+XMPPConnectWizardPage_WIZARD_DESCRIPTION=Specify an XMPP account to connect to.
+XMPPCompoundContributionItem_CHOOSE_FILE=Choose File For {0}
+XMPPConnectWizard_RECEIVE_ERROR_MESSAGE=Error receiving file {0} from {1}.  Error: {2}
+XMPPSConnectWizardPage_WIZARD_PAGE_TITLE=XMPPS Connection Wizard
+XMPPSConnectWizardPage_WIZARD_PAGE_STATUS=A valid User ID must be specified.
+XMPPConnectWizardPage_LABEL_USERID=User ID:
+XMPPConnectWizard_FILE_SAVE_TITLE=Save File From {0}
+XMPPConnectWizardPage_WIZARD_STATUS=A valid connect ID must be specified.
+XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE=The User ID is malformed.
+XMPPConnectWizardPage_USERID_TEMPLATE=<user>@<xmppserver>[:port]
+XMPPConnectWizardPage_WIZARD_PASSWORD=Password:
+XMPPConnectWizardPage_WIZARD_ALT_SERVER=Alternative Server (optional):
+XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT=(use 'talk.google.com' if User ID is a Google for Domains account)
+XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE=The Alternative Server name is malformed.
+XMPPConnectWizard_FILE_RECEIVE_TITLE=File Receive Request From {0}
+XMPPConnectWizard_FILE_RECEIVE_MESSAGE=User {0} would like to send you a file called {1}\n\nThe size of the file is {2}\nDescription: {3}\n\nDo you want to receive this file?
+XMPPCompoundContributionItem_SEND_FILE=Send File
+XMPPConnectWizard_RECEIVE_ERROR_TITLE=Receive Error
+XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION=Specify an XMPPS account to connect to.
+XMPPCompoundContributionItem_SEND_ERROR_TITLE=Send Error
+XMPPCompoundContributionItem_SEND_ERROR_MESSAGE=Error sending file {0}.  Error: {1}
+XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE=<user>@<xmppsserver>[:port]
+XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD=Password:
+XMPPSConnectWizardPage_WIZARD_PAGE_KEYSTORE_PASSWORD=Keystore Passphrase (optional):
+XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE=File Send Refused
+XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE=Error opening view
+XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT=Connect to Account
+XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL=Cancel
+XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE=You are not currently connected so messages cannot be sent.\n\nDo you want to connect and login to {0}?
+XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE=Error opening view: {0}.  See Error Log for Details
+XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE=Send of {0} refused by {1}
+XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE=Error opening messages view
+XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE=Send Message
+XMPPHyperlink_SELECT_ACCOUNT_TITLE=Select Account
+XMPPHyperlink_SELECT_ACCOUNT_MESSAGE=Select Account to Use
+XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE=Select Action
+XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE=The target host {0} is not the same as {1}.\n\nDo you want to:\n\n1) Send message to {2} from {3}?\n\n2) Connect and login to account {2}?
+XMPPHyperlink_MESSAGING_ERROR_TITLE=Messaging Error
+XMPPHyperlink_MESSAGING_ERROR_MESSAGE=You don't want to talk to yourself, do you?
+XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE=Connect To Account
+
+XMPPConnectWizard_WIZARD_TITLE=New XMPP Connection
+XMPPSConnectWizard_WIZARD_TITLE=New XMPPS Connection
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java
index 9bb2935..59782dd 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java
@@ -1,278 +1,324 @@
-/****************************************************************************
- * Copyright (c) 2007, 2009 Remy Suen, 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:
- *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
-
-import java.io.*;
-import org.eclipse.ecf.core.*;
-import org.eclipse.ecf.core.events.IContainerConnectedEvent;
-import org.eclipse.ecf.core.events.IContainerEvent;
-import org.eclipse.ecf.core.identity.*;
-import org.eclipse.ecf.core.security.ConnectContextFactory;
-import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.filetransfer.*;
-import org.eclipse.ecf.filetransfer.events.*;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Activator;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
-import org.eclipse.ecf.presence.*;
-import org.eclipse.ecf.presence.im.*;
-import org.eclipse.ecf.presence.ui.MessagesView;
-import org.eclipse.ecf.presence.ui.MultiRosterView;
-import org.eclipse.ecf.ui.IConnectWizard;
-import org.eclipse.ecf.ui.actions.AsynchContainerConnectAction;
-import org.eclipse.ecf.ui.dialogs.IDCreateErrorDialog;
-import org.eclipse.ecf.ui.util.PasswordCacheHelper;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-
-public class XMPPConnectWizard extends Wizard implements IConnectWizard, INewWizard {
-
-	XMPPConnectWizardPage page;
-
-	private Shell shell;
-
-	//private IContainer container;
-	protected IContainer container;
-
-	private ID targetID;
-
-	private IConnectContext connectContext;
-
-	protected String usernameAtHost;
-
-	public XMPPConnectWizard() {
-		super();
-	}
-
-	public XMPPConnectWizard(String usernameAtHost) {
-		this();
-		this.usernameAtHost = usernameAtHost;
-	}
-
-	protected IIncomingFileTransferRequestListener requestListener = new IIncomingFileTransferRequestListener() {
-		public void handleFileTransferRequest(final IFileTransferRequestEvent event) {
-			Display.getDefault().asyncExec(new Runnable() {
-				public void run() {
-					final String username = event.getRequesterID().getName();
-					final IFileTransferInfo transferInfo = event.getFileTransferInfo();
-					final String fileName = transferInfo.getFile().getName();
-					final Object[] bindings = new Object[] {username, fileName, ((transferInfo.getFileSize() == -1) ? "unknown" //$NON-NLS-1$
-							: (transferInfo.getFileSize() + " bytes")), //$NON-NLS-1$
-							(transferInfo.getDescription() == null) ? "none" //$NON-NLS-1$
-									: transferInfo.getDescription()};
-					if (MessageDialog.openQuestion(shell, NLS.bind(Messages.XMPPConnectWizard_FILE_RECEIVE_TITLE, username), NLS.bind(Messages.XMPPConnectWizard_FILE_RECEIVE_MESSAGE, bindings))) {
-						final FileDialog fd = new FileDialog(shell, SWT.OPEN);
-						// XXX this should be some default path gotten from
-						// preference. For now we'll have it be the user.home
-						// system property
-						fd.setFilterPath(System.getProperty("user.home")); //$NON-NLS-1$
-						fd.setFileName(fileName);
-						final int suffixLoc = fileName.lastIndexOf('.');
-						if (suffixLoc != -1) {
-							final String ext = fileName.substring(fileName.lastIndexOf('.'));
-							fd.setFilterExtensions(new String[] {ext});
-						}
-						fd.setText(NLS.bind(Messages.XMPPConnectWizard_FILE_SAVE_TITLE, username));
-						final String res = fd.open();
-						if (res == null)
-							event.reject();
-						else {
-							try {
-								final FileOutputStream fos = new FileOutputStream(new File(res));
-								event.accept(fos, new IFileTransferListener() {
-									public void handleTransferEvent(IFileTransferEvent event) {
-										// XXX Should have some some UI
-										// for transfer events
-										if (event instanceof IIncomingFileTransferReceiveDoneEvent) {
-											try {
-												fos.close();
-											} catch (final IOException e) {
-											}
-										}
-									}
-								});
-							} catch (final Exception e) {
-								MessageDialog.openError(shell, Messages.XMPPConnectWizard_RECEIVE_ERROR_TITLE, NLS.bind(Messages.XMPPConnectWizard_RECEIVE_ERROR_MESSAGE, new Object[] {fileName, username, e.getLocalizedMessage()}));
-							}
-						}
-					} else
-						event.reject();
-				}
-			});
-		}
-
-	};
-
-	public void addPages() {
-		page = new XMPPConnectWizardPage(usernameAtHost);
-		addPage(page);
-	}
-
-	public void init(IWorkbench workbench, IContainer container) {
-		shell = workbench.getActiveWorkbenchWindow().getShell();
-		this.container = container;
-		this.workbench = workbench;
-
-		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);
-	}
-
-	public void init(IWorkbench workbench, IStructuredSelection selection) {
-		shell = workbench.getActiveWorkbenchWindow().getShell();
-		this.workbench = workbench;
-		this.container = null;
-		try {
-			this.container = ContainerFactory.getDefault().createContainer("ecf.xmpp.smack");
-		} catch (final ContainerCreateException e) {
-			// None
-		}
-
-		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);
-	}
-
-	private IWorkbench workbench;
-	private IChatMessageSender icms;
-	private ITypingMessageSender itms;
-
-	private void openView() {
-		try {
-			final MultiRosterView view = (MultiRosterView) workbench.getActiveWorkbenchWindow().getActivePage().showView(MultiRosterView.VIEW_ID);
-			view.addContainer(container);
-		} catch (final PartInitException e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void displayMessage(IChatMessageEvent e) {
-		final IChatMessage message = e.getChatMessage();
-		Display.getDefault().asyncExec(new Runnable() {
-			public void run() {
-				MessagesView view = (MessagesView) workbench.getActiveWorkbenchWindow().getActivePage().findView(MessagesView.VIEW_ID);
-				if (view != null) {
-					final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view.getSite().getAdapter(IWorkbenchSiteProgressService.class);
-					view.openTab(icms, itms, targetID, message.getFromID());
-					view.showMessage(message);
-					service.warnOfContentChange();
-				} else {
-					try {
-
-						final IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
-						view = (MessagesView) page.showView(MessagesView.VIEW_ID, null, IWorkbenchPage.VIEW_CREATE);
-						if (!page.isPartVisible(view)) {
-							final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view.getSite().getAdapter(IWorkbenchSiteProgressService.class);
-							service.warnOfContentChange();
-						}
-						view.openTab(icms, itms, targetID, message.getFromID());
-						view.showMessage(message);
-					} catch (final PartInitException e) {
-						e.printStackTrace();
-					}
-				}
-			}
-		});
-	}
-
-	private void displayTypingNotification(final ITypingMessageEvent e) {
-		Display.getDefault().asyncExec(new Runnable() {
-			public void run() {
-				final MessagesView view = (MessagesView) workbench.getActiveWorkbenchWindow().getActivePage().findView(MessagesView.VIEW_ID);
-				if (view != null)
-					view.displayTypingNotification(e);
-			}
-		});
-	}
-
-	public boolean performCancel() {
-		if (container != null) {
-			container.dispose();
-
-			IContainerManager containerManager = Activator.getDefault()
-					.getContainerManager();
-			if (containerManager != null) {
-				containerManager.removeContainer(container);
-			}
-		}
-
-		return super.performCancel();
-	}
-
-	public boolean performFinish() {
-
-		final String connectID = page.getConnectID();
-		final String password = page.getPassword();
-
-		// Save combo text even if we don't successfully login
-		page.saveComboText();
-
-		connectContext = ConnectContextFactory.createPasswordConnectContext(password);
-
-		try {
-			targetID = IDFactory.getDefault().createID(container.getConnectNamespace(), connectID);
-		} catch (final IDCreateException e) {
-			new IDCreateErrorDialog(null, connectID, e).open();
-			return false;
-		}
-
-		// Save combo items if targetID created successfully
-		page.saveComboItems();
-
-		final IPresenceContainerAdapter adapter = (IPresenceContainerAdapter) container.getAdapter(IPresenceContainerAdapter.class);
-
-		container.addListener(new IContainerListener() {
-			public void handleEvent(IContainerEvent event) {
-				if (event instanceof IContainerConnectedEvent) {
-					Display.getDefault().asyncExec(new Runnable() {
-						public void run() {
-							openView();
-						}
-					});
-				}
-			}
-		});
-
-		final IChatManager icm = adapter.getChatManager();
-		icms = icm.getChatMessageSender();
-		itms = icm.getTypingMessageSender();
-
-		icm.addMessageListener(new IIMMessageListener() {
-			public void handleMessageEvent(IIMMessageEvent e) {
-				if (e instanceof IChatMessageEvent) {
-					displayMessage((IChatMessageEvent) e);
-				} else if (e instanceof ITypingMessageEvent) {
-					displayTypingNotification((ITypingMessageEvent) e);
-				}
-			}
-		});
-
-		final ISendFileTransferContainerAdapter ioftca = (ISendFileTransferContainerAdapter) container.getAdapter(ISendFileTransferContainerAdapter.class);
-		ioftca.addListener(requestListener);
-		// Connect
-		new AsynchContainerConnectAction(container, targetID, connectContext, null, new Runnable() {
-			public void run() {
-				cachePassword(connectID, password);
-			}
-		}).run();
-
-		return true;
-	}
-
-	protected void cachePassword(final String connectID, String password) {
-		if (password != null && !password.equals("")) {
-			final PasswordCacheHelper pwStorage = new PasswordCacheHelper(connectID);
-			pwStorage.savePassword(password);
-		}
-	}
-
-}
+/****************************************************************************
+ * Copyright (c) 2007, 2009 Remy Suen, 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:
+ *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
+
+import java.io.*;
+import org.eclipse.ecf.core.*;
+import org.eclipse.ecf.core.events.IContainerConnectedEvent;
+import org.eclipse.ecf.core.events.IContainerEvent;
+import org.eclipse.ecf.core.identity.*;
+import org.eclipse.ecf.core.security.ConnectContextFactory;
+import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.filetransfer.*;
+import org.eclipse.ecf.filetransfer.events.*;
+import org.eclipse.ecf.internal.provider.xmpp.ui.Activator;
+import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
+import org.eclipse.ecf.presence.*;
+import org.eclipse.ecf.presence.im.*;
+import org.eclipse.ecf.presence.ui.MessagesView;
+import org.eclipse.ecf.presence.ui.MultiRosterView;
+import org.eclipse.ecf.ui.IConnectWizard;
+import org.eclipse.ecf.ui.actions.AsynchContainerConnectAction;
+import org.eclipse.ecf.ui.dialogs.IDCreateErrorDialog;
+import org.eclipse.ecf.ui.util.PasswordCacheHelper;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.*;
+import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
+
+public class XMPPConnectWizard extends Wizard implements IConnectWizard,
+		INewWizard {
+
+	XMPPConnectWizardPage page;
+
+	private Shell shell;
+
+	// private IContainer container;
+	protected IContainer container;
+
+	private ID targetID;
+
+	private IConnectContext connectContext;
+
+	protected String usernameAtHost;
+
+	public XMPPConnectWizard() {
+		super();
+	}
+
+	public XMPPConnectWizard(String usernameAtHost) {
+		this();
+		this.usernameAtHost = usernameAtHost;
+	}
+
+	protected IIncomingFileTransferRequestListener requestListener = new IIncomingFileTransferRequestListener() {
+		public void handleFileTransferRequest(
+				final IFileTransferRequestEvent event) {
+			Display.getDefault().asyncExec(new Runnable() {
+				public void run() {
+					final String username = event.getRequesterID().getName();
+					final IFileTransferInfo transferInfo = event
+							.getFileTransferInfo();
+					final String fileName = transferInfo.getFile().getName();
+					final Object[] bindings = new Object[] { username,
+							fileName,
+							((transferInfo.getFileSize() == -1) ? "unknown" //$NON-NLS-1$
+									: (transferInfo.getFileSize() + " bytes")), //$NON-NLS-1$
+							(transferInfo.getDescription() == null) ? "none" //$NON-NLS-1$
+									: transferInfo.getDescription() };
+					if (MessageDialog.openQuestion(shell, NLS.bind(
+							Messages.XMPPConnectWizard_FILE_RECEIVE_TITLE,
+							username), NLS.bind(
+							Messages.XMPPConnectWizard_FILE_RECEIVE_MESSAGE,
+							bindings))) {
+						final FileDialog fd = new FileDialog(shell, SWT.OPEN);
+						// XXX this should be some default path gotten from
+						// preference. For now we'll have it be the user.home
+						// system property
+						fd.setFilterPath(System.getProperty("user.home")); //$NON-NLS-1$
+						fd.setFileName(fileName);
+						final int suffixLoc = fileName.lastIndexOf('.');
+						if (suffixLoc != -1) {
+							final String ext = fileName.substring(fileName
+									.lastIndexOf('.'));
+							fd.setFilterExtensions(new String[] { ext });
+						}
+						fd.setText(NLS.bind(
+								Messages.XMPPConnectWizard_FILE_SAVE_TITLE,
+								username));
+						final String res = fd.open();
+						if (res == null)
+							event.reject();
+						else {
+							try {
+								final FileOutputStream fos = new FileOutputStream(
+										new File(res));
+								event.accept(fos, new IFileTransferListener() {
+									public void handleTransferEvent(
+											IFileTransferEvent event) {
+										// XXX Should have some some UI
+										// for transfer events
+										if (event instanceof IIncomingFileTransferReceiveDoneEvent) {
+											try {
+												fos.close();
+											} catch (final IOException e) {
+											}
+										}
+									}
+								});
+							} catch (final Exception e) {
+								MessageDialog
+										.openError(
+												shell,
+												Messages.XMPPConnectWizard_RECEIVE_ERROR_TITLE,
+												NLS.bind(
+														Messages.XMPPConnectWizard_RECEIVE_ERROR_MESSAGE,
+														new Object[] {
+																fileName,
+																username,
+																e.getLocalizedMessage() }));
+							}
+						}
+					} else
+						event.reject();
+				}
+			});
+		}
+
+	};
+
+	public void addPages() {
+		page = new XMPPConnectWizardPage(usernameAtHost);
+		addPage(page);
+	}
+
+	public void init(IWorkbench workbench, IContainer container) {
+		shell = workbench.getActiveWorkbenchWindow().getShell();
+		this.container = container;
+		this.workbench = workbench;
+
+		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);
+	}
+
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		shell = workbench.getActiveWorkbenchWindow().getShell();
+		this.workbench = workbench;
+		this.container = null;
+		try {
+			this.container = ContainerFactory.getDefault().createContainer(
+					"ecf.xmpp.smack");
+		} catch (final ContainerCreateException e) {
+			// None
+		}
+
+		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);
+	}
+
+	private IWorkbench workbench;
+	private IChatMessageSender icms;
+	private ITypingMessageSender itms;
+
+	private void openView() {
+		try {
+			final MultiRosterView view = (MultiRosterView) workbench
+					.getActiveWorkbenchWindow().getActivePage()
+					.showView(MultiRosterView.VIEW_ID);
+			view.addContainer(container);
+		} catch (final PartInitException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void displayMessage(IChatMessageEvent e) {
+		final IChatMessage message = e.getChatMessage();
+		Display.getDefault().asyncExec(new Runnable() {
+			public void run() {
+				MessagesView view = (MessagesView) workbench
+						.getActiveWorkbenchWindow().getActivePage()
+						.findView(MessagesView.VIEW_ID);
+				if (view != null) {
+					final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view
+							.getSite().getAdapter(
+									IWorkbenchSiteProgressService.class);
+					view.openTab(icms, itms, targetID, message.getFromID());
+					view.showMessage(message);
+					service.warnOfContentChange();
+				} else {
+					try {
+
+						final IWorkbenchPage page = workbench
+								.getActiveWorkbenchWindow().getActivePage();
+						view = (MessagesView) page.showView(
+								MessagesView.VIEW_ID, null,
+								IWorkbenchPage.VIEW_CREATE);
+						if (!page.isPartVisible(view)) {
+							final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view
+									.getSite()
+									.getAdapter(
+											IWorkbenchSiteProgressService.class);
+							service.warnOfContentChange();
+						}
+						view.openTab(icms, itms, targetID, message.getFromID());
+						view.showMessage(message);
+					} catch (final PartInitException e) {
+						e.printStackTrace();
+					}
+				}
+			}
+		});
+	}
+
+	private void displayTypingNotification(final ITypingMessageEvent e) {
+		Display.getDefault().asyncExec(new Runnable() {
+			public void run() {
+				final MessagesView view = (MessagesView) workbench
+						.getActiveWorkbenchWindow().getActivePage()
+						.findView(MessagesView.VIEW_ID);
+				if (view != null)
+					view.displayTypingNotification(e);
+			}
+		});
+	}
+
+	public boolean performCancel() {
+		if (container != null) {
+			container.dispose();
+
+			IContainerManager containerManager = Activator.getDefault()
+					.getContainerManager();
+			if (containerManager != null) {
+				containerManager.removeContainer(container);
+			}
+		}
+
+		return super.performCancel();
+	}
+
+	public boolean performFinish() {
+		final String connectID = page.getConnectID();
+		final String password = page.getPassword();
+
+		// Save combo text even if we don't successfully login
+		page.saveComboText();
+
+		connectContext = createConnectContext();
+
+		try {
+			targetID = IDFactory.getDefault().createID(
+					container.getConnectNamespace(), connectID);
+		} catch (final IDCreateException e) {
+			new IDCreateErrorDialog(null, connectID, e).open();
+			return false;
+		}
+
+		// Save combo items if targetID created successfully
+		page.saveComboItems();
+
+		final IPresenceContainerAdapter adapter = (IPresenceContainerAdapter) container
+				.getAdapter(IPresenceContainerAdapter.class);
+
+		container.addListener(new IContainerListener() {
+			public void handleEvent(IContainerEvent event) {
+				if (event instanceof IContainerConnectedEvent) {
+					Display.getDefault().asyncExec(new Runnable() {
+						public void run() {
+							openView();
+						}
+					});
+				}
+			}
+		});
+
+		final IChatManager icm = adapter.getChatManager();
+		icms = icm.getChatMessageSender();
+		itms = icm.getTypingMessageSender();
+
+		icm.addMessageListener(new IIMMessageListener() {
+			public void handleMessageEvent(IIMMessageEvent e) {
+				if (e instanceof IChatMessageEvent) {
+					displayMessage((IChatMessageEvent) e);
+				} else if (e instanceof ITypingMessageEvent) {
+					displayTypingNotification((ITypingMessageEvent) e);
+				}
+			}
+		});
+
+		final ISendFileTransferContainerAdapter ioftca = (ISendFileTransferContainerAdapter) container
+				.getAdapter(ISendFileTransferContainerAdapter.class);
+		ioftca.addListener(requestListener);
+		// Connect
+		new AsynchContainerConnectAction(container, targetID, connectContext,
+				null, new Runnable() {
+					public void run() {
+						cachePassword(connectID, password);
+					}
+				}).run();
+
+		return true;
+	}
+
+	protected void cachePassword(final String connectID, String password) {
+		if (password != null && !password.equals("")) {
+			final PasswordCacheHelper pwStorage = new PasswordCacheHelper(
+					connectID);
+			pwStorage.savePassword(password);
+		}
+	}
+
+	protected IConnectContext createConnectContext() {
+		return ConnectContextFactory.createPasswordConnectContext(page
+				.getPassword());
+	}
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java
index 16e792c..c58b941 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java
@@ -1,52 +1,117 @@
-/****************************************************************************
- * Copyright (c) 2007 Remy Suen, 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:
- *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
-
-import org.eclipse.ecf.core.ContainerCreateException;
-import org.eclipse.ecf.core.ContainerFactory;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbench;
-
-
-public final class XMPPSConnectWizard extends XMPPConnectWizard {
-
-	public XMPPSConnectWizard() {
-		super();
-	}
-	
-	public XMPPSConnectWizard(String uri) {
-		super(uri);
-	}
-	
-	public void addPages() {
-		page = new XMPPSConnectWizardPage(usernameAtHost);
-		addPage(page);
-	}
-
-	public void init(IWorkbench workbench, IContainer container) {
-		super.init(workbench, container);
-
-		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);
-	}
-
-	public void init(IWorkbench workbench, IStructuredSelection selection) {
-		super.init(workbench, selection);
-		try {
-			this.container = ContainerFactory.getDefault().createContainer("ecf.xmpps.smack");
-		} catch (ContainerCreateException e) {
-			// None
-		}
-
-		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);
-	}
-}
+/****************************************************************************
+ * Copyright (c) 2007 Remy Suen, 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:
+ *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
+
+import java.io.IOException;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import org.eclipse.ecf.core.*;
+import org.eclipse.ecf.core.security.*;
+import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbench;
+
+public final class XMPPSConnectWizard extends XMPPConnectWizard {
+
+	public XMPPSConnectWizard() {
+		super();
+	}
+
+	public XMPPSConnectWizard(String uri) {
+		super(uri);
+	}
+
+	public void addPages() {
+		page = new XMPPSConnectWizardPage(usernameAtHost);
+		addPage(page);
+	}
+
+	public void init(IWorkbench workbench, IContainer container) {
+		super.init(workbench, container);
+
+		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);
+	}
+
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		super.init(workbench, selection);
+		try {
+			this.container = ContainerFactory.getDefault().createContainer(
+					"ecf.xmpps.smack");
+		} catch (ContainerCreateException e) {
+			// None
+		}
+
+		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);
+	}
+
+	protected IConnectContext createConnectContext() {
+		// Extract passwords from page prior to widget disposal:
+		final String password = page.getPassword();
+		final String keystorePassword = ((XMPPSConnectWizardPage) page)
+				.getKeystorePassword();
+
+		// Use a context capable of both ECF and javax.security Callback:
+		return new IConnectContext() {
+			public CallbackHandler getCallbackHandler() {
+				return new DualCallbackHandler(password, keystorePassword);
+			}
+		};
+	}
+
+	/**
+	 * <p>
+	 * Wrapper class for handling both ECF and javax.security Callback needs.
+	 * Will delegate ECF Callback to a handler created by
+	 * {@link ConnectContextFactory}.
+	 * </p>
+	 * <p>
+	 * Currently only handles
+	 * {@link javax.security.auth.callback.PasswordCallback} for javax.security
+	 * Callback for XMPPConnection class from org.jivesoftware.smack.
+	 * </p>
+	 * 
+	 * @author T. Yueh
+	 */
+	class DualCallbackHandler implements CallbackHandler,
+			javax.security.auth.callback.CallbackHandler {
+		/**
+		 * Handler for all ECF Callback.
+		 */
+		CallbackHandler delegate;
+
+		/**
+		 * User input for keystore password. Since keystore impl (PKI vs JKS vs
+		 * etc) is hidden via interface, all that is necessary is a password.
+		 */
+		String keystorePassword;
+
+		public DualCallbackHandler(String password, String keystorePassword) {
+			delegate = ConnectContextFactory.createPasswordConnectContext(
+					password).getCallbackHandler();
+			this.keystorePassword = keystorePassword;
+		}
+
+		public void handle(Callback[] acallback) throws IOException,
+				UnsupportedCallbackException {
+			for (int i = 0; i < acallback.length; i++)
+				if (acallback[i] instanceof PasswordCallback)
+					((javax.security.auth.callback.PasswordCallback) acallback[i])
+							.setPassword(keystorePassword.toCharArray());
+
+		}
+
+		public void handle(org.eclipse.ecf.core.security.Callback[] callbacks)
+				throws IOException,
+				org.eclipse.ecf.core.security.UnsupportedCallbackException {
+			delegate.handle(callbacks);
+		}
+	}
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java
index 0d91872..fbbccc0 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java
@@ -1,133 +1,144 @@
-/****************************************************************************
- * Copyright (c) 2007 Remy Suen, 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:
- *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
-
-import java.util.regex.Matcher;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-
-final class XMPPSConnectWizardPage extends XMPPConnectWizardPage {
-
-	XMPPSConnectWizardPage() {
-		super();
-		setTitle(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TITLE);
-		setDescription(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION);
-		setPageComplete(false);
-	}
-
-	XMPPSConnectWizardPage(String usernameAtHost) {
-		this();
-		this.usernameAtHost = usernameAtHost;
-	}
-
-	private void verify() {
-		final String text = connectText.getText();
-		if (text.equals("")) { //$NON-NLS-1$
-			updateStatus(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_STATUS);
-		} else {
-			final Matcher matcher = emailPattern.matcher(text);
-			if (!matcher.matches()) {
-				updateStatus(Messages.XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE);
-			} else {
-				restorePassword(text);
-				updateStatus(null);
-			}
-		}
-	}
-
-	public void createControl(Composite parent) {
-
-		parent = new Composite(parent, SWT.NONE);
-
-		parent.setLayout(new GridLayout());
-		final GridData fillData = new GridData(SWT.FILL, SWT.CENTER, true,
-				false);
-		final GridData endData = new GridData(SWT.FILL, SWT.CENTER, true,
-				false, 2, 1);
-
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(Messages.XMPPConnectWizardPage_LABEL_USERID);
-
-		connectText = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.DROP_DOWN);
-		connectText.setLayoutData(fillData);
-		connectText.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				verify();
-			}
-		});
-		connectText.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) {
-				verify();
-			}
-
-			public void widgetSelected(SelectionEvent e) {
-				verify();
-			}
-		});
-
-		label = new Label(parent, SWT.RIGHT);
-		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE);
-		label.setLayoutData(endData);
-
-		label = new Label(parent, SWT.LEFT);
-		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER);
-
-		serverText = new Text(parent, SWT.SINGLE | SWT.BORDER);
-		serverText.setLayoutData(fillData);
-		serverText.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				verify();
-			}
-		});
-		serverText.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) {
-				verify();
-			}
-
-			public void widgetSelected(SelectionEvent e) {
-				verify();
-			}
-		});
-
-		label = new Label(parent, SWT.RIGHT);
-		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT);
-		label.setLayoutData(endData);
-
-		label = new Label(parent, SWT.LEFT);
-		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD);
-		passwordText = new Text(parent, SWT.SINGLE | SWT.PASSWORD | SWT.BORDER);
-		passwordText.setLayoutData(fillData);
-
-		restoreCombo();
-
-		if (usernameAtHost != null) {
-			connectText.setText(usernameAtHost);
-			restorePassword(usernameAtHost);
-			passwordText.setFocus();
-		}
-
-		verify();
-
-		if (connectText.getText().equals("")) {
-			updateStatus(null);
-			setPageComplete(false);
-		} else if (isPageComplete())
-			passwordText.setFocus();
-
-		org.eclipse.jface.dialogs.Dialog.applyDialogFont(parent);
-		setControl(parent);
-	}
-
-}
+/****************************************************************************
+ * Copyright (c) 2007 Remy Suen, 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:
+ *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
+
+import java.util.regex.Matcher;
+import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.*;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+
+final class XMPPSConnectWizardPage extends XMPPConnectWizardPage {
+
+	private Text keystorePasswordText;
+
+	XMPPSConnectWizardPage() {
+		super();
+		setTitle(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TITLE);
+		setDescription(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION);
+		setPageComplete(false);
+	}
+
+	XMPPSConnectWizardPage(String usernameAtHost) {
+		this();
+		this.usernameAtHost = usernameAtHost;
+	}
+
+	private void verify() {
+		final String text = connectText.getText();
+		if (text.equals("")) { //$NON-NLS-1$
+			updateStatus(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_STATUS);
+		} else {
+			final Matcher matcher = emailPattern.matcher(text);
+			if (!matcher.matches()) {
+				updateStatus(Messages.XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE);
+			} else {
+				restorePassword(text);
+				updateStatus(null);
+			}
+		}
+	}
+
+	public void createControl(Composite parent) {
+
+		parent = new Composite(parent, SWT.NONE);
+
+		parent.setLayout(new GridLayout());
+		final GridData fillData = new GridData(SWT.FILL, SWT.CENTER, true,
+				false);
+		final GridData endData = new GridData(SWT.FILL, SWT.CENTER, true,
+				false, 2, 1);
+
+		Label label = new Label(parent, SWT.LEFT);
+		label.setText(Messages.XMPPConnectWizardPage_LABEL_USERID);
+
+		connectText = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.DROP_DOWN);
+		connectText.setLayoutData(fillData);
+		connectText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				verify();
+			}
+		});
+		connectText.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				verify();
+			}
+
+			public void widgetSelected(SelectionEvent e) {
+				verify();
+			}
+		});
+
+		label = new Label(parent, SWT.RIGHT);
+		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE);
+		label.setLayoutData(endData);
+
+		label = new Label(parent, SWT.LEFT);
+		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER);
+
+		serverText = new Text(parent, SWT.SINGLE | SWT.BORDER);
+		serverText.setLayoutData(fillData);
+		serverText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				verify();
+			}
+		});
+		serverText.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				verify();
+			}
+
+			public void widgetSelected(SelectionEvent e) {
+				verify();
+			}
+		});
+
+		label = new Label(parent, SWT.RIGHT);
+		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT);
+		label.setLayoutData(endData);
+
+		label = new Label(parent, SWT.LEFT);
+		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD);
+		passwordText = new Text(parent, SWT.SINGLE | SWT.PASSWORD | SWT.BORDER);
+		passwordText.setLayoutData(fillData);
+
+		restoreCombo();
+
+		label = new Label(parent, SWT.LEFT);
+		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_KEYSTORE_PASSWORD);
+		keystorePasswordText = new Text(parent, SWT.SINGLE | SWT.PASSWORD
+				| SWT.BORDER);
+		keystorePasswordText.setLayoutData(fillData);
+
+		if (usernameAtHost != null) {
+			connectText.setText(usernameAtHost);
+			restorePassword(usernameAtHost);
+			passwordText.setFocus();
+		}
+
+		verify();
+
+		if (connectText.getText().equals("")) {
+			updateStatus(null);
+			setPageComplete(false);
+		} else if (isPageComplete())
+			passwordText.setFocus();
+
+		org.eclipse.jface.dialogs.Dialog.applyDialogFont(parent);
+		setControl(parent);
+	}
+
+	String getKeystorePassword() {
+		return keystorePasswordText.getText();
+	}
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java
index 65525f7..620938d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java
@@ -1,508 +1,522 @@
-/*******************************************************************************
- * 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.internal.provider.xmpp.smack;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.ecf.core.ContainerConnectException;
-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.util.ECFException;
-import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin;
-import org.eclipse.ecf.provider.comm.DisconnectEvent;
-import org.eclipse.ecf.provider.comm.IAsynchEventHandler;
-import org.eclipse.ecf.provider.comm.IConnectionListener;
-import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;
-import org.eclipse.ecf.provider.xmpp.identity.XMPPID;
-import org.eclipse.ecf.provider.xmpp.identity.XMPPRoomID;
-import org.jivesoftware.smack.Chat;
-import org.jivesoftware.smack.ConnectionConfiguration;
-import org.jivesoftware.smack.ConnectionListener;
-import org.jivesoftware.smack.MessageListener;
-import org.jivesoftware.smack.PacketListener;
-import org.jivesoftware.smack.Roster;
-import org.jivesoftware.smack.RosterEntry;
-import org.jivesoftware.smack.SASLAuthentication;
-import org.jivesoftware.smack.SmackConfiguration;
-import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.packet.Bind;
-import org.jivesoftware.smack.packet.IQ;
-import org.jivesoftware.smack.packet.Message;
-import org.jivesoftware.smack.packet.Message.Type;
-import org.jivesoftware.smack.packet.Packet;
-import org.jivesoftware.smack.packet.Presence;
-
-public class ECFConnection implements ISynchAsynchConnection {
-
-	/**
-	 * 
-	 */
-	private static final String GOOGLE_TALK_HOST = "talk.google.com";
-	public static final String CLIENT_TYPE = "ecf.";
-	public static final boolean DEBUG = Boolean.getBoolean("smack.debug");
-
-	protected static final String STRING_ENCODING = "UTF-8";
-	public static final String OBJECT_PROPERTY_NAME = ECFConnection.class
-			.getName() + ".object";
-	protected static final int XMPP_DEFAULT_PORT = 5222;
-	protected static final int XMPPS_DEFAULT_PORT = 5223;
-
-	private XMPPConnection connection = null;
-	private IAsynchEventHandler handler = null;
-	private boolean isStarted = false;
-	private int serverPort = -1;
-	private String serverResource;
-	private final Map properties = null;
-	private boolean isConnected = false;
-	private Namespace namespace = null;
-
-	private boolean google = false;
-
-	private boolean disconnecting = false;
-
-	private int BIND_TIMEOUT = new Integer(System.getProperty(
-			"org.eclipse.ecf.provider.xmpp.ECFConnection.bindTimeout", "15000"))
-			.intValue();
-
-	private Object bindLock = new Object();
-
-	private String jid;
-
-	private final PacketListener packetListener = new PacketListener() {
-		public void processPacket(Packet arg0) {
-			handlePacket(arg0);
-		}
-	};
-
-	private final ConnectionListener connectionListener = new ConnectionListener() {
-		public void connectionClosed() {
-			handleConnectionClosed(new IOException("Connection reset by peer"));
-		}
-
-		public void connectionClosedOnError(Exception e) {
-			handleConnectionClosed(e);
-		}
-
-		public void reconnectingIn(int seconds) {
-		}
-
-		public void reconnectionFailed(Exception e) {
-		}
-
-		public void reconnectionSuccessful() {
-		}
-	};
-
-	protected void logException(String msg, Throwable t) {
-		XmppPlugin.log(msg, t);
-	}
-
-	public Map getProperties() {
-		return properties;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter == null)
-			return null;
-		if (adapter.isInstance(this))
-			return this;
-		final IAdapterManager adapterManager = XmppPlugin.getDefault()
-				.getAdapterManager();
-		return (adapterManager == null) ? null : adapterManager.loadAdapter(
-				this, adapter.getName());
-	}
-
-	public XMPPConnection getXMPPConnection() {
-		return connection;
-	}
-
-	public ECFConnection(boolean google, Namespace ns, IAsynchEventHandler h) {
-		this.handler = h;
-		this.namespace = ns;
-		this.google = google;
-		if (DEBUG)
-			XMPPConnection.DEBUG_ENABLED = true;
-	}
-
-	protected String getPasswordForObject(Object data) {
-		String password = null;
-		try {
-			password = (String) data;
-		} catch (final ClassCastException e) {
-			return null;
-		}
-		return password;
-	}
-
-	private XMPPID getXMPPID(ID remote) throws ECFException {
-		XMPPID jabberID = null;
-		try {
-			jabberID = (XMPPID) remote;
-		} catch (final ClassCastException e) {
-			throw new ECFException(e);
-		}
-		return jabberID;
-	}
-
-	public synchronized Object connect(ID remote, Object data, int timeout)
-			throws ECFException {
-		if (connection != null)
-			throw new ECFException("already connected");
-		if (timeout > 0)
-			SmackConfiguration.setPacketReplyTimeout(timeout);
-		Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);
-
-		final XMPPID jabberURI = getXMPPID(remote);
-
-		String username = jabberURI.getNodename();
-		String hostname = jabberURI.getHostname();
-		String hostnameOverride = null;
-
-		// Check for the URI form of "joe@bloggs.org;talk.google.com", which
-		// would at this point would have
-		// - username = "joe"
-		// - hostname = "blogs.org;talk.google.com"
-		// - hostnameOverride = null
-		//
-		// We need to turn this into:
-		// - username = "joe"
-		// - hostname = "bloggs.org"
-		// - hostnameOverride = "talk.google.com"
-
-		int semiColonIdx = hostname.lastIndexOf(';');
-		if (semiColonIdx != -1) {
-			hostnameOverride = hostname.substring(semiColonIdx + 1);
-			hostname = hostname.substring(0, semiColonIdx);
-		}
-
-		if (google && hostnameOverride == null) {
-			hostnameOverride = GOOGLE_TALK_HOST;
-		}
-		final String serviceName = hostname;
-
-		serverPort = jabberURI.getPort();
-		serverResource = jabberURI.getResourceName();
-		if (serverResource == null
-				|| serverResource.equals(XMPPID.PATH_DELIMITER)) {
-			serverResource = getClientIdentifier();
-			jabberURI.setResourceName(serverResource);
-		}
-		try {
-			ConnectionConfiguration config;
-			if (hostnameOverride != null) {
-				config = new ConnectionConfiguration(hostnameOverride,
-						XMPP_DEFAULT_PORT, serviceName);
-			} else if (serverPort == -1) {
-				config = new ConnectionConfiguration(serviceName);
-			} else {
-				config = new ConnectionConfiguration(serviceName, serverPort);
-			}
-			config.setSendPresence(true);
-			connection = new XMPPConnection(config);
-			connection.connect();
-
-			SASLAuthentication.supportSASLMechanism("PLAIN", 0);
-
-			if (google || GOOGLE_TALK_HOST.equals(hostnameOverride)) {
-				username = username + "@" + serviceName;
-			}
-
-			connection.addPacketListener(packetListener, null);
-			connection.addConnectionListener(connectionListener);
-
-			// Login
-			connection.login(username, (String) data, serverResource);
-
-			waitForBindResult();
-
-		} catch (final XMPPException e) {
-			throw new ContainerConnectException("Login attempt failed", e);
-		}
-		return jid;
-	}
-
-	private void waitForBindResult() throws XMPPException {
-		// We'll wait a maximum of
-		long bindTimeout = System.currentTimeMillis() + BIND_TIMEOUT;
-		synchronized (bindLock) {
-			while (jid == null && System.currentTimeMillis() < bindTimeout) {
-				try {
-					bindLock.wait(1000);
-				} catch (InterruptedException e) {
-				}
-			}
-			if (jid == null)
-				throw new XMPPException(
-						"timeout waiting for server bind result");
-			isConnected = true;
-		}
-	}
-
-	private String getClientIdentifier() {
-		return CLIENT_TYPE + handler.getEventHandlerID().getName();
-	}
-
-	public void sendPacket(Packet packet) throws XMPPException {
-		if (connection != null)
-			connection.sendPacket(packet);
-	}
-
-	public synchronized void disconnect() {
-		disconnecting = true;
-		if (isStarted()) {
-			stop();
-		}
-		if (connection != null) {
-			connection.removePacketListener(packetListener);
-			connection.removeConnectionListener(connectionListener);
-			connection.disconnect();
-			connection = null;
-			synchronized (bindLock) {
-				jid = null;
-				isConnected = false;
-			}
-		}
-	}
-
-	public synchronized boolean isConnected() {
-		return (isConnected);
-	}
-
-	public synchronized ID getLocalID() {
-		if (!isConnected())
-			return null;
-		try {
-			return IDFactory.getDefault().createID(namespace.getName(),
-					new Object[] { connection.getConnectionID() });
-		} catch (final Exception e) {
-			logException("Exception in getLocalID", e);
-			return null;
-		}
-	}
-
-	public synchronized void start() {
-		if (isStarted())
-			return;
-		isStarted = true;
-	}
-
-	public boolean isStarted() {
-		return isStarted;
-	}
-
-	public synchronized void stop() {
-		isStarted = false;
-	}
-
-	protected void handleConnectionClosed(Exception e) {
-		if (!disconnecting) {
-			disconnecting = true;
-			handler.handleDisconnectEvent(new DisconnectEvent(this, e, null));
-		}
-	}
-
-	protected void handlePacket(Packet arg0) {
-		handleJidPacket(arg0);
-		try {
-			final Object val = arg0.getProperty(OBJECT_PROPERTY_NAME);
-			if (val != null) {
-				handler.handleAsynchEvent(new ECFConnectionObjectPacketEvent(
-						this, arg0, val));
-			} else {
-				handler.handleAsynchEvent(new ECFConnectionPacketEvent(this,
-						arg0));
-			}
-		} catch (final IOException e) {
-			logException("Exception in handleAsynchEvent", e);
-			try {
-				disconnect();
-			} catch (final Exception e1) {
-				logException("Exception in disconnect()", e1);
-			}
-		}
-	}
-
-	private void handleJidPacket(Packet packet) {
-		if (jid != null)
-			return;
-		if (packet instanceof IQ) {
-			IQ iqPacket = (IQ) packet;
-			if (iqPacket.getType().equals(IQ.Type.RESULT)
-					&& iqPacket instanceof Bind) {
-				Bind bindPacket = (Bind) iqPacket;
-				synchronized (bindLock) {
-					jid = bindPacket.getJid();
-					bindLock.notify();
-				}
-			}
-		}
-	}
-
-	public synchronized void sendAsynch(ID receiver, byte[] data)
-			throws IOException {
-		if (data == null)
-			throw new IOException("no data");
-		final Message aMsg = new Message();
-		aMsg.setProperty(OBJECT_PROPERTY_NAME, data);
-		sendMessage(receiver, aMsg);
-	}
-
-	protected void sendMessage(ID receiver, Message aMsg) throws IOException {
-		synchronized (this) {
-			if (!isConnected())
-				throw new IOException("not connected");
-			try {
-				if (receiver == null)
-					throw new IOException(
-							"receiver cannot be null for xmpp instant messaging");
-				else if (receiver instanceof XMPPID) {
-					final XMPPID rcvr = (XMPPID) receiver;
-					aMsg.setType(Message.Type.chat);
-					final String receiverName = rcvr.getFQName();
-					final Chat localChat = connection.getChatManager()
-							.createChat(receiverName, new MessageListener() {
-								public void processMessage(Chat chat,
-										Message message) {
-								}
-							});
-					localChat.sendMessage(aMsg);
-				} else if (receiver instanceof XMPPRoomID) {
-					final XMPPRoomID roomID = (XMPPRoomID) receiver;
-					aMsg.setType(Message.Type.groupchat);
-					final String to = roomID.getMucString();
-					aMsg.setTo(to);
-					connection.sendPacket(aMsg);
-				} else
-					throw new IOException(
-							"receiver must be of type XMPPID or XMPPRoomID");
-			} catch (final XMPPException e) {
-				final IOException result = new IOException(
-						"XMPPException in sendMessage: " + e.getMessage());
-				result.setStackTrace(e.getStackTrace());
-				throw result;
-			}
-		}
-	}
-
-	public synchronized Object sendSynch(ID receiver, byte[] data)
-			throws IOException {
-		if (data == null)
-			throw new IOException("data cannot be null");
-		// This is assumed to be disconnect...so we'll just disconnect
-		// disconnect();
-		return null;
-	}
-
-	public void addListener(IConnectionListener listener) {
-		// XXX Not yet implemented
-	}
-
-	public void removeListener(IConnectionListener listener) {
-		// XXX Not yet implemented
-	}
-
-	public void sendMessage(ID target, String message) throws IOException {
-		if (target == null)
-			throw new IOException("target cannot be null");
-		if (message == null)
-			throw new IOException("message cannot be null");
-		final Message aMsg = new Message();
-		aMsg.setBody(message);
-		sendMessage(target, aMsg);
-	}
-
-	public static Map getPropertiesFromPacket(Packet packet) {
-		final Map result = new HashMap();
-		final Iterator i = packet.getPropertyNames().iterator();
-		for (; i.hasNext();) {
-			final String name = (String) i.next();
-			result.put(name, packet.getProperty(name));
-		}
-		return result;
-	}
-
-	public static Packet setPropertiesInPacket(Packet input, Map properties) {
-		if (properties != null) {
-			for (final Iterator i = properties.keySet().iterator(); i.hasNext();) {
-				final Object keyo = i.next();
-				final Object val = properties.get(keyo);
-				final String key = (keyo instanceof String) ? (String) keyo
-						: keyo.toString();
-				input.setProperty(key, val);
-			}
-		}
-		return input;
-	}
-
-	public void sendMessage(ID target, ID thread, Type type, String subject,
-			String body, Map properties2) throws IOException {
-		if (target == null)
-			throw new IOException("XMPP target for message cannot be null");
-		if (body == null)
-			body = "";
-		final Message aMsg = new Message();
-		aMsg.setBody(body);
-		if (thread != null)
-			aMsg.setThread(thread.getName());
-		if (type != null)
-			aMsg.setType(type);
-		if (subject != null)
-			aMsg.setSubject(subject);
-		setPropertiesInPacket(aMsg, properties2);
-		sendMessage(target, aMsg);
-	}
-
-	public void sendPresenceUpdate(ID target, Presence presence)
-			throws IOException {
-		if (presence == null)
-			throw new IOException("presence cannot be null");
-		presence.setFrom(connection.getUser());
-		if (target != null)
-			presence.setTo(target.getName());
-		synchronized (this) {
-			if (!isConnected())
-				throw new IOException("not connected");
-			connection.sendPacket(presence);
-		}
-	}
-
-	public void sendRosterAdd(String user, String name, String[] groups)
-			throws IOException, XMPPException {
-		final Roster r = getRoster();
-		r.createEntry(user, name, groups);
-	}
-
-	public void sendRosterRemove(String user) throws XMPPException, IOException {
-		final Roster r = getRoster();
-		final RosterEntry re = r.getEntry(user);
-		r.removeEntry(re);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ecf.provider.xmpp.IIMMessageSender#getRoster()
-	 */
-	public Roster getRoster() throws IOException {
-		if (connection == null || !connection.isConnected())
-			return null;
-		return connection.getRoster();
-	}
-
-}
+/*******************************************************************************
+ * 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.internal.provider.xmpp.smack;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.core.runtime.IAdapterManager;
+import org.eclipse.ecf.core.ContainerConnectException;
+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.security.CallbackHandler;
+import org.eclipse.ecf.core.util.ECFException;
+import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin;
+import org.eclipse.ecf.provider.comm.DisconnectEvent;
+import org.eclipse.ecf.provider.comm.IAsynchEventHandler;
+import org.eclipse.ecf.provider.comm.IConnectionListener;
+import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;
+import org.eclipse.ecf.provider.xmpp.identity.XMPPID;
+import org.eclipse.ecf.provider.xmpp.identity.XMPPRoomID;
+import org.jivesoftware.smack.Chat;
+import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.ConnectionListener;
+import org.jivesoftware.smack.MessageListener;
+import org.jivesoftware.smack.PacketListener;
+import org.jivesoftware.smack.Roster;
+import org.jivesoftware.smack.RosterEntry;
+import org.jivesoftware.smack.SASLAuthentication;
+import org.jivesoftware.smack.SmackConfiguration;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
+import org.jivesoftware.smack.packet.Bind;
+import org.jivesoftware.smack.packet.IQ;
+import org.jivesoftware.smack.packet.Message;
+import org.jivesoftware.smack.packet.Message.Type;
+import org.jivesoftware.smack.packet.Packet;
+import org.jivesoftware.smack.packet.Presence;
+
+public class ECFConnection implements ISynchAsynchConnection {
+
+	/**
+	 * 
+	 */
+	private static final String GOOGLE_TALK_HOST = "talk.google.com";
+	public static final String CLIENT_TYPE = "ecf.";
+	public static final boolean DEBUG = Boolean.getBoolean("smack.debug");
+
+	protected static final String STRING_ENCODING = "UTF-8";
+	public static final String OBJECT_PROPERTY_NAME = ECFConnection.class
+			.getName() + ".object";
+	protected static final int XMPP_DEFAULT_PORT = 5222;
+	protected static final int XMPPS_DEFAULT_PORT = 5223;
+
+	private XMPPConnection connection = null;
+	private IAsynchEventHandler handler = null;
+	private boolean isStarted = false;
+	private int serverPort = -1;
+	private String serverResource;
+	private final Map properties = null;
+	private boolean isConnected = false;
+	private Namespace namespace = null;
+
+	private boolean google = false;
+
+	private boolean disconnecting = false;
+
+	private int BIND_TIMEOUT = new Integer(System.getProperty(
+			"org.eclipse.ecf.provider.xmpp.ECFConnection.bindTimeout", "15000"))
+			.intValue();
+
+	private Object bindLock = new Object();
+
+	private String jid;
+
+	private CallbackHandler callbackHandler;
+
+	private final PacketListener packetListener = new PacketListener() {
+		public void processPacket(Packet arg0) {
+			handlePacket(arg0);
+		}
+	};
+
+	private final ConnectionListener connectionListener = new ConnectionListener() {
+		public void connectionClosed() {
+			handleConnectionClosed(new IOException("Connection reset by peer"));
+		}
+
+		public void connectionClosedOnError(Exception e) {
+			handleConnectionClosed(e);
+		}
+
+		public void reconnectingIn(int seconds) {
+		}
+
+		public void reconnectionFailed(Exception e) {
+		}
+
+		public void reconnectionSuccessful() {
+		}
+	};
+
+	protected void logException(String msg, Throwable t) {
+		XmppPlugin.log(msg, t);
+	}
+
+	public Map getProperties() {
+		return properties;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	public Object getAdapter(Class adapter) {
+		if (adapter == null)
+			return null;
+		if (adapter.isInstance(this))
+			return this;
+		final IAdapterManager adapterManager = XmppPlugin.getDefault()
+				.getAdapterManager();
+		return (adapterManager == null) ? null : adapterManager.loadAdapter(
+				this, adapter.getName());
+	}
+
+	public XMPPConnection getXMPPConnection() {
+		return connection;
+	}
+
+	public ECFConnection(boolean google, Namespace ns, IAsynchEventHandler h) {
+		this(google, ns, h, null);
+	}
+
+	public ECFConnection(boolean google, Namespace ns, IAsynchEventHandler h,
+			CallbackHandler ch) {
+		this.handler = h;
+		this.namespace = ns;
+		this.google = google;
+		this.callbackHandler = ch;
+		if (DEBUG)
+			XMPPConnection.DEBUG_ENABLED = true;
+	}
+
+	protected String getPasswordForObject(Object data) {
+		String password = null;
+		try {
+			password = (String) data;
+		} catch (final ClassCastException e) {
+			return null;
+		}
+		return password;
+	}
+
+	private XMPPID getXMPPID(ID remote) throws ECFException {
+		XMPPID jabberID = null;
+		try {
+			jabberID = (XMPPID) remote;
+		} catch (final ClassCastException e) {
+			throw new ECFException(e);
+		}
+		return jabberID;
+	}
+
+	public synchronized Object connect(ID remote, Object data, int timeout)
+			throws ECFException {
+		if (connection != null)
+			throw new ECFException("already connected");
+		if (timeout > 0)
+			SmackConfiguration.setPacketReplyTimeout(timeout);
+		Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);
+
+		final XMPPID jabberURI = getXMPPID(remote);
+
+		String username = jabberURI.getNodename();
+		String hostname = jabberURI.getHostname();
+		String hostnameOverride = null;
+
+		// Check for the URI form of "joe@bloggs.org;talk.google.com", which
+		// would at this point would have
+		// - username = "joe"
+		// - hostname = "blogs.org;talk.google.com"
+		// - hostnameOverride = null
+		//
+		// We need to turn this into:
+		// - username = "joe"
+		// - hostname = "bloggs.org"
+		// - hostnameOverride = "talk.google.com"
+
+		int semiColonIdx = hostname.lastIndexOf(';');
+		if (semiColonIdx != -1) {
+			hostnameOverride = hostname.substring(semiColonIdx + 1);
+			hostname = hostname.substring(0, semiColonIdx);
+		}
+
+		if (google && hostnameOverride == null) {
+			hostnameOverride = GOOGLE_TALK_HOST;
+		}
+		final String serviceName = hostname;
+
+		serverPort = jabberURI.getPort();
+		serverResource = jabberURI.getResourceName();
+		if (serverResource == null
+				|| serverResource.equals(XMPPID.PATH_DELIMITER)) {
+			serverResource = getClientIdentifier();
+			jabberURI.setResourceName(serverResource);
+		}
+		try {
+			ConnectionConfiguration config;
+			if (hostnameOverride != null) {
+				config = new ConnectionConfiguration(hostnameOverride,
+						XMPP_DEFAULT_PORT, serviceName);
+			} else if (serverPort == -1) {
+				config = new ConnectionConfiguration(serviceName);
+			} else {
+				config = new ConnectionConfiguration(serviceName, serverPort);
+			}
+			config.setSendPresence(true);
+			// Handler is only used if server requires certificate for
+			// authentication; handler should provide keystore password:
+			if (callbackHandler instanceof javax.security.auth.callback.CallbackHandler) {
+				config.setCallbackHandler((javax.security.auth.callback.CallbackHandler) callbackHandler);
+			}
+			connection = new XMPPConnection(config);
+			connection.connect();
+
+			SASLAuthentication.supportSASLMechanism("PLAIN", 0);
+
+			if (google || GOOGLE_TALK_HOST.equals(hostnameOverride)) {
+				username = username + "@" + serviceName;
+			}
+
+			connection.addPacketListener(packetListener, null);
+			connection.addConnectionListener(connectionListener);
+
+			// Login
+			connection.login(username, (String) data, serverResource);
+
+			waitForBindResult();
+
+		} catch (final XMPPException e) {
+			throw new ContainerConnectException("Login attempt failed", e);
+		}
+		return jid;
+	}
+
+	private void waitForBindResult() throws XMPPException {
+		// We'll wait a maximum of
+		long bindTimeout = System.currentTimeMillis() + BIND_TIMEOUT;
+		synchronized (bindLock) {
+			while (jid == null && System.currentTimeMillis() < bindTimeout) {
+				try {
+					bindLock.wait(1000);
+				} catch (InterruptedException e) {
+				}
+			}
+			if (jid == null)
+				throw new XMPPException(
+						"timeout waiting for server bind result");
+			isConnected = true;
+		}
+	}
+
+	private String getClientIdentifier() {
+		return CLIENT_TYPE + handler.getEventHandlerID().getName();
+	}
+
+	public void sendPacket(Packet packet) throws XMPPException {
+		if (connection != null)
+			connection.sendPacket(packet);
+	}
+
+	public synchronized void disconnect() {
+		disconnecting = true;
+		if (isStarted()) {
+			stop();
+		}
+		if (connection != null) {
+			connection.removePacketListener(packetListener);
+			connection.removeConnectionListener(connectionListener);
+			connection.disconnect();
+			connection = null;
+			synchronized (bindLock) {
+				jid = null;
+				isConnected = false;
+			}
+		}
+	}
+
+	public synchronized boolean isConnected() {
+		return (isConnected);
+	}
+
+	public synchronized ID getLocalID() {
+		if (!isConnected())
+			return null;
+		try {
+			return IDFactory.getDefault().createID(namespace.getName(),
+					new Object[] { connection.getConnectionID() });
+		} catch (final Exception e) {
+			logException("Exception in getLocalID", e);
+			return null;
+		}
+	}
+
+	public synchronized void start() {
+		if (isStarted())
+			return;
+		isStarted = true;
+	}
+
+	public boolean isStarted() {
+		return isStarted;
+	}
+
+	public synchronized void stop() {
+		isStarted = false;
+	}
+
+	protected void handleConnectionClosed(Exception e) {
+		if (!disconnecting) {
+			disconnecting = true;
+			handler.handleDisconnectEvent(new DisconnectEvent(this, e, null));
+		}
+	}
+
+	protected void handlePacket(Packet arg0) {
+		handleJidPacket(arg0);
+		try {
+			final Object val = arg0.getProperty(OBJECT_PROPERTY_NAME);
+			if (val != null) {
+				handler.handleAsynchEvent(new ECFConnectionObjectPacketEvent(
+						this, arg0, val));
+			} else {
+				handler.handleAsynchEvent(new ECFConnectionPacketEvent(this,
+						arg0));
+			}
+		} catch (final IOException e) {
+			logException("Exception in handleAsynchEvent", e);
+			try {
+				disconnect();
+			} catch (final Exception e1) {
+				logException("Exception in disconnect()", e1);
+			}
+		}
+	}
+
+	private void handleJidPacket(Packet packet) {
+		if (jid != null)
+			return;
+		if (packet instanceof IQ) {
+			IQ iqPacket = (IQ) packet;
+			if (iqPacket.getType().equals(IQ.Type.RESULT)
+					&& iqPacket instanceof Bind) {
+				Bind bindPacket = (Bind) iqPacket;
+				synchronized (bindLock) {
+					jid = bindPacket.getJid();
+					bindLock.notify();
+				}
+			}
+		}
+	}
+
+	public synchronized void sendAsynch(ID receiver, byte[] data)
+			throws IOException {
+		if (data == null)
+			throw new IOException("no data");
+		final Message aMsg = new Message();
+		aMsg.setProperty(OBJECT_PROPERTY_NAME, data);
+		sendMessage(receiver, aMsg);
+	}
+
+	protected void sendMessage(ID receiver, Message aMsg) throws IOException {
+		synchronized (this) {
+			if (!isConnected())
+				throw new IOException("not connected");
+			try {
+				if (receiver == null)
+					throw new IOException(
+							"receiver cannot be null for xmpp instant messaging");
+				else if (receiver instanceof XMPPID) {
+					final XMPPID rcvr = (XMPPID) receiver;
+					aMsg.setType(Message.Type.chat);
+					final String receiverName = rcvr.getFQName();
+					final Chat localChat = connection.getChatManager()
+							.createChat(receiverName, new MessageListener() {
+								public void processMessage(Chat chat,
+										Message message) {
+								}
+							});
+					localChat.sendMessage(aMsg);
+				} else if (receiver instanceof XMPPRoomID) {
+					final XMPPRoomID roomID = (XMPPRoomID) receiver;
+					aMsg.setType(Message.Type.groupchat);
+					final String to = roomID.getMucString();
+					aMsg.setTo(to);
+					connection.sendPacket(aMsg);
+				} else
+					throw new IOException(
+							"receiver must be of type XMPPID or XMPPRoomID");
+			} catch (final XMPPException e) {
+				final IOException result = new IOException(
+						"XMPPException in sendMessage: " + e.getMessage());
+				result.setStackTrace(e.getStackTrace());
+				throw result;
+			}
+		}
+	}
+
+	public synchronized Object sendSynch(ID receiver, byte[] data)
+			throws IOException {
+		if (data == null)
+			throw new IOException("data cannot be null");
+		// This is assumed to be disconnect...so we'll just disconnect
+		// disconnect();
+		return null;
+	}
+
+	public void addListener(IConnectionListener listener) {
+		// XXX Not yet implemented
+	}
+
+	public void removeListener(IConnectionListener listener) {
+		// XXX Not yet implemented
+	}
+
+	public void sendMessage(ID target, String message) throws IOException {
+		if (target == null)
+			throw new IOException("target cannot be null");
+		if (message == null)
+			throw new IOException("message cannot be null");
+		final Message aMsg = new Message();
+		aMsg.setBody(message);
+		sendMessage(target, aMsg);
+	}
+
+	public static Map getPropertiesFromPacket(Packet packet) {
+		final Map result = new HashMap();
+		final Iterator i = packet.getPropertyNames().iterator();
+		for (; i.hasNext();) {
+			final String name = (String) i.next();
+			result.put(name, packet.getProperty(name));
+		}
+		return result;
+	}
+
+	public static Packet setPropertiesInPacket(Packet input, Map properties) {
+		if (properties != null) {
+			for (final Iterator i = properties.keySet().iterator(); i.hasNext();) {
+				final Object keyo = i.next();
+				final Object val = properties.get(keyo);
+				final String key = (keyo instanceof String) ? (String) keyo
+						: keyo.toString();
+				input.setProperty(key, val);
+			}
+		}
+		return input;
+	}
+
+	public void sendMessage(ID target, ID thread, Type type, String subject,
+			String body, Map properties2) throws IOException {
+		if (target == null)
+			throw new IOException("XMPP target for message cannot be null");
+		if (body == null)
+			body = "";
+		final Message aMsg = new Message();
+		aMsg.setBody(body);
+		if (thread != null)
+			aMsg.setThread(thread.getName());
+		if (type != null)
+			aMsg.setType(type);
+		if (subject != null)
+			aMsg.setSubject(subject);
+		setPropertiesInPacket(aMsg, properties2);
+		sendMessage(target, aMsg);
+	}
+
+	public void sendPresenceUpdate(ID target, Presence presence)
+			throws IOException {
+		if (presence == null)
+			throw new IOException("presence cannot be null");
+		presence.setFrom(connection.getUser());
+		if (target != null)
+			presence.setTo(target.getName());
+		synchronized (this) {
+			if (!isConnected())
+				throw new IOException("not connected");
+			connection.sendPacket(presence);
+		}
+	}
+
+	public void sendRosterAdd(String user, String name, String[] groups)
+			throws IOException, XMPPException {
+		final Roster r = getRoster();
+		r.createEntry(user, name, groups);
+	}
+
+	public void sendRosterRemove(String user) throws XMPPException, IOException {
+		final Roster r = getRoster();
+		final RosterEntry re = r.getEntry(user);
+		r.removeEntry(re);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.provider.xmpp.IIMMessageSender#getRoster()
+	 */
+	public Roster getRoster() throws IOException {
+		if (connection == null || !connection.isConnected())
+			return null;
+		return connection.getRoster();
+	}
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java
index 498fbb3..ffe2741 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java
@@ -1,54 +1,58 @@
-/****************************************************************************
- * 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.provider.xmpp;
-
-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.internal.provider.xmpp.XmppPlugin;
-import org.eclipse.ecf.internal.provider.xmpp.smack.ECFConnection;
-import org.eclipse.ecf.provider.comm.ConnectionCreateException;
-import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;
-
-public class XMPPSContainer extends XMPPContainer {
-	public XMPPSContainer() throws Exception {
-		super();
-	}
-
-	/**
-	 * @param ka
-	 * @throws Exception
-	 */
-	public XMPPSContainer(int ka) throws Exception {
-		super(ka);
-	}
-
-	/**
-	 * @param userhost
-	 * @param ka
-	 * @throws Exception
-	 */
-	public XMPPSContainer(String userhost, int ka) throws Exception {
-		super(userhost, ka);
-	}
-
-	public Namespace getConnectNamespace() {
-		return IDFactory.getDefault().getNamespaceByName(
-				XmppPlugin.getDefault().getSecureNamespaceIdentifier());
-	}
-
-	protected ISynchAsynchConnection createConnection(ID remoteSpace,
-			Object data) throws ConnectionCreateException {
-		boolean google = isGoogle(remoteSpace);
-		return new ECFConnection(google, getConnectNamespace(), receiver);
-	}
-
-}
+/****************************************************************************
+ * 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.provider.xmpp;
+
+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.security.CallbackHandler;
+import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin;
+import org.eclipse.ecf.internal.provider.xmpp.smack.ECFConnection;
+import org.eclipse.ecf.provider.comm.ConnectionCreateException;
+import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;
+
+public class XMPPSContainer extends XMPPContainer {
+	public XMPPSContainer() throws Exception {
+		super();
+	}
+
+	/**
+	 * @param ka
+	 * @throws Exception
+	 */
+	public XMPPSContainer(int ka) throws Exception {
+		super(ka);
+	}
+
+	/**
+	 * @param userhost
+	 * @param ka
+	 * @throws Exception
+	 */
+	public XMPPSContainer(String userhost, int ka) throws Exception {
+		super(userhost, ka);
+	}
+
+	public Namespace getConnectNamespace() {
+		return IDFactory.getDefault().getNamespaceByName(
+				XmppPlugin.getDefault().getSecureNamespaceIdentifier());
+	}
+
+	protected ISynchAsynchConnection createConnection(ID remoteSpace,
+			Object data) throws ConnectionCreateException {
+		boolean google = isGoogle(remoteSpace);
+		CallbackHandler ch = data instanceof IConnectContext ? ((IConnectContext) data)
+				.getCallbackHandler() : null;
+		return new ECFConnection(google, getConnectNamespace(), receiver, ch);
+	}
+
+}
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 dc128bb..637d963 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
@@ -1,116 +1,121 @@
-/*******************************************************************************
- *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
- *  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:
- *     Wim Jongman - initial API and implementation   
- *     Ahmed Aadel - initial API and implementation     
- *******************************************************************************/
-package org.eclipse.ecf.provider.zookeeper;
-
-import java.util.Dictionary;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-
-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.internal.BundleStoppingListener;
-import org.eclipse.ecf.provider.zookeeper.util.Logger;
-import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class DiscoveryActivator implements BundleActivator {
-
-	private static BundleContext context;
-	private ServiceRegistration discoveryRegistration;
-	private static Set<BundleStoppingListener> stopListeners = new HashSet<BundleStoppingListener>();
-	private ServiceTracker confTracker, logServiceTraker;
-
-	public void start(final BundleContext ctxt) {
-		context = ctxt;
-		//spawn asynchronously to avoid deadlocks during OSGi bundle startup
-		new Thread(new Runnable() {
-			public void run() {
-				startup(ctxt);
-			}
-		}).start();
-	}
-
-	private void startup(final BundleContext ctxt) {
-		Properties props = new Properties();
-		props.put(IDiscoveryLocator.CONTAINER_NAME,
-				ZooDiscoveryContainerInstantiator.NAME);
-		props.put(IDiscoveryAdvertiser.CONTAINER_NAME,
-				ZooDiscoveryContainerInstantiator.NAME);
-		/*
-		 * Make us available as IDiscoveryLocator and IDiscoveryAdvertiser
-		 * services for OSGi trackers
-		 */
-		discoveryRegistration = ctxt.registerService(new String[] {
-				IDiscoveryLocator.class.getName(),
-				IDiscoveryAdvertiser.class.getName() }, ZooDiscoveryContainer
-				.getSingleton(), (Dictionary) props);
-		ZooDiscoveryContainer.getSingleton().setDiscoveryProperties(props);
-
-		// track OSGi log services
-		DiscoveryActivator.this.logServiceTraker = new ServiceTracker(ctxt,
-				org.osgi.service.log.LogService.class.getName(), null) {
-			public Object addingService(ServiceReference reference) {
-				Logger.bindLogService((LogService) context
-						.getService(reference));
-				return super.addingService(reference);
-			}
-
-			public void removedService(ServiceReference reference,
-					Object service) {
-				Logger.unbindLogService((LogService) service);
-				removedService(reference, service);
-				super.removedService(reference, service); 
-			}
-		};
-		logServiceTraker.open(true);
-	}
-
-	public void stop(BundleContext c) throws Exception {
-		dispose();
-		// prompt we'r gone!
-		PrettyPrinter.prompt(PrettyPrinter.DEACTIVATED, null);
-	}
-
-	private void dispose() {
-		for (BundleStoppingListener l : stopListeners) {
-			l.bundleStopping();
-		}
-		stopListeners.clear();
-		ZooDiscoveryContainer.getSingleton().shutdown();
-		if (this.discoveryRegistration != null) {
-			this.discoveryRegistration.unregister();
-		}
-		if (this.confTracker != null) {
-			this.confTracker.close();
-		}
-		// Initiates an orderly shutdown of all our cached threads
-		ZooDiscoveryContainer.CACHED_THREAD_POOL.shutdown();
-
-	}
-
-	public static BundleContext getContext() {
-		return context;
-	}
-
-	public static void registerBundleStoppingListner(BundleStoppingListener l) {
-		stopListeners.add(l);
-	}
-
-}
+/*******************************************************************************
+ *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
+ *  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:
+ *     Wim Jongman - initial API and implementation   
+ *     Ahmed Aadel - initial API and implementation     
+ *******************************************************************************/
+package org.eclipse.ecf.provider.zookeeper;
+
+import java.util.Dictionary;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+
+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.internal.BundleStoppingListener;
+import org.eclipse.ecf.provider.zookeeper.util.Logger;
+import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceFactory;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.log.LogService;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class DiscoveryActivator implements BundleActivator {
+
+	private static BundleContext context;
+	private ServiceRegistration discoveryRegistration;
+	private static Set<BundleStoppingListener> stopListeners = new HashSet<BundleStoppingListener>();
+	private ServiceTracker confTracker, logServiceTracker;
+
+	public void start(final BundleContext ctxt) {
+		context = ctxt;
+		
+		final Properties props = new Properties();
+		props.put(IDiscoveryLocator.CONTAINER_NAME,
+				ZooDiscoveryContainerInstantiator.NAME);
+		props.put(IDiscoveryAdvertiser.CONTAINER_NAME,
+				ZooDiscoveryContainerInstantiator.NAME);
+		// register ourselves using a service factory 
+		discoveryRegistration = ctxt.registerService(new String[] {
+				IDiscoveryLocator.class.getName(),
+				IDiscoveryAdvertiser.class.getName() }, new ServiceFactory() {
+					private volatile ZooDiscoveryContainer zdc;
+					
+					public Object getService(Bundle bundle,
+							ServiceRegistration registration) {
+						if (zdc == null) {
+							zdc = ZooDiscoveryContainer.getSingleton();
+							zdc.setDiscoveryProperties(props);
+						}
+						return zdc;
+					}
+
+					public void ungetService(Bundle bundle,
+							ServiceRegistration registration, Object service) {
+		                //TODO-slewis we later might want to dispose zoodiscovery when the last!!! consumer ungets the service
+		                //Though don't forget about the (ECF) Container which might still be in use
+					}}, (Dictionary) props);
+
+		// setup and open log service tracker
+		logServiceTracker = new ServiceTracker(ctxt,
+				org.osgi.service.log.LogService.class.getName(), null) {
+			public Object addingService(ServiceReference reference) {
+				Logger.bindLogService((LogService) context
+						.getService(reference));
+				return super.addingService(reference);
+			}
+
+			public void removedService(ServiceReference reference,
+					Object service) {
+				Logger.unbindLogService((LogService) service);
+				super.removedService(reference, service); 
+			}
+		};
+		logServiceTracker.open(true);
+	}
+
+	public void stop(BundleContext c) throws Exception {
+		dispose();
+		// prompt we'r gone!
+		PrettyPrinter.prompt(PrettyPrinter.DEACTIVATED, null);
+	}
+
+	private void dispose() {
+		for (BundleStoppingListener l : stopListeners) {
+			l.bundleStopping();
+		}
+		stopListeners.clear();
+		ZooDiscoveryContainer.getSingleton().shutdown();
+		if (this.discoveryRegistration != null) {
+			this.discoveryRegistration.unregister();
+		}
+		if (this.confTracker != null) {
+			this.confTracker.close();
+		}
+		// Initiates an orderly shutdown of all our cached threads
+		ZooDiscoveryContainer.CACHED_THREAD_POOL.shutdown();
+
+	}
+
+	public static BundleContext getContext() {
+		return context;
+	}
+
+	public static void registerBundleStoppingListner(BundleStoppingListener l) {
+		stopListeners.add(l);
+	}
+
+}
+
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java
index ad1763f..1c21fd8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java
@@ -60,7 +60,8 @@
 		String ss[] = propsAsString.split(";");//$NON-NLS-1$
 		for (String s : ss) {
 			String key_value[] = s.split("=");//$NON-NLS-1$
-			defaultConfigProperties.put(key_value[0], key_value[1]);
+			if (key_value.length == 2)
+				defaultConfigProperties.put(key_value[0], key_value[1]);
 		}
 	}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java
index 692ea14..0e892df 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java
@@ -12,23 +12,45 @@
 package org.eclipse.ecf.provider.zookeeper.core.internal;
 
 import org.eclipse.ecf.discovery.IServiceInfo;
+import org.eclipse.ecf.discovery.identity.IServiceTypeID;
 
 public interface IService extends IServiceInfo {
 
-	String LOCATION = "discovery.service.location"; //$NON-NLS-1$	
-	String WEIGHT = "discovery.service.weight"; //$NON-NLS-1$
-	String PRIORITY = "discovery.service.priority"; //$NON-NLS-1$
-	String PROTOCOLS = "discovery.service.protocol"; //$NON-NLS-1$
-	Object SERVICE_NAME = "discovery.service.name";;
-
-	// Properties getProperties();
+	/**
+	 * Holds the service location ( {@link IServiceInfo#getLocation()} ) in the
+	 * zooKeeper node
+	 **/
+	String LOCATION = "discovery.service.location"; //$NON-NLS-1$ 
 
 	/**
-	 * Stored as value of a zookeeper node
+	 * Holds the service weight ( {@link IServiceInfo#getWeight()} ) in the
+	 * zooKeeper node
+	 **/
+	String WEIGHT = "discovery.service.weight"; //$NON-NLS-1$
+
+	/**
+	 * Holds the service priority ({@link IServiceInfo#getPriority()()} ) in the
+	 * zooKeeper node
+	 **/
+	String PRIORITY = "discovery.service.priority"; //$NON-NLS-1$
+
+	/**
+	 * Holds the service-type protocols ({@link IServiceTypeID#getProtocols()} )
+	 * in the zooKeeper node
+	 **/
+	String PROTOCOLS = "discovery.service.protocol"; //$NON-NLS-1$
+
+	/**
+	 * Holds the service name ({@link IServiceInfo#getServiceName()}) in the
+	 * zooKeeper node
+	 **/
+	String SERVICE_NAME = "discovery.service.name"; //$NON-NLS-1$
+
+	/**
+	 * The byte representation of the service properties, appropriate to be
+	 * stored in the zooKeeper node
 	 * 
-	 * @return byte value of string
+	 * @return byte representation of the properties
 	 */
 	byte[] getPropertiesAsBytes();
-
-	// String getPropertiesAsString();
-}
+}
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java
index 8e6449c..5006b80 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
+ *  Copyright (c)2011 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
  *  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
@@ -11,15 +11,16 @@
  *******************************************************************************/
 package org.eclipse.ecf.provider.zookeeper.node.internal;
 
+import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.zookeeper.AsyncCallback.ChildrenCallback;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.AsyncCallback.ChildrenCallback;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.ecf.provider.zookeeper.core.DiscoverdService;
 import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;
@@ -36,6 +37,7 @@
 			.synchronizedMap(new HashMap<String, NodeReader>());
 	private Map<String, DiscoverdService> discoverdServices;
 	private Map<String, List<DiscoverdService>> perTypeDiscoverdServices;
+	private Object connectionLock = new Object();
 
 	ReadRoot(String ip, WatchManager watchManager) {
 		Assert.isNotNull(ip);
@@ -49,106 +51,119 @@
 		connect();
 	}
 
-	public synchronized void process(final WatchedEvent event) {
-		if (watchManager.isDisposed())
-			return;
+	public void process(final WatchedEvent event) {
 		ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() {
 			public void run() {
-				switch (event.getState()) {
-				case Disconnected:
-					ReadRoot.this.isConnected = false;
-					connect();
-					break;
-				case Expired:
-					ReadRoot.this.isConnected = false;
-					connect();
-					break;
-				case SyncConnected:
-					if (!ReadRoot.this.isConnected) {
-						ReadRoot.this.isConnected = true;
-						ReadRoot.this.watchManager
-								.addZooKeeper(ReadRoot.this.readKeeper);
-						ReadRoot.this.readKeeper.exists(INode.ROOT,
-								ReadRoot.this, null, null);
-						ReadRoot.this.readKeeper.getChildren(INode.ROOT,
-								ReadRoot.this, ReadRoot.this, null);
-					}
-					break;
+				synchronized (connectionLock) {
+					if (watchManager.isDisposed())
+						return;
 
-				// ignore @deprecated cases
-				}
-				switch (event.getType()) {
-				case NodeDeleted:
-					if (event.getPath() == null
-							|| event.getPath().equals(INode.ROOT))
+					switch (event.getState()) {
+					case Disconnected:
+						ReadRoot.this.isConnected = false;
+						connect();
 						break;
-					ReadRoot.this.nodeReaders.remove(event.getPath());
-					break;
-				case NodeChildrenChanged:
-					if (ReadRoot.this.isConnected) {
-						ReadRoot.this.readKeeper.exists(INode.ROOT,
-								ReadRoot.this, null, null);
-						ReadRoot.this.readKeeper.getChildren(INode.ROOT,
-								ReadRoot.this, ReadRoot.this, null);
+					case Expired:
+						ReadRoot.this.isConnected = false;
+						connect();
+						break;
+					case SyncConnected:
+						if (!ReadRoot.this.isConnected) {
+							ReadRoot.this.isConnected = true;
+							ReadRoot.this.watchManager
+									.addZooKeeper(ReadRoot.this.readKeeper);
+							ReadRoot.this.readKeeper.exists(INode.ROOT,
+									ReadRoot.this, null, null);
+							ReadRoot.this.readKeeper.getChildren(INode.ROOT,
+									ReadRoot.this, ReadRoot.this, null);
+						}
+						break;
+
+					// ignore @deprecated cases
 					}
-					break;
+					switch (event.getType()) {
+					case NodeDeleted:
+						if (event.getPath() == null
+								|| event.getPath().equals(INode.ROOT))
+							break;
+						ReadRoot.this.nodeReaders.remove(event.getPath());
+						break;
+					case NodeChildrenChanged:
+						if (ReadRoot.this.isConnected) {
+							ReadRoot.this.readKeeper.exists(INode.ROOT,
+									ReadRoot.this, null, null);
+							ReadRoot.this.readKeeper.getChildren(INode.ROOT,
+									ReadRoot.this, ReadRoot.this, null);
+						}
+						break;
+					}
 				}
 			}
 		});
 	}
 
-	private synchronized void connect() {
-		if (this.isConnected || watchManager.isDisposed()) {
-			return;
-		}
-		try {
+	private void connect() {
+		synchronized (connectionLock) {
+			if (this.isConnected || watchManager.isDisposed())
+				return;
+
 			this.nodeReaders.clear();
 			if (this.readKeeper != null) {
 				// discard the current stale reader
-				this.readKeeper.close();
-				this.readKeeper = null;
+				try {
+					this.readKeeper.close();
+				} catch (InterruptedException e) {
+					Logger.log(
+							LogService.LOG_ERROR,
+							"Error while closing the current ZooKeeper: "
+									+ e.getMessage(), e);
+				}
 				this.watchManager.removeZooKeeper(this.readKeeper);
+				this.readKeeper = null;
 			}
-			// try reconnecting
-			this.readKeeper = new ZooKeeper(this.ip, 3000, this);
-
-		} catch (Exception e) {
-			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
+			try {
+				// try reconnecting
+				this.readKeeper = new ZooKeeper(this.ip, 3000, this);
+			} catch (IOException ioe) {
+				Logger.log(LogService.LOG_ERROR,
+						"Cannot initiate a new ZooKeeper: " + ioe.getMessage(),
+						ioe);
+			}
 		}
 	}
 
-	public synchronized void processResult(int rc, final String path,
-			Object ctx, final List<String> children) {
-
-		if (watchManager.isDisposed()) {
-			return;
-		}
-
+	public void processResult(int rc, final String path, Object ctx,
+			final List<String> children) {
 		ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() {
 			public void run() {
-				if (path == null || children == null || children.size() == 0) {
-					/* No children available yet, set a watch on it */
-					ReadRoot.this.readKeeper.getChildren(INode.ROOT,
-							ReadRoot.this, ReadRoot.this, null);
-					return;
-				}
-				for (String p : children) {
-					if (Geo.isOwnPublication(p)) {
-						/* own publications need not to be discovered */
-						continue;
+				synchronized (connectionLock) {
+					if (watchManager.isDisposed())
+						return;
+					if (path == null || children == null
+							|| children.size() == 0) {
+						/* No children available yet, set a watch on it */
+						ReadRoot.this.readKeeper.getChildren(INode.ROOT,
+								ReadRoot.this, ReadRoot.this, null);
+						return;
 					}
-					if (!ReadRoot.this.nodeReaders.containsKey(p)) {
-						/* launch a new reader to handle this node's data */
-						NodeReader nr = new NodeReader(p, ReadRoot.this);
-						/* watch this very path for deletion */
-						ReadRoot.this.readKeeper.exists(nr.getAbsolutePath(),
-								ReadRoot.this, null, null);
-						ReadRoot.this.nodeReaders.put(nr.getPath(), nr);
+					for (String p : children) {
+						if (Geo.isOwnPublication(p)) {
+							/* own publications need not to be discovered */
+							continue;
+						}
+						if (!ReadRoot.this.nodeReaders.containsKey(p)) {
+							/* launch a new reader to handle this node's data */
+							NodeReader nr = new NodeReader(p, ReadRoot.this);
+							/* watch this very path for deletion */
+							ReadRoot.this.readKeeper.exists(
+									nr.getAbsolutePath(), ReadRoot.this, null,
+									null);
+							ReadRoot.this.nodeReaders.put(nr.getPath(), nr);
+						}
 					}
 				}
 			}
 		});
-
 	}
 
 	public ZooKeeper getReadKeeper() {
@@ -166,5 +181,4 @@
 	public Map<String, List<DiscoverdService>> getPerTypeDiscoverdServices() {
 		return perTypeDiscoverdServices;
 	}
-
 }
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java
index 7c643e5..985fe3c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java
@@ -75,25 +75,21 @@
 		nodeWriter.publish();
 	}
 
-	public synchronized void publish(final AdvertisedService published) {
+	public void publish(AdvertisedService published) {
 		Assert.isNotNull(published);
 		String serviceid = published.getServiceID().getServiceTypeID()
 				.getInternal();
-		if (WatchManager.this.getNodeWriters().containsKey(serviceid))
+		if (getNodeWriters().containsKey(serviceid))
 			return;
-		if (!WatchManager.this.writeRootLock.isOpen()) {
-			synchronized (WatchManager.this.writeRootLock) {
-				try {
-					/* wait for the server to get ready */
-					WatchManager.this.writeRootLock.wait();
-				} catch (InterruptedException e) {
-					Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
-				}
-			}
+		try {
+			/* wait for the server to get ready */
+			while (!writeRootLock.isOpen())
+				Thread.sleep(300);
+		} catch (InterruptedException e) {
+			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
 		}
-		NodeWriter nodeWriter = new NodeWriter(published,
-				WatchManager.this.writeRoot);
-		WatchManager.this.getNodeWriters().put(serviceid, nodeWriter);
+		NodeWriter nodeWriter = new NodeWriter(published, writeRoot);
+		getNodeWriters().put(serviceid, nodeWriter);
 		allKnownServices.put(published.getServiceID().getName(), published);
 		nodeWriter.publish();
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java
index c29cf31..3d362e6 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java
@@ -1,153 +1,166 @@
-/*******************************************************************************
- *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
- *  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:
- *     Wim Jongman - initial API and implementation 
- *     Ahmed Aadel - initial API and implementation     
- *******************************************************************************/
-
-package org.eclipse.ecf.provider.zookeeper.node.internal;
-
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZooDefs.Ids;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.data.Stat;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ecf.provider.zookeeper.util.Logger;
-import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
-import org.osgi.service.log.LogService;
-
-class WriteRoot implements Watcher {
-	private ZooKeeper writeKeeper;
-	private String ip;
-	private WatchManager watchManager;
-
-	private boolean isConnected;
-
-	WriteRoot(String ip, WatchManager watchManager) {
-		Assert.isNotNull(ip);
-		Assert.isNotNull(watchManager);
-		this.ip = ip;
-		this.watchManager = watchManager;
-		initWriteKeeper();
-	}
-
-	@SuppressWarnings({ "incomplete-switch" })
-	public void process(WatchedEvent event) {
-		switch (event.getState()) {
-		case Disconnected:
-			this.isConnected = false;
-			this.watchManager.unpublishAll();
-			connect();
-			break;
-		case Expired:
-			this.isConnected = false;
-			this.watchManager.unpublishAll();
-
-			connect();
-			break;
-		case SyncConnected:
-			if (!this.isConnected) {
-				this.isConnected = true;
-				this.watchManager.republishAll();
-			}
-			break;
-		// ignore @deprecated cases
-		}
-	}
-
-	private void connect() {
-		if (this.isConnected || watchManager.isDisposed()) {
-			return;
-		}
-		try {
-			if (this.writeKeeper != null) {
-				this.writeKeeper.close();
-				this.writeKeeper = null;
-				this.watchManager.removeZooKeeper(this.writeKeeper);
-			}
-			this.writeKeeper = new ZooKeeper(this.ip, 3000, this);
-
-		} catch (Exception e) {
-			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
-		}
-	}
-
-	private void initWriteKeeper() {
-
-		if (watchManager.getConfig().isQuorum()
-				|| watchManager.getConfig().isStandAlone()) {
-			// we write nodes locally but we should check for client port.
-			int port = watchManager.getConfig().getClientPort();
-			if (port != 0)
-				ip += ":" + port;//$NON-NLS-1$
-		} else if (watchManager.getConfig().isCentralized()) {
-			// we write nodes to the machine with this specified IP address.
-			ip = watchManager.getConfig().getServerIps();
-		}
-		try {
-			this.writeKeeper = new ZooKeeper(this.ip, 3000, this);
-		} catch (Exception e) {
-			// FATAL
-			Logger.log(LogService.LOG_ERROR,
-					"Fatal error while initializing a zookeeper client to write to: "
-							+ ip, e);
-			// halt here before the NPE's get out of house in
-			// Publisher.publish()
-			throw new IllegalStateException(e);
-		}
-		while (!this.isConnected) {
-			if (watchManager.isDisposed()) {
-				// no need for connecting, we're disposed.
-				try {
-					this.writeKeeper.close();
-				} catch (Throwable t) {
-					// ignore
-				}
-				break;
-			}
-			try {
-				Stat s = this.writeKeeper.exists(INode.ROOT, this);
-				this.isConnected = true;
-				if (s == null) {
-					this.writeKeeper.create(INode.ROOT, new byte[0],
-							Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
-				}
-
-			} catch (KeeperException e) {
-				if (e.code().equals(KeeperException.Code.CONNECTIONLOSS)) {
-					this.isConnected = false;
-					PrettyPrinter.attemptingConnectionTo(this.ip);
-				} else
-					Logger.log(LogService.LOG_ERROR,
-							"Error while trying to connect to " + this.ip, e); //$NON-NLS-1$
-			} catch (InterruptedException e) {
-				// ignore
-			}
-		}
-		synchronized (this) {
-			this.notifyAll();
-		}
-		this.watchManager.addZooKeeper(this.writeKeeper);
-	}
-
-	public ZooKeeper getWriteKeeper() {
-		return this.writeKeeper;
-	}
-
-	public boolean isConnected() {
-		return this.isConnected;
-	}
-
-	public WatchManager getWatchManager() {
-		return watchManager;
-	}
-
+/*******************************************************************************
+ *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
+ *  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:
+ *     Wim Jongman - initial API and implementation 
+ *     Ahmed Aadel - initial API and implementation     
+ *******************************************************************************/
+
+package org.eclipse.ecf.provider.zookeeper.node.internal;
+
+import org.apache.zookeeper.CreateMode;
+import org.apache.zookeeper.KeeperException;
+import org.apache.zookeeper.WatchedEvent;
+import org.apache.zookeeper.Watcher;
+import org.apache.zookeeper.ZooDefs.Ids;
+import org.apache.zookeeper.ZooKeeper;
+import org.apache.zookeeper.data.Stat;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;
+import org.eclipse.ecf.provider.zookeeper.util.Logger;
+import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
+import org.osgi.service.log.LogService;
+
+class WriteRoot implements Watcher {
+	private ZooKeeper writeKeeper;
+	private String ip;
+	private WatchManager watchManager;
+	private boolean isConnected;
+	private Object connectionLock = new Object();
+
+	WriteRoot(String ip, WatchManager watchManager) {
+		Assert.isNotNull(ip);
+		Assert.isNotNull(watchManager);
+		this.ip = ip;
+		this.watchManager = watchManager;
+		initWriteKeeper();
+	}
+
+	@SuppressWarnings({ "incomplete-switch" })
+	public void process(final WatchedEvent event) {
+		ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() {
+			public void run() {
+				synchronized (connectionLock) {
+					switch (event.getState()) {
+					case Disconnected:
+						isConnected = false;
+						watchManager.unpublishAll();
+						connect();
+						break;
+					case Expired:
+						isConnected = false;
+						watchManager.unpublishAll();
+						connect();
+						break;
+					case SyncConnected:
+						if (!isConnected) {
+							isConnected = true;
+							watchManager.addZooKeeper(writeKeeper);
+							watchManager.republishAll();
+						}
+						break;
+					// ignore @deprecated cases
+					}
+				}
+			}
+		});
+	}
+
+	private void connect() {
+		synchronized (connectionLock) {
+			if (this.isConnected || watchManager.isDisposed()) {
+				return;
+			}
+			try {
+				if (writeKeeper != null) {
+					writeKeeper.close();
+					watchManager.removeZooKeeper(writeKeeper);
+					writeKeeper = null;
+				}
+				writeKeeper = new ZooKeeper(this.ip, 3000, this);
+
+			} catch (Exception e) {
+				Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
+			}
+		}
+	}
+
+	private void initWriteKeeper() {
+		try {
+			if (watchManager.getConfig().isQuorum()
+					|| watchManager.getConfig().isStandAlone()) {
+				// we write nodes locally but we should check for client port.
+				int port = watchManager.getConfig().getClientPort();
+				if (port != 0)
+					ip += ":" + port;//$NON-NLS-1$
+			} else if (watchManager.getConfig().isCentralized()) {
+				// we write nodes to the machine with this specified IP address.
+				ip = watchManager.getConfig().getServerIps();
+			}
+			try {
+				writeKeeper = new ZooKeeper(this.ip, 3000, this);
+			} catch (Exception e) {
+				// FATAL
+				Logger.log(LogService.LOG_ERROR,
+						"Fatal error while initializing a zookeeper client to write to: "
+								+ ip, e);
+				// halt here before the NPE's get out of house in
+				// Publisher.publish()
+				throw new IllegalStateException(e);
+			}
+			while (!this.isConnected) {
+				synchronized (connectionLock) {
+					if (watchManager.isDisposed()) {
+						// no need for connecting, we're disposed.
+						try {
+							writeKeeper.close();
+						} catch (Throwable t) {
+							// ignore
+						}
+						break;
+					}
+					try {
+						Stat s = this.writeKeeper.exists(INode.ROOT, this);
+						this.isConnected = true;
+						if (s == null) {
+							writeKeeper.create(INode.ROOT, new byte[0],
+									Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
+						}
+
+					} catch (KeeperException e) {
+						if (e.code()
+								.equals(KeeperException.Code.CONNECTIONLOSS)) {
+							isConnected = false;
+							PrettyPrinter.attemptingConnectionTo(this.ip);
+						} else
+							Logger.log(
+									LogService.LOG_ERROR,
+									"Error while trying to connect to " + this.ip, e); //$NON-NLS-1$
+					}
+				}
+			}
+			synchronized (this) {
+				this.notifyAll();
+			}
+
+		} catch (Exception e) {
+			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
+		}
+	}
+
+	public ZooKeeper getWriteKeeper() {
+		return writeKeeper;
+	}
+
+	public boolean isConnected() {
+		return isConnected;
+	}
+
+	public WatchManager getWatchManager() {
+		return watchManager;
+	}
 }
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties b/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
index 6e51da1..21b41a6 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 3.2 Patch for Eclipse 3.5.X and 3.6.x
+featureName=ECF Filetransfer Patch for Eclipse
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
index 5a579e1..40a2796 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.core.featurepatch"
-      label="ECF 3.5 Patch for Eclipse"
-      version="3.5.0.qualifier"
+      label="ECF Filetransfer Patch for Eclipse"
+      version="3.5.3.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides a patch of Eclipse 3.5-3.6 ECF Core Bundles.  This allows the ECF 3.4 Target Components to function properly.
+      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.
    </description>
 
    <copyright>
diff --git a/releng/features/org.eclipse.ecf.core/feature.properties b/releng/features/org.eclipse.ecf.core/feature.properties
index 4064bbc..90abed0 100644
--- a/releng/features/org.eclipse.ecf.core/feature.properties
+++ b/releng/features/org.eclipse.ecf.core/feature.properties
@@ -6,8 +6,8 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=Eclipse Communication Framework Target Components
-providerName=Eclipse.org
+featureName=ECF Target Components for Eclipse
+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
diff --git a/releng/features/org.eclipse.ecf.core/feature.xml b/releng/features/org.eclipse.ecf.core/feature.xml
index df3c167..ff965a1 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="Eclipse Communication Framework Target Components"
-      version="3.5.0.qualifier"
+      label="ECF Target Components for Eclipse"
+      version="3.5.3.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.ecf">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides a core set of APIs for writing ECF-enabled applications.  This feature and the ECF Application feature are required to run ECF applications.
+      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.
    </description>
 
    <copyright>
@@ -263,20 +263,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.eclipse.ecf.examples.updatesite.client"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.updatesite.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.eclipse.team.ecf.core"
          download-size="0"
          install-size="0"
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
index 6958898..59f34c1 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
@@ -1,16 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.datashare.feature"
-      label="ECF Datashare"
-      provider-name="%providerName"
-      version="1.0.0.qualifier">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Datashare API
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.datashare.feature"
+      label="ECF Datashare"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Datashare API for asynchronous
+messaging within a channel.
+   </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 
@@ -18,32 +19,32 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.ecf.datashare"
-         download-size="0"
-         install-size="0"
-         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>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.ecf.datashare"
+         download-size="0"
+         install-size="0"
+         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.discovery.dnssd.feature/build.properties b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/build.properties
index 49dfc15..2a8b18a 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/build.properties
@@ -2,9 +2,11 @@
                notice.html,\
                license.html,\
                feature.properties,\
-               about.html
+               about.html,\
+               epl-v10.html
 src.includes = about.html,\
                feature.properties,\
                feature.xml,\
                license.html,\
-               notice.html
+               notice.html,\
+               epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/epl-v10.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html
rename to releng/features/org.eclipse.ecf.discovery.dnssd.feature/epl-v10.html
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 92795fd..96fa53c 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.dnssd.feature"
-      label="ECF Discovery DNS-SD Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery DNS-SD Provider
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.discovery.dnssd.feature"
+      label="ECF Discovery DNS-SD Provider"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Discovery DNS-SD Provider.
+   </description>
+
+   <copyright>
       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,29 +18,29 @@
 # 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.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.provider.dnssd"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.xbill.dns"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.dnssd"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.xbill.dns"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
index 9b9ed63..732bf10 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.feature"
-      label="ECF Discovery"
-      provider-name="%providerName"
-      version="1.0.0.qualifier">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery API
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.discovery.feature"
+      label="ECF Discovery"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Discovery API.  The ECF Discovery API gives a transport-independent network discovery API.
+   </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 
@@ -18,32 +18,32 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.ecf.discovery"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.discovery"
-         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"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.ecf.discovery"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.discovery"
+         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"/>
+
+</feature>
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 f8f4b76..b085669 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Discovery Zeroconf Provider
+featureName=ECF Discovery SLP (RFC 2608) Provider
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
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 cff6021..0cb64c8 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.jmdns.feature"
-      label="ECF Discovery Zeroconf Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery Zeroconf Provider
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.discovery.jmdns.feature"
+      label="ECF Discovery Zeroconf Provider"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Discovery Zeroconf Provider.
+   </description>
+
+   <copyright>
       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,22 +18,22 @@
 # 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.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.provider.jmdns"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.provider.jmdns"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/.project b/releng/features/org.eclipse.ecf.discovery.local.feature/.project
deleted file mode 100644
index 9e5fb36..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.discovery.local.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.discovery.local.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
deleted file mode 100644
index 77efb6c..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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.ecf.discovery.feature" 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.osgi.services.discovery.local" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery" 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.discovery.local.feature/build.properties b/releng/features/org.eclipse.ecf.discovery.local.feature/build.properties
deleted file mode 100644
index 2a8b18a..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/build.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-bin.includes = feature.xml,\
-               notice.html,\
-               license.html,\
-               feature.properties,\
-               about.html,\
-               epl-v10.html
-src.includes = about.html,\
-               feature.properties,\
-               feature.xml,\
-               license.html,\
-               notice.html,\
-               epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.local.feature/feature.xml
deleted file mode 100644
index e592927..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.local.feature"
-      label="ECF Discovery Local File Provider"
-      version="2.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery Local File 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.discovery.feature" version="1.0.0"/>
-   </requires>
-
-</feature>
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.cquery b/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.cquery
deleted file mode 100644
index d0494be..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.cquery
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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.discovery.local.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\.discovery\.local\.feature?" useTargetPlatform="false" useWorkspace="false"/>
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.provider\.localdiscovery?" useTargetPlatform="false" useWorkspace="false"/>
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.osgi\.services\.discovery\.local?" useTargetPlatform="false" useWorkspace="false"/>
-    
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.discovery\.local(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.localdiscovery?" 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.discovery.local.feature/org.eclipse.ecf.discovery.local.mspec b/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.mspec
deleted file mode 100644
index 1ee7c91..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.mspec
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
-    name="org.eclipse.ecf.discovery.local" 
-    materializer="p2" 
-    url="org.eclipse.ecf.discovery.local.cquery">
-    
-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.discovery\.local\.feature?" materializer="workspace"/>
-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.provider\.localdiscovery?" materializer="workspace"/>
-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.osgi\.services\.discovery\.local?" materializer="workspace"/>
-    
-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.discovery\.local(\..+)?" materializer="workspace"/>
-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.localdiscovery?" materializer="workspace"/>
-
-    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
-</md:mspec>
-	
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 4fb27fc..d2cdf84 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
@@ -1,15 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.slp.feature"
-      label="ECF Discovery SLP Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery Service Location Protocol (SLP) Provider
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.discovery.slp.feature"
+      label="ECF Discovery SLP (RFC 2608) Provider"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Discovery Service Location Protocol
+(RFC 2608) Provider.
+   </description>
+
+   <copyright>
       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,29 +19,29 @@
 # 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.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <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>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+   </requires>
+
+   <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/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
index ecdee87..f451219 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
@@ -6,8 +6,7 @@
       provider-name="%providerName">
 
    <description url="http://wiki.eclipse.org/Zookeeper_Based_ECF_Discovery">
-      This feature provides the Apache Zookeeper Discovery Provider
-implementation
+      This feature provides the Apache Zookeeper Discovery Provider.
    </description>
 
    <copyright url="http://www.eclipse.org/legal/epl-v10.html">
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 dbbb3f5..342799a 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF EventAdmin Examples
+featureName=ECF Distributed EventAdmin Examples
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
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 45f9f2f..01ae455 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.eventadmin.examples.feature"
-      label="ECF EventAdmin Examples"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Distributed EventAdmin Examples
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.eventadmin.examples.feature"
+      label="ECF Distributed EventAdmin Examples"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Distributed EventAdmin Examples.
+   </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 
@@ -18,22 +18,22 @@
 # 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.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.eventadmin.app"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.eventadmin.feature"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.ecf.examples.eventadmin.app"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
index 3bb7fba..0818cc8 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF EventAdmin 
+featureName=ECF Distributed EventAdmin 
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
index 2dd3758..14b487a 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.eventadmin.feature"
-      label="ECF EventAdmin"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Distributed EventAdmin
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.eventadmin.feature"
+      label="ECF Distributed EventAdmin"
+      version="2.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Distributed EventAdmin API.
+   </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 
@@ -18,32 +18,32 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.ecf.provider"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.eventadmin"
-         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"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.ecf.provider"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.remoteservice.eventadmin"
+         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"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.examples/feature.xml b/releng/features/org.eclipse.ecf.examples/feature.xml
index d97837a..5a03ebd 100644
--- a/releng/features/org.eclipse.ecf.examples/feature.xml
+++ b/releng/features/org.eclipse.ecf.examples/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.examples"
-      label="%featureName"
-      version="3.2.0.qualifier"
-      provider-name="%providerName"
-      plugin="org.eclipse.ecf.example.collab">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides ECF application functionality...e.g. instant messaging, real-time collaboration. This feature and the ECF Core API feature are required to run ECF applications.
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.examples"
+      label="%featureName"
+      version="3.2.0.qualifier"
+      provider-name="%providerName"
+      plugin="org.eclipse.ecf.example.collab">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides ECF example applications and providers.
+   </description>
+
+   <copyright>
       ##########################################################################
 # Copyright (c) 2004, 2007 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -19,103 +19,89 @@
 # 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.presence"/>
-      <import plugin="org.eclipse.ecf.provider.xmpp"/>
-      <import plugin="org.eclipse.ecf.sharedobject"/>
-      <import plugin="org.eclipse.ecf.presence.ui"/>
-      <import plugin="org.eclipse.ui"/>
-      <import plugin="org.eclipse.ecf.ui"/>
-      <import plugin="org.eclipse.core.runtime"/>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.core.resources"/>
-      <import plugin="org.eclipse.jface.text"/>
-      <import plugin="org.eclipse.ui.ide"/>
-      <import plugin="org.eclipse.ui.editors"/>
-      <import plugin="org.eclipse.ecf.discovery"/>
-      <import plugin="org.eclipse.ecf.discovery.ui"/>
-      <import plugin="org.eclipse.ecf.discovery.ui.edit"/>
-      <import plugin="org.eclipse.ecf.discovery.ui.model"/>
-      <import plugin="org.eclipse.ecf.provider"/>
-      <import plugin="org.eclipse.ecf.server.generic"/>
-      <import plugin="org.eclipse.ecf.datashare"/>
-      <import plugin="org.eclipse.ecf.provider.datashare"/>
-      <import plugin="org.eclipse.ecf"/>
-      <import plugin="org.eclipse.ecf.discovery"/>
-      <import plugin="org.eclipse.ecf.remoteservice"/>
-      <import plugin="org.eclipse.ecf.examples.remoteservices.common"/>
-      <import plugin="org.eclipse.ecf.ui"/>
-      <import plugin="org.eclipse.update.ui"/>
-      <import plugin="org.eclipse.equinox.common"/>
-      <import plugin="javax.servlet"/>
-      <import plugin="org.eclipse.osgi.services"/>
-      <import plugin="org.eclipse.ecf.remoteservice.ui"/>
-      <import plugin="org.eclipse.equinox.app"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.example.clients"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.example.collab"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.example.collab.editor"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.client"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.common"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.updatesite.client"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.updatesite.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+##########################################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.presence"/>
+      <import plugin="org.eclipse.ecf.provider.xmpp"/>
+      <import plugin="org.eclipse.ecf.sharedobject"/>
+      <import plugin="org.eclipse.ecf.presence.ui"/>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.ecf.ui"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.osgi"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.jface.text"/>
+      <import plugin="org.eclipse.ui.ide"/>
+      <import plugin="org.eclipse.ui.editors"/>
+      <import plugin="org.eclipse.ecf.discovery"/>
+      <import plugin="org.eclipse.ecf.discovery.ui"/>
+      <import plugin="org.eclipse.ecf.discovery.ui.edit"/>
+      <import plugin="org.eclipse.ecf.discovery.ui.model"/>
+      <import plugin="org.eclipse.ecf.provider"/>
+      <import plugin="org.eclipse.ecf.server.generic"/>
+      <import plugin="org.eclipse.ecf.datashare"/>
+      <import plugin="org.eclipse.ecf.provider.datashare"/>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.discovery"/>
+      <import plugin="org.eclipse.ecf.remoteservice"/>
+      <import plugin="org.eclipse.ecf.examples.remoteservices.common"/>
+      <import plugin="org.eclipse.ecf.ui"/>
+      <import plugin="org.eclipse.update.ui"/>
+      <import plugin="org.eclipse.equinox.common"/>
+      <import plugin="javax.servlet"/>
+      <import plugin="org.eclipse.osgi.services"/>
+      <import plugin="org.eclipse.ecf.remoteservice.ui"/>
+      <import plugin="org.eclipse.equinox.app"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.example.clients"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.example.collab"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.example.collab.editor"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.examples.remoteservices.client"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.examples.remoteservices.common"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.examples.remoteservices.server"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
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 2265bae..334b336 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF OSGi 4.2 Remote Services
+featureName=ECF OSGi 4.2 Remote Services Admin
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
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 9ec58fc..787158c 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.ecf.osgi.services.feature"
-      label="ECF OSGi 4.2 Remote Services"
-      version="2.0.0.qualifier"
+      label="ECF OSGi 4.2 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
+      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.
    </description>
 
    <copyright>
@@ -30,13 +31,6 @@
          version="0.0.0"/>
 
    <plugin
-         id="org.eclipse.ecf.osgi.services.discovery"
-         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"
@@ -57,4 +51,11 @@
          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"/>
+
 </feature>
diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml b/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
index b8cf592..c84d397 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
@@ -1,15 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.provider.filetransfer.httpclient.feature"
-      label="%featureName"
-      version="2.1.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides an ECF filetransfer provider based upon Apache HttpClient 3.0.1.
-   </description>
-
-   <copyright url="http://www.example.com/copyright">
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.provider.filetransfer.httpclient.feature"
+      label="%featureName"
+      version="2.1.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides an ECF filetransfer provider based upon
+Apache HttpClient 3.1.0.
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
       Copyright (c) 2004, 2007 Composent, Inc. and others. All rights
 reserved.
 This program and the accompanying materials are made available
@@ -17,57 +18,57 @@
 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.equinox.common"/>
-      <import plugin="org.eclipse.ecf.provider.filetransfer"/>
-      <import plugin="org.eclipse.ecf"/>
-      <import plugin="org.eclipse.ecf.filetransfer"/>
-      <import plugin="org.eclipse.core.jobs"/>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.osgi.services"/>
-   </requires>
-
-   <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.apache.commons.codec"
-         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"/>
-
-   <plugin
-         id="org.apache.commons.logging"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.equinox.common"/>
+      <import plugin="org.eclipse.ecf.provider.filetransfer"/>
+      <import plugin="org.eclipse.ecf"/>
+      <import plugin="org.eclipse.ecf.filetransfer"/>
+      <import plugin="org.eclipse.core.jobs"/>
+      <import plugin="org.eclipse.osgi"/>
+      <import plugin="org.eclipse.osgi.services"/>
+   </requires>
+
+   <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.apache.commons.codec"
+         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"/>
+
+   <plugin
+         id="org.apache.commons.logging"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
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 14af2da..837f2a4 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
@@ -6,7 +6,7 @@
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides ECF Remote Service Examples
+      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.
    </description>
 
    <copyright>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
index 91a01f8..dbfb0c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.feature"
-      label="ECF Remote Services"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.remoteservice.feature"
+      label="ECF Remote Services"
+      version="1.0.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.
+   </description>
+
+   <copyright>
       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,50 +18,50 @@
 # 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.discovery.feature" version="1.0.0"/>
-   </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"
-         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.ecf.provider"
-         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"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+   </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"
+         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.ecf.provider"
+         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"/>
+
+</feature>
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 0bca7e4..8ba74e5 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.rest.feature"
-      label="ECF Remote Services REST Support"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services REST Support
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.remoteservice.rest.feature"
+      label="ECF Remote Services REST Support"
+      version="1.0.0.qualifier"
+      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.
+   </description>
+
+   <copyright>
       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,50 +18,50 @@
 # 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.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.rest"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.json"
-         download-size="0"
-         install-size="0"
-         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>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.remoteservice.feature"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.ecf.remoteservice.rest"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.json"
+         download-size="0"
+         install-size="0"
+         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.rosgi.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
index 88dec07..0340353 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.rosgi.feature"
-      label="ECF Remote Services R-OSGi Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services R-OSGi Provider
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.remoteservice.rosgi.feature"
+      label="ECF Remote Services R-OSGi Provider"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Remote Services R-OSGi 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 
@@ -18,36 +18,36 @@
 # 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.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="ch.ethz.iks.r_osgi.remote"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.r_osgi"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.objectweb.asm"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.remoteservice.feature"
+         version="0.0.0"/>
+
+   <plugin
+         id="ch.ethz.iks.r_osgi.remote"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.r_osgi"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.objectweb.asm"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
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 41f30d3..0156a2e 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
@@ -10,3 +10,4 @@
                feature.xml,\
                about.html,\
                epl-v10.html
+generate.feature@org.eclipse.ecf.remoteservice.sdk.feature.source=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 5b27e3c..25fbca5 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 SDK
+featureName=ECF Remote Services Target Components
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
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 cc1380c..3e06112 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature
       id="org.eclipse.ecf.remoteservice.sdk.feature"
       label="ECF Remote Services Target Components"
-      version="3.5.0.qualifier"
+      version="3.5.3.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services Target Components
+      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.
    </description>
 
    <copyright>
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/about.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/about.html
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/epl-v10.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html
copy to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
similarity index 98%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
index 4bd9606..5e005a6 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/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 Discovery Local File Provider
+featureName=ECF Remote Services Target Components Source
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
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
new file mode 100644
index 0000000..41c0bec
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml
@@ -0,0 +1,92 @@
+<?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.discovery.local.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/license.html
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/notice.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/notice.html
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/notice.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
index ef96d3c..0876712 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
@@ -4,8 +4,8 @@
       label="ECF Service-Oriented Architecture"
       version="2.0.0.qualifier">
 
-   <description url="http://www.example.com/description">
-      [Enter Feature Description here.]
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF SOA Target Components.
    </description>
 
    <copyright url="http://www.example.com/copyright">
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 91bb41b..7e3e596 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.soap.feature"
-      label="ECF Remote Services SOAP Support"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services SOAP Support
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.remoteservice.soap.feature"
+      label="ECF Remote Services SOAP Support"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Remote Services SOAP Support.
+   </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 
@@ -18,22 +18,22 @@
 # 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.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.soap"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.remoteservice.feature"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.ecf.remoteservice.soap"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.sdk/build.properties b/releng/features/org.eclipse.ecf.sdk/build.properties
index 657d5a0..c31a427 100644
--- a/releng/features/org.eclipse.ecf.sdk/build.properties
+++ b/releng/features/org.eclipse.ecf.sdk/build.properties
@@ -7,9 +7,10 @@
 generatedVersionLength=20
 generate.feature@org.eclipse.ecf.core.source=org.eclipse.ecf.core
 generate.feature@org.eclipse.ecf.core.featurepatch.source=org.eclipse.ecf.core.featurepatch
+generate.feature@org.eclipse.ecf.remoteservice.sdk.feature.source=org.eclipse.ecf.remoteservice.sdk.feature
 category.id.core=Eclipse Communication Framework (ECF)
-category.desciption.core=Category for the ECF SDK
-category.members.core=org.eclipse.ecf.core,org.eclipse.ecf.core.featurepatch,org.eclipse.ecf.core.source,org.eclipse.ecf.core.featurepatch.source
+category.desciption.core=Category for the ECF Target Components
+category.members.core=org.eclipse.ecf.core,org.eclipse.ecf.core.featurepatch,org.eclipse.ecf.remoteservice.sdk.feature,org.eclipse.ecf.core.source,org.eclipse.ecf.core.featurepatch.source,org.eclipse.ecf.remoteservice.sdk.feature.source
 
 
                
\ 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 3526647..0634599 100644
--- a/releng/features/org.eclipse.ecf.sdk/feature.xml
+++ b/releng/features/org.eclipse.ecf.sdk/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.sdk"
-      label="ECF Target Components Feature"
-      version="3.4.0.qualifier"
-      provider-name="Eclipse.org">
-
-   <description url="http://www.eclipse.org/ecf">
-      Eclipse Communications Framework Target Components
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.sdk"
+      label="ECF Target Components Feature"
+      version="3.5.3.qualifier"
+      provider-name="Eclipse.org">
+
+   <description url="http://www.eclipse.org/ecf">
+      Eclipse Communications Framework Target Components
+   </description>
+
+   <copyright>
       /*******************************************************************************
 * Copyright (c) 2004 Composent, Inc. and others. All rights reserved.
 * This program and the accompanying materials are made available
@@ -18,10 +18,10 @@
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: Composent, Inc. - initial API and implementation
-******************************************************************************/
-   </copyright>
-
-   <license url="http://www.eclipse.org/legal/epl-v10.html">
+******************************************************************************/
+   </copyright>
+
+   <license url="http://www.eclipse.org/legal/epl-v10.html">
       About This Content
 May 11, 2006
 License
@@ -304,15 +304,19 @@
 or implied.
 See the License for the specific language governing permissions
 and
-limitations under the License.
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.core"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.core.featurepatch"
-         version="0.0.0"/>
-
-</feature>
+limitations under the License.
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.core"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.core.featurepatch"
+         version="0.0.0"/>
+
+   <includes
+         id="org.eclipse.ecf.remoteservice.sdk.feature"
+         version="0.0.0"/>
+
+</feature>
diff --git a/releng/features/org.eclipse.ecf.tests.feature/feature.xml b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
index 2783132..ec27e08 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
@@ -332,7 +332,6 @@
       <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.ecf.osgi.services.discovery" version="1.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"/>
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
index d6adcbd..21e3c6a 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
@@ -1,11 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.xmpp.feature"
-      label="ECF XMPP Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.xmpp.feature"
+      label="ECF XMPP Provider"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides support for the XMPP protocol.
+   </description>
+
+   <copyright>
       Copyright (c) 2011 Composent, Inc. and others. All rights
 reserved.
 This program and the accompanying materials are made available
@@ -13,41 +17,41 @@
 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>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.jivesoftware.smack"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp.datashare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp.remoteservice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-</feature>
+Contributors: Composent, Inc. - initial API and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.eclipse.ecf.provider.xmpp"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.jivesoftware.smack"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.xmpp.datashare"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.xmpp.remoteservice"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
+</feature>
diff --git a/releng/org.eclipse.ecf.releng.bm/ECF3-5Baseline.target b/releng/org.eclipse.ecf.releng.bm/ECF3-5Baseline.target
new file mode 100644
index 0000000..48ee3e7
--- /dev/null
+++ b/releng/org.eclipse.ecf.releng.bm/ECF3-5Baseline.target
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.6"?>
+
+<target includeMode="feature" name="ECF3-5Baseline">
+<locations>
+<location includeAllPlatforms="false" includeMode="slicer" type="InstallableUnit">
+<unit id="org.eclipse.ecf.core.feature.group" version="3.5.0.v20110313-1843"/>
+<repository location="http://rsync.osuosl.org/pub/eclipse/rt/ecf/3.5/site.p2/"/>
+</location>
+</locations>
+<includeBundles>
+<feature id="org.eclipse.ecf.core"/>
+</includeBundles>
+<launcherArgs>
+<vmArgs>-XX:PermSize=256M -XX:MaxPermSize=512M -XX:+UseParallelGC -Xms512m -Xmx1024m</vmArgs>
+</launcherArgs>
+</target>
diff --git a/releng/org.eclipse.ecf.releng.bm/ecf.b3aggr b/releng/org.eclipse.ecf.releng.bm/ecf.b3aggr
deleted file mode 100644
index 4f6d5da..0000000
--- a/releng/org.eclipse.ecf.releng.bm/ecf.b3aggr
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<aggregator:Aggregator xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:aggregator="http://www.eclipse.org/b3/2010/aggregator/1.0.0" buildmaster="//@contacts[email='mkuppe@ecf-project.org']" label="Eclipse Communication Framework (ECF)" type="R" mavenResult="true">
-  <configurations/>
-  <configurations architecture="x86_64"/>
-  <configurations operatingSystem="linux" windowSystem="gtk"/>
-  <configurations operatingSystem="linux" windowSystem="gtk" architecture="x86_64"/>
-  <contributions label="Eclipse Communication Framework">
-    <repositories location="http://download.eclipse.org/rt/ecf/3.4/site.p2/"/>
-  </contributions>
-  <contacts name="Markus Alexander Kuppe" email="mkuppe@ecf-project.org"/>
-  <validationRepositories location="http://download.eclipse.org/tools/orbit/downloads/drops/S20110124210048/repository/"/>
-  <validationRepositories location="http://download.eclipse.org/eclipse/updates/3.6/R-3.6.1-201009090800/"/>
-  <validationRepositories location="http://download.eclipse.org/modeling/emf/emf/updates/2.6/"/>
-</aggregator:Aggregator>
diff --git a/releng/org.eclipse.ecf.releng.bm/ecf.rmap b/releng/org.eclipse.ecf.releng.bm/ecf.rmap
index 77a3a57..77fb914 100644
--- a/releng/org.eclipse.ecf.releng.bm/ecf.rmap
+++ b/releng/org.eclipse.ecf.releng.bm/ecf.rmap
@@ -1,136 +1,106 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rmap
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xmlns="http://www.eclipse.org/buckminster/RMap-1.0"
-	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
-	xmlns:mp="http://www.eclipse.org/buckminster/MavenProvider-1.0"
-	xmlns:pmp="http://www.eclipse.org/buckminster/PDEMapProvider-1.0">
-
-	
-	<!-- org.eclipse -->
-	<searchPath name="org.eclipse">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/eclipse/updates/3.6/R-3.6.1-201009090800?importType=binary"/>
-		</provider>
-		<!-- dev.eclipse.org PDEMapProvider -->
-		<provider xsi:type="pmp:PDEMapProvider" readerType="cvs" componentTypes="osgi.bundle,eclipse.feature" mutable="false" source="true">
-			<uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse,org.eclipse.releng/maps">
-				<bc:propertyRef key="buckminster.component" />
-			</uri>
-		</provider>
-	</searchPath>
-	
-	<!-- emf -->
-	<searchPath name="org.eclipse.emf">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/modeling/emf/updates/releases?importType=binary"/>
-		</provider>
-		<!-- dev.eclipse.org PDEMapProvider -->
-		<provider xsi:type="pmp:PDEMapProvider" readerType="cvs" componentTypes="osgi.bundle,eclipse.feature" mutable="false" source="true">
-			<uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/modeling,org.eclipse.emf/org.eclipse.emf.releng/maps">
-				<bc:propertyRef key="buckminster.component" />
-			</uri>
-		</provider>
-	</searchPath>
-
-	<!-- ecf -->
-	<searchPath name="org.eclipse.ecf">
-		<provider readerType="local" componentTypes="osgi.bundle,eclipse.feature" mutable="true" source="true">
-            <uri format="file:{0}/{1}/">
-                <bc:propertyRef key="projectsPath" />
-                <bc:propertyRef key="buckminster.component" />
-            </uri>
-        </provider>
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="{0}?importType=binary">
-                <bc:propertyRef key="ecf.p2.repository" />
-            </uri>    
-		</provider>
-	</searchPath>
-
-	<!-- org.xbill.dns -->
-	<searchPath name="org.xbill.dns">
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/S20101014084557/repository?importType=binary"/>
-		</provider>
-	</searchPath>
-
-	<!-- pluginbuilder -->
-	<searchPath name="org.pluginbuilder">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://self.pluginbuilder.org/nightly/p2-updateSite?importType=binary"/>
-		</provider>
-	</searchPath>
-
-	<!-- swtbot -->
-	<searchPath name="org.eclipse.swtbot">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/technology/swtbot/galileo/dev-build/update-site?importType=binary"/>
-		</provider>
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/technology/swtbot/helios/dev-build/update-site?importType=binary"/>
-		</provider>
-	</searchPath>
-
-	<!-- eclemma -->
-	<searchPath name="com.mountainminds.eclemma">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://update.eclemma.org?importType=binary"/>
-		</provider>
-	</searchPath>
-	
-	<!-- default -->
-	<searchPath name="default">
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/updateSite?importType=binary"/>
-		</provider>
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/S20100831105311/repository?importType=binary"/>
-		</provider>
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/S20110124210048/repository?importType=binary"/>
-		</provider>
-		<!-- dev.eclipse.org PDEMapProvider -->
-		<provider xsi:type="pmp:PDEMapProvider" readerType="cvs" componentTypes="osgi.bundle,eclipse.feature" mutable="false" source="true">
-			<uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/tools,org.eclipse.orbit/org.eclipse.orbit.releng/maps">
-				<bc:propertyRef key="buckminster.component" />
-			</uri>
-		</provider>
-	</searchPath>
-	
-	<!-- below order does matter!!! -->
-	
-	<locator searchPathRef="org.xbill.dns" pattern="^org\.xbill\.dns$" />
-	
-	<!-- ECF -->
-	<locator searchPathRef="org.eclipse.ecf" pattern="^ch\.ethz\.iks(\..+)?" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.eclipse\.ecf(\..+)?" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.eclipse\.team\.ecf(\..+)?" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.jivesoftware\.smack$" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" />
-	
-	<!-- EMF -->
-	<locator searchPathRef="org.eclipse.emf" pattern="^org\.eclipse\.emf(\..+)?" />
-	<locator searchPathRef="org.eclipse.emf" pattern="^org\.eclipse\.net4j(\..+)?" />
-	<locator searchPathRef="org.eclipse.emf" pattern="^org\.eclipse\.xsd(\..+)?" />
-
-	<!-- SWTBot -->
-	<locator searchPathRef="org.eclipse.swtbot" pattern="^org\.eclipse\.swtbot(\..+)?" />
-	<locator searchPathRef="org.eclipse.swtbot" pattern="^org\.hamcrest(\..+)?" />
-	<locator searchPathRef="org.eclipse.swtbot" pattern="^org\.apache\.log4j$" />
-	
-	<!-- ECLEmma -->
-	<locator searchPathRef="com.mountainminds.eclemma" pattern="^com\.mountainminds\.eclemma(\..+)?" />
-	
-	<!-- Eclipse --> 
-	<locator searchPathRef="org.eclipse" pattern="^org\.eclipse(\..+)?" />
-	<locator searchPathRef="org.eclipse" pattern="^org\.junit4?" />
-	<locator searchPathRef="org.eclipse" pattern="^org\.osgi(\..+)?" />
-	<locator searchPathRef="org.eclipse" pattern="^org\.apache\.ant?" />
-
-	<!-- PluginBuilder -->
-	<locator searchPathRef="org.pluginbuilder" pattern="^org\.pluginbuilder(\..+)?" />
-	
-	<!-- Eclipse other (Orbit atm) -->	
-	<locator searchPathRef="default" pattern=".*" />
-</rmap>
+<?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="^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"/>
+  <rm:locator pattern="^org\.jivesoftware\.smack$" searchPathRef="org.eclipse.ecf"/>
+  <rm:locator pattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" searchPathRef="org.eclipse.ecf"/>
+  <rm:locator pattern="^org\.eclipse\.emf(\..+)?" searchPathRef="org.eclipse.emf"/>
+  <rm:locator pattern="^org\.eclipse\.net4j(\..+)?" searchPathRef="org.eclipse.emf"/>
+  <rm:locator pattern="^org\.eclipse\.xsd(\..+)?" searchPathRef="org.eclipse.emf"/>
+  <rm:locator pattern="^org\.eclipse\.swtbot(\..+)?" searchPathRef="org.eclipse.swtbot"/>
+  <rm:locator pattern="^org\.hamcrest(\..+)?" searchPathRef="org.eclipse.swtbot"/>
+  <rm:locator pattern="^org\.apache\.log4j$" searchPathRef="org.eclipse.swtbot"/>
+  <rm:locator pattern="^com\.mountainminds\.eclemma(\..+)?" searchPathRef="com.mountainminds.eclemma"/>
+  <rm:locator pattern="^org\.eclipse(\..+)?" searchPathRef="org.eclipse"/>
+  <rm:locator pattern="^org\.junit4?" searchPathRef="org.eclipse"/>
+  <rm:locator pattern="^org\.osgi(\..+)?" searchPathRef="org.eclipse"/>
+  <rm:locator pattern="^org\.apache\.ant?" searchPathRef="org.eclipse"/>
+  <rm:locator pattern="^org\.pluginbuilder(\..+)?" searchPathRef="org.pluginbuilder"/>
+  <rm:locator pattern=".*" searchPathRef="default"/>
+  <rm:searchPath name="org.eclipse">
+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/eclipse/updates/3.7/R-3.7-201106131736/"/>
+    </rm:provider>
+    <rm:provider xsi:type="pde:PDEMapProvider" componentTypes="osgi.bundle,eclipse.feature" readerType="cvs" mutable="false">
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse,org.eclipse.releng/maps">
+        <bc:propertyRef key="buckminster.component"/>
+      </rm:uri>
+    </rm:provider>
+  </rm:searchPath>
+  <rm:searchPath name="org.eclipse.emf">
+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/modeling/emf/updates/releases"/>
+    </rm:provider>
+    <rm:provider xsi:type="pde:PDEMapProvider" componentTypes="osgi.bundle,eclipse.feature" readerType="cvs" mutable="false">
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/modeling,org.eclipse.emf/org.eclipse.emf.releng/maps">
+        <bc:propertyRef key="buckminster.component"/>
+      </rm:uri>
+    </rm:provider>
+  </rm:searchPath>
+  <rm:searchPath name="org.eclipse.ecf">
+    <rm:provider componentTypes="osgi.bundle,eclipse.feature" readerType="local">
+      <rm:uri format="file:{0}/{1}/">
+        <bc:propertyRef key="projectsPath"/>
+        <bc:propertyRef key="buckminster.component"/>
+      </rm:uri>
+    </rm:provider>
+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="{0}?importType=binary">
+        <bc:propertyRef key="ecf.p2.repository"/>
+      </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"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://self.pluginbuilder.org/nightly/p2-updateSite?importType=binary"/>
+    </rm:provider>
+  </rm:searchPath>
+  <rm:searchPath name="org.eclipse.swtbot">
+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/technology/swtbot/helios/dev-build/update-site"/>
+    </rm:provider>
+  </rm:searchPath>
+  <rm:searchPath name="com.mountainminds.eclemma">
+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format="http://update.eclemma.org?importType=binary"/>
+    </rm:provider>
+  </rm:searchPath>
+  <rm:searchPath name="default">
+    <rm:provider componentTypes="osgi.bundle" readerType="p2" source="false" mutable="false">
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:property key="buckminster.source" value="false"/>
+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/tools/orbit/downloads/drops/R20100519200754/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://ftp.osuosl.org/pub/eclipse/tools/orbit/downloads/drops/R20110523182458/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://ftp.osuosl.org/pub/eclipse/tools/orbit/downloads/drops/S20110124210048/repository"/>
+    </rm:provider>
+    <rm:provider xsi:type="pde:PDEMapProvider" componentTypes="osgi.bundle,eclipse.feature" readerType="cvs" mutable="false">
+      <rm:property key="buckminster.mutable" value="false"/>
+      <rm:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/tools,org.eclipse.orbit/org.eclipse.orbit.releng/maps">
+        <bc:propertyRef key="buckminster.component"/>
+      </rm:uri>
+    </rm:provider>
+  </rm:searchPath>
+</rm:rmap>
diff --git a/releng/org.eclipse.ecf.releng.bm/rmap2b3aggr.xsl b/releng/org.eclipse.ecf.releng.bm/rmap2b3aggr.xsl
new file mode 100644
index 0000000..ada0848
--- /dev/null
+++ b/releng/org.eclipse.ecf.releng.bm/rmap2b3aggr.xsl
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:bm="http://www.eclipse.org/buckminster/RMap-1.0">
+    <xsl:output method="xml" indent="yes"/>
+    
+    <xsl:strip-space elements="*"/>
+    
+    <!-- overwrite via parameters -->
+    <xsl:param name="repository">http://download.eclipse.org/rt/ecf/3.4/site.p2/</xsl:param>
+    <xsl:param name="title">Eclipse Communication Framework (ECF)</xsl:param>
+    <xsl:param name="releaseType">R</xsl:param>
+    <xsl:param name="contactName">ECF mailinglist</xsl:param>
+    <xsl:param name="contactMail">ecf-dev@eclipse.org</xsl:param>
+    
+    <xsl:template match="/">
+        <aggregator:Aggregator 
+            xmi:version="2.0" 
+            xmlns:xmi="http://www.omg.org/XMI" 
+            xmlns:aggregator="http://www.eclipse.org/b3/2010/aggregator/1.0.0" 
+            buildmaster="//@contacts[email='{$contactMail}']" 
+            label="{$title}"
+            type="{$releaseType}" 
+            mavenResult="true">
+            
+            <configurations architecture="x86_64"/>
+            <configurations operatingSystem="linux" windowSystem="gtk"/>
+            <configurations operatingSystem="linux" windowSystem="gtk" architecture="x86_64"/>
+ 
+            <contributions label="{$title}">
+                <repositories location="{$repository}"/>
+            </contributions>
+
+            <contacts name="{$contactName}" email="{$contactMail}"/>
+
+            <xsl:apply-templates/>
+            
+        </aggregator:Aggregator>
+    </xsl:template>
+    
+    <xsl:template match="bm:provider">
+    	<!-- only accept public http|ftp repositories -->
+        <xsl:if test="starts-with(bm:uri/@format, 'http://') or starts-with(bm:uri/@format, 'ftp://')">
+        
+        	<!-- remove dangling ?importType=binary -->
+        	<xsl:choose>
+        		<xsl:when test="contains(bm:uri/@format, '?importType=binary')">
+		        	<validationRepositories location="{substring-before(bm:uri/@format, '?importType=binary')}"/>
+        		</xsl:when>
+        		<xsl:otherwise>
+            		<validationRepositories location="{bm:uri/@format}"/>
+        		</xsl:otherwise>
+        	</xsl:choose>
+        </xsl:if>
+    </xsl:template>    
+    
+</xsl:stylesheet>
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF b/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF
index cd6fbf3..bd9ab0e 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.server.generic;singleton:=true
-Bundle-Version: 4.0.0.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.server.generic.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch b/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch
index 0d38996..2f6960d 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientJavaApplication.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ecf.server.generic.app.GenericClientJavaApplication"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.server.generic"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientJavaApplication.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ecf.server.generic.app.GenericClientJavaApplication"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-clientId something:slewis@composent.com/333334"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.server.generic"/>
+</launchConfiguration>
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml b/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml
index 6233371..44fa9bc 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml
@@ -35,5 +35,16 @@
                class="org.eclipse.ecf.server.generic.app.GenericClientApplication"/>
       </application>
    </extension>
+   <extension
+         id="GenericClientApplication"
+         point="org.eclipse.core.runtime.applications">
+      <application
+            thread="any"
+            visible="true">
+         <run
+               class="org.eclipse.ecf.server.generic.app.GenericClientApplication">
+         </run>
+      </application>
+   </extension>
 
 </plugin>
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java
index 7b3a7c1..adb9d45 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java
@@ -102,7 +102,6 @@
 	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext ctxt) throws Exception {
-		plugin = null;
 		if (serverManager != null) {
 			serverManager.closeServers();
 			serverManager = null;
@@ -127,6 +126,7 @@
 				gscgFactory = null;
 			}
 		}
+		plugin = null;
 		this.context = null;
 	}
 
@@ -136,9 +136,8 @@
 	 * @return the shared instance
 	 */
 	public synchronized static Activator getDefault() {
-		if (plugin == null) {
-			plugin = new Activator();
-		}
+		if (plugin == null)
+			throw new NullPointerException("Default Activator is null"); //$NON-NLS-1$
 		return plugin;
 	}
 
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java
index 2d7b287..d9ef3b7 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java
@@ -104,9 +104,16 @@
 		return createContainer(path, IGenericServerContainerGroup.DEFAULT_KEEPALIVE);
 	}
 
+	/**
+	 * @since 5.1
+	 */
+	protected GenericServerSOContainerGroup getServerGroup() {
+		return serverGroup;
+	}
+
 	protected TCPServerSOContainer createGenericServerContainer(String path, int keepAlive, Map properties) throws ContainerCreateException {
 		try {
-			return new TCPServerSOContainer(new SOContainerConfig(createGenericServerID(path, properties), createGenericServerProperties(path, properties)), serverGroup, path, keepAlive);
+			return new TCPServerSOContainer(new SOContainerConfig(createGenericServerID(path, properties), createGenericServerProperties(path, properties)), getServerGroup(), path, keepAlive);
 		} catch (Exception e) {
 			throw new ContainerCreateException("Unexpected exception creating generic server container path=" + path, e); //$NON-NLS-1$
 		}
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java
index 3e8b33b..afa0b58 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java
@@ -13,30 +13,121 @@
 import java.net.URI;
 import java.util.Map;
 import org.eclipse.ecf.core.ContainerCreateException;
+import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.core.sharedobject.ISharedObjectContainer;
 
 /**
+ * Generic server container group.  Instances of this type are returned from using the {@link IGenericServerContainerGroupFactory}
+ * service.
+ * 
  * @since 4.0
  */
 public interface IGenericServerContainerGroup {
 
 	public static final int DEFAULT_KEEPALIVE = 30000;
 
+	/**
+	 * Get the URI for the group endpoint.  For
+	 * @return uri that is the group endpoint.  For example uri='ecftcp://localhost:3282'
+	 */
 	public URI getGroupEndpoint();
 
+	/**
+	 * Create a shared object container within this container group, given a path, a keepAlive value, and a Map of properties
+	 * that will be provided to the created container.
+	 * 
+	 * @param path the uri path suffix for defining the container's identity.  For example, if {@link #getGroupEndpoint()}
+	 * returns 'ecftcp://localhost:3282', and a path of '/server' is used to create a new container, then the container's id
+	 * will be 'ecftcp://localhost:3282/server'.  Must not be <code>null</code>.
+	 * @param keepAlive a value (in milliseconds) that defines the keepAlive for the resulting container.
+	 * @param properties to be associated to the returned container upon instantiation.
+	 * @return shared object container.  Will not be <code>null</code>.
+	 * @throws ContainerCreateException if container with given path, keepAlive, and properties could not be created.
+	 */
 	public ISharedObjectContainer createContainer(String path, int keepAlive, Map properties) throws ContainerCreateException;
 
+	/**
+	 * Create a shared object container within this container group, given a path, a keepAlive value, and a Map of properties
+	 * that will be provided to the created container.
+	 * 
+	 * @param path the uri path suffix for defining the container's identity.  For example, if {@link #getGroupEndpoint()}
+	 * returns 'ecftcp://localhost:3282', and a path of '/server' is used to create a new container, then the container's id
+	 * will be 'ecftcp://localhost:3282/server'.  Must not be <code>null</code>.
+	 * @param keepAlive a value (in milliseconds) that defines the keepAlive for the resulting container.
+	 * @return shared object container.  Will not be <code>null</code>.
+	 * @throws ContainerCreateException if container with given path, keepAlive, and properties could not be created.
+	 * @since 5.0
+	 */
+	public ISharedObjectContainer createContainer(String path, int keepAlive) throws ContainerCreateException;
+
+	/**
+	 * Create a shared object container within this container group, given a path, a keepAlive value, and a Map of properties
+	 * that will be provided to the created container.
+	 * 
+	 * @param path the uri path suffix for defining the container's identity.  For example, if {@link #getGroupEndpoint()}
+	 * returns 'ecftcp://localhost:3282', and a path of '/server' is used to create a new container, then the container's id
+	 * will be 'ecftcp://localhost:3282/server'.  Must not be <code>null</code>.
+	 * @return shared object container.  Will not be <code>null</code>.
+	 * @throws ContainerCreateException if container with given path, keepAlive, and properties could not be created.
+	 * @since 5.0
+	 */
+	public ISharedObjectContainer createContainer(String path) throws ContainerCreateException;
+
+	/**
+	 * Get the container instance associated with the given path. 
+	 * 
+	 * @param path of the container to return.  Must not be <code>null</code>.
+	 * @return the previously created shared object container associated with the given path.
+	 */
 	public ISharedObjectContainer getContainer(String path);
 
+	/**
+	 * Get a map (String->ISharedObjectContainer) of the path->containers previously created.
+	 * @return map of the path->container map for this generic server container group.  Will not return <code>null</code>, but
+	 * may return a Map of size==0.
+	 */
 	public Map getContainers();
 
+	/**
+	 * Remove previously created container with given path.
+	 * 
+	 * @param path of the shared object container to remove.
+	 * @return shared object container removed.  If no shared object container was previously created
+	 * with the given path, then <code>null</code> will be returned.
+	 */
 	public ISharedObjectContainer removeContainer(String path);
 
+	/**
+	 * Start listening on the port given to this generic server container group upon creation.
+	 * 
+	 * @throws IOException if the server port cannot be opened for listening.
+	 * 
+	 * @see IGenericServerContainerGroupFactory#createContainerGroup(String, int, Map)
+	 */
 	public void startListening() throws IOException;
 
+	/**
+	 * Returns <code>true</code> if this container group previously started listening via a successful call to {@link #startListening()}).
+	 * 
+	 * @return <code>true</code> if currently listening, <code>false</code> otherwise.
+	 */
 	public boolean isListening();
 
+	/**
+	 * Stop listening on port given to this generic server container group upon creation.
+	 */
 	public void stopListening();
 
+	/**
+	 * Close this generic server container group.  This method will:
+	 * <ol>
+	 * <li>iterate through all containers created via {@link #createContainer(String, int, Map)} within this group, and for each one:</li>
+	 * <ol>
+	 *   <li>remove it from the set of containers within this group</li>
+	 *   <li>call {@link IContainer#dispose()}</li>
+	 * </ol>
+	 * <li>stop listening on the port given to this generic server container group upon creation.</li>
+	 * </ol>
+	 */
 	public void close();
 }
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java
index 6752a4c..d0191fe 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java
@@ -10,24 +10,82 @@
 package org.eclipse.ecf.server.generic;
 
 import java.util.Map;
+import org.eclipse.ecf.core.IContainer;
 
 /**
+ * Generic server container group factory service.  This service interface defines
+ * the contract for dynamically creating ECF generic server container groups for a given hostname and port.  A container group
+ * is a set of {@link IContainer} instances...all of which are associated with a single
+ * hostname and port combination.
+ * 
  * @since 4.0
  */
 public interface IGenericServerContainerGroupFactory {
 
 	public int DEFAULT_PORT = 3282;
 
+	/**
+	 * Create a new container group given a hostname, port, and a Map of default container properties.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @param port the port that the new container group will listen on (once {@link IGenericServerContainerGroup#startListening()}
+	 * is called).  Should be a valid tcp port, openable for listening by this process via {@link IGenericServerContainerGroup#startListening()}.
+	 * @param defaultContainerProperties a Map of default properties passed to any IContainer instances created within the resulting group.
+	 * @return new generic server container group.  Will not return <code>null</code>.
+	 * @throws GenericServerContainerGroupCreateException if a container group exists for the given hostname and port combination.
+	 * 
+	 * @see IGenericServerContainerGroup
+	 */
 	public IGenericServerContainerGroup createContainerGroup(String hostname, int port, Map defaultContainerProperties) throws GenericServerContainerGroupCreateException;
 
+	/**
+	 * Create a new container group given a hostname, and port.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @param port the port that the new container group will listen on (once {@link IGenericServerContainerGroup#startListening()}
+	 * is called).  Should be a valid tcp port, openable for listening by this process via {@link IGenericServerContainerGroup#startListening()}.
+	 * @return new generic server container group.  Will not return <code>null</code>.
+	 * @throws GenericServerContainerGroupCreateException if a container group exists for the given hostname and port combination.
+	 * 
+	 * @see IGenericServerContainerGroup
+	 */
 	public IGenericServerContainerGroup createContainerGroup(String hostname, int port) throws GenericServerContainerGroupCreateException;
 
+	/**
+	 * Create a new container group given a hostname using the {@link #DEFAULT_PORT}.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @return new generic server container group.  Will not return <code>null</code>.
+	 * @throws GenericServerContainerGroupCreateException if a container group exists for the given hostname and port combination.
+	 * 
+	 * @see IGenericServerContainerGroup
+	 */
 	public IGenericServerContainerGroup createContainerGroup(String hostname) throws GenericServerContainerGroupCreateException;
 
+	/**
+	 * Get the container group associated with the given hostname and port.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @param port the port of the desired container group.
+	 * @return the existing generic server container group associated with the given hostname and port.  If no container group
+	 * exists with the given hostname and port, <code>null</code> will be returned.
+	 * 
+	 */
 	public IGenericServerContainerGroup getContainerGroup(String hostname, int port);
 
+	/**
+	 * Get all the container groups created by this container group factory.
+	 * @return array of generic server container groups.  Will not return <code>null</code>, but 
+	 * may return empty array if no generic server container groups have been created by this factory.
+	 */
 	public IGenericServerContainerGroup[] getContainerGroups();
 
+	/**
+	 * Remove the container group with the given hostname and port.
+	 * 
+	 * @param hostname the hostname of the container group to remove.  Must not be <code>null</code>.
+	 * @param port the port of the desired container group.
+	 * @return generic server container group removed.  If no container group exists for this factory, then
+	 * nothing was actually removed, and <code>null</code> will be returned.  
+	 * 
+	 * @see #getContainerGroup(String, int)
+	 */
 	public IGenericServerContainerGroup removeContainerGroup(String hostname, int port);
 
 }
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java
index 9bb89ec..7c1ec24 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java
@@ -23,6 +23,14 @@
 	protected String connectTarget;
 	protected ISharedObjectContainer clientContainer;
 	protected int waitTime = 40000;
+	/**
+	 * @since 5.1
+	 */
+	protected String clientId = null;
+	/**
+	 * @since 5.1
+	 */
+	protected String password = null;
 
 	protected abstract ISharedObjectContainer createContainer() throws ContainerCreateException;
 
@@ -37,6 +45,12 @@
 				waitTime = new Integer(args[i + 1]).intValue();
 				i++;
 			}
+			if (args[i].equals("-clientId")) { //$NON-NLS-1$
+				clientId = args[i + 1];
+			}
+			if (args[i].equals("-connectPassword")) { //$NON-NLS-1$
+				password = args[i + 1];
+			}
 		}
 	}
 
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java
index ba4474c..dd71dc5 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java
@@ -35,12 +35,10 @@
 
 	public static final int DEFAULT_TIMEOUT = TCPServerSOContainer.DEFAULT_KEEPALIVE;
 
-	public static final String CONTAINER_FACTORY_NAME = GenericContainerInstantiator.class
-			.getName();
+	public static final String CONTAINER_FACTORY_NAME = GenericContainerInstantiator.class.getName();
 	public static final String CONTAINER_FACTORY_CLASS = CONTAINER_FACTORY_NAME;
 
-	public static final String COMPOSENT_CONTAINER_NAME = GenericContainerInstantiator.class
-			.getName();
+	public static final String COMPOSENT_CONTAINER_NAME = GenericContainerInstantiator.class.getName();
 
 	// Number of clients to create
 	static int clientCount = 1;
@@ -73,8 +71,7 @@
 			}
 		}
 		// Setup factory descriptions since Eclipse does not do this for us
-		contd = new ContainerTypeDescription(CONTAINER_FACTORY_NAME,
-				CONTAINER_FACTORY_CLASS, null);
+		contd = new ContainerTypeDescription(CONTAINER_FACTORY_NAME, CONTAINER_FACTORY_CLASS, null);
 		ContainerFactory.getDefault().addDescription(contd);
 		for (int i = 0; i < clientCount; i++) {
 			sm[i] = createClient();
@@ -84,18 +81,13 @@
 	protected ISharedObjectContainer createClient() throws Exception {
 		// Make identity instance for the new container
 		ID newContainerID = IDFactory.getDefault().createGUID();
-		ISharedObjectContainer result = SharedObjectContainerFactory
-				.getDefault().createSharedObjectContainer(
-						contd,
-						new Object[] { newContainerID,
-								new Integer(DEFAULT_TIMEOUT) });
+		ISharedObjectContainer result = SharedObjectContainerFactory.getDefault().createSharedObjectContainer(contd, new Object[] {newContainerID, new Integer(DEFAULT_TIMEOUT)});
 		return result;
 	}
 
 	public void connect(ID server) throws Exception {
 		for (int i = 0; i < clientCount; i++) {
-			System.out
-					.print("ClientApplication " + sm[i].getID().getName() + " joining " + server.getName() + "..."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			System.out.print("ClientApplication " + sm[i].getID().getName() + " joining " + server.getName() + "..."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			sm[i].connect(server, null);
 			System.out.println("completed."); //$NON-NLS-1$
 		}
@@ -103,8 +95,7 @@
 
 	public void disconnect() {
 		for (int i = 0; i < clientCount; i++) {
-			System.out
-					.print("ClientApplication " + sm[i].getID().getName() + " leaving..."); //$NON-NLS-1$ //$NON-NLS-2$
+			System.out.print("ClientApplication " + sm[i].getID().getName() + " leaving..."); //$NON-NLS-1$ //$NON-NLS-2$
 			sm[i].disconnect();
 			System.out.println("completed."); //$NON-NLS-1$
 		}
@@ -116,16 +107,11 @@
 				ISharedObjectContainer scg = sm[j];
 				sharedObjects = new ID[sharedObjectClassNames.length];
 				for (int i = 0; i < sharedObjectClassNames.length; i++) {
-					System.out
-							.println("Creating sharedObject: " + sharedObjectClassNames[i] + " for client " + scg.getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
-					ISharedObject so = (ISharedObject) Class.forName(
-							sharedObjectClassNames[i]).newInstance();
-					sharedObjects[i] = IDFactory.getDefault().createStringID(
-							sharedObjectClassNames[i] + "_" + i); //$NON-NLS-1$
-					scg.getSharedObjectManager().addSharedObject(
-							sharedObjects[i], so, new HashMap());
-					System.out
-							.println("Created sharedObject for client " + scg.getID().getName()); //$NON-NLS-1$
+					System.out.println("Creating sharedObject: " + sharedObjectClassNames[i] + " for client " + scg.getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
+					ISharedObject so = (ISharedObject) Class.forName(sharedObjectClassNames[i]).newInstance();
+					sharedObjects[i] = IDFactory.getDefault().createStringID(sharedObjectClassNames[i] + "_" + i); //$NON-NLS-1$
+					scg.getSharedObjectManager().addSharedObject(sharedObjects[i], so, new HashMap());
+					System.out.println("Created sharedObject for client " + scg.getID().getName()); //$NON-NLS-1$
 				}
 			}
 		}
@@ -137,10 +123,8 @@
 			return;
 		for (int j = 0; j < clientCount; j++) {
 			for (int i = 0; i < sharedObjects.length; i++) {
-				System.out
-						.println("Removing sharedObject: " + sharedObjects[i].getName() + " for client " + sm[j].getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
-				sm[j].getSharedObjectManager().removeSharedObject(
-						sharedObjects[i]);
+				System.out.println("Removing sharedObject: " + sharedObjects[i].getName() + " for client " + sm[j].getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
+				sm[j].getSharedObjectManager().removeSharedObject(sharedObjects[i]);
 			}
 		}
 	}
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java
index f51b6d3..d14bc8d 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java
@@ -9,11 +9,13 @@
 ******************************************************************************/
 package org.eclipse.ecf.server.generic.app;
 
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.ecf.core.ContainerCreateException;
+import org.eclipse.ecf.core.*;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.core.security.IConnectInitiatorPolicy;
 import org.eclipse.ecf.core.sharedobject.ISharedObjectContainer;
 import org.eclipse.ecf.internal.server.generic.Activator;
+import org.eclipse.ecf.provider.generic.ClientSOContainer;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 
@@ -22,6 +24,8 @@
  */
 public class GenericClientApplication extends AbstractGenericClientApplication implements IApplication {
 
+	private static final String GENERIC_CLIENT_CONTAINER_TYPE = "ecf.generic.client"; //$NON-NLS-1$
+
 	protected final Object appLock = new Object();
 	protected boolean done = false;
 
@@ -47,7 +51,24 @@
 	}
 
 	protected ISharedObjectContainer createContainer() throws ContainerCreateException {
-		return (ISharedObjectContainer) Activator.getDefault().getContainerManager().getContainerFactory().createContainer("ecf.generic.client"); //$NON-NLS-1$
+		IContainerFactory f = Activator.getDefault().getContainerManager().getContainerFactory();
+		ClientSOContainer client = (ClientSOContainer) ((clientId == null) ? f.createContainer(GENERIC_CLIENT_CONTAINER_TYPE) : f.createContainer(GENERIC_CLIENT_CONTAINER_TYPE, clientId));
+		if (password != null) {
+			client.setConnectInitiatorPolicy(new IConnectInitiatorPolicy() {
+				public void refresh() {
+					//nothing
+				}
+
+				public Object createConnectData(IContainer container, ID targetID, IConnectContext context) {
+					return password;
+				}
+
+				public int getConnectTimeout() {
+					return 30000;
+				}
+			});
+		}
+		return client;
 	}
 
 	protected void waitForDone() {
@@ -64,14 +85,7 @@
 	}
 
 	protected String[] getArguments(IApplicationContext context) {
-		String[] originalArgs = (String[]) context.getArguments().get("application.args"); //$NON-NLS-1$
-		if (originalArgs == null)
-			return new String[0];
-		final List l = new ArrayList();
-		for (int i = 0; i < originalArgs.length; i++)
-			if (!originalArgs[i].equals("-pdelaunch")) //$NON-NLS-1$
-				l.add(originalArgs[i]);
-		return (String[]) l.toArray(new String[] {});
+		return (String[]) context.getArguments().get("application.args"); //$NON-NLS-1$
 	}
 
 }
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch b/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch
index 544a9f9..5e96e79 100644
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch
+++ b/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch
@@ -1,22 +1,24 @@
-<?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/Remote Updatesite Server"/>
-<booleanAttribute key="default_auto_start" value="false"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -consolelog -application org.eclipse.ecf.examples.updatesite.server.updateSiteServer file:///c:/build.server/ecf.build/updateSite/"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.osgi.service.http.port=8081"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="true"/>
-<stringAttribute key="target_bundles" value="org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.common@default:default,org.eclipse.core.jobs@default:default,org.eclipse.osgi.services@default:default,javax.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.mortbay.jetty@default:default,org.eclipse.equinox.app@default:true,org.eclipse.equinox.http.jetty@default:true,org.eclipse.equinox.http.registry@default:true,org.eclipse.equinox.registry@default:default,org.apache.commons.logging@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.core.runtime@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.osgi@:,org.eclipse.osgi.util@default:default"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="org.eclipse.ecf.identity@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.updatesite.server@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.provider.jmdns@default:true"/>
-</launchConfiguration>
+<?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/Remote Updatesite Server"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="default_auto_start" value="false"/>
+<intAttribute key="default_start_level" value="4"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -consolelog -application org.eclipse.ecf.examples.updatesite.server.updateSiteServer file:///c:/build.server/ecf.build/updateSite/"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.osgi.service.http.port=8081"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<booleanAttribute key="show_selected_only" value="true"/>
+<stringAttribute key="target_bundles" value="javax.servlet@default:default,org.apache.commons.logging@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.equinox.app@default:true,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:true,org.eclipse.equinox.http.registry@default:true,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@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="org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.updatesite.server@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.jmdns@default:true,org.eclipse.ecf@default:default"/>
+</launchConfiguration>
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 69ee2e1..6bd474a 100644
--- a/server-side/features/org.eclipse.ecf.server.feature/feature.xml
+++ b/server-side/features/org.eclipse.ecf.server.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.serverfeature"
-      label="ECF Server"
-      version="2.0.0.qualifier"
-      provider-name="Eclipse.org">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides a ECF reference server implementation
-   </description>
-
-   <copyright url="http://www.eclipse.org/ecf">
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.serverfeature"
+      label="ECF Server"
+      version="2.0.0.qualifier"
+      provider-name="Eclipse.org">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides a ECF server support.
+   </description>
+
+   <copyright url="http://www.eclipse.org/ecf">
       /*******************************************************************************
 * Copyright (c) 2004 Composent, Inc. and others. All rights reserved.
 * This program and the accompanying materials are made available
@@ -18,10 +18,10 @@
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: Composent, Inc. - initial API and implementation
-******************************************************************************/
-   </copyright>
-
-   <license url="http://www.eclipse.org/ecf">
+******************************************************************************/
+   </copyright>
+
+   <license url="http://www.eclipse.org/ecf">
       About This Content
 May 2, 2006
 License
@@ -41,18 +41,18 @@
 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 http://www.eclipse.org.
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.osgi"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+obtained at http://www.eclipse.org.
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.osgi"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.ecf.server"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
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 cfc47ee..e87ed9d 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
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.server.generic.feature"
-      label="ECF Generic Server"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Generic Server Support
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.server.generic.feature"
+      label="ECF Generic Server"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the ECF Generic Server Support.
+   </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 
@@ -18,29 +18,29 @@
 # 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.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.server.generic"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <includes
+         id="org.eclipse.ecf.remoteservice.feature"
+         version="0.0.0"/>
+
+   <plugin
+         id="org.eclipse.ecf.server"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.server.generic"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.classpath b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/CDC-1.1%Foundation-1.1"/>
-	<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.discovery.all/.gitignore b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.project b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.project
deleted file mode 100644
index 76e4763..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.discovery.all</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.discovery.all/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index a56278c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Tue Mar 10 12:21:04 CET 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-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.discovery.all/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 38d21b5..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Tue Mar 10 12:12:43 CET 2009
-eclipse.preferences.version=1
-pluginProject.equinox=false
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.discovery.all/META-INF/MANIFEST.MF
deleted file mode 100644
index 0fc4709..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Wrapper to start all (known) discovery tests
-Bundle-SymbolicName: org.eclipse.ecf.tests.discovery.all
-Bundle-Version: 1.0.0.qualifier
-Require-Bundle: org.eclipse.ecf.tests.provider.discovery;bundle-version="2.1.0",
- org.eclipse.ecf.tests.provider.jmdns;bundle-version="3.0.0",
- org.eclipse.ecf.tests.provider.jslp;bundle-version="2.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery.local;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2;bundle-version="1.0.0",
- org.eclipse.ecf.tests.provider.dnssd;bundle-version="1.0.0",
- org.junit;bundle-version="3.8.2"
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties b/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
deleted file mode 100644
index 3f4964b..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
-jre.compilation.profile = J2SE-1.4
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/src/org/eclipse/ecf/tests/discovery/all/AllTests.java b/tests/bundles/org.eclipse.ecf.tests.discovery.all/src/org/eclipse/ecf/tests/discovery/all/AllTests.java
deleted file mode 100644
index f9fbe96..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/src/org/eclipse/ecf/tests/discovery/all/AllTests.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.tests.discovery.all;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.ecf.tests.osgi.services.discovery.PublishTest;
-import org.eclipse.ecf.tests.osgi.services.discovery.local.DistributedOSGiBasedStaticInformationTest;
-import org.eclipse.ecf.tests.provider.discovery.CompositeDiscoveryContainerTest;
-import org.eclipse.ecf.tests.provider.discovery.CompositeDiscoveryContainerWithoutRegTest;
-import org.eclipse.ecf.tests.provider.discovery.CompositeDiscoveryServiceContainerTest;
-import org.eclipse.ecf.tests.provider.discovery.WithoutJMDNSCompositeDiscoveryServiceContainerTest;
-import org.eclipse.ecf.tests.provider.discovery.WithoutJSLPCompositeDiscoveryServiceContainerTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSDiscoveryServiceTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSDiscoveryTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSDiscoveryWithoutRegTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSServiceInfoTest;
-import org.eclipse.ecf.tests.provider.jmdns.identity.JMDNSServiceIDTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPDiscoveryServiceTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPDiscoveryTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPDiscoveryWithoutRegTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPServiceInfoTest;
-import org.eclipse.ecf.tests.provider.jslp.identity.JSLPServiceIDTest;
-
-public class AllTests {
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(
-				"Test for org.eclipse.ecf.tests.discovery.all");
-		//$JUnit-BEGIN$
-		
-		String str = System.getProperty("org.eclipse.ecf.tests.discovery.all", "1");
-		int iterations = Integer.parseInt(str);
-		
-		for (int i = 0; i < iterations; i++) {
-			// ECF RFC 119 discovery
-			suite.addTestSuite(PublishTest.class);
-			
-			// SEN file based discovery
-			suite.addTestSuite(DistributedOSGiBasedStaticInformationTest.class);
-			
-			// jSLP
-			suite.addTestSuite(JSLPDiscoveryServiceTest.class);
-			suite.addTestSuite(JSLPDiscoveryTest.class);
-			suite.addTestSuite(JSLPDiscoveryWithoutRegTest.class);
-			suite.addTestSuite(JSLPServiceInfoTest.class);
-			suite.addTestSuite(JSLPServiceIDTest.class);
-			
-			// JmDNS
-			suite.addTestSuite(JMDNSDiscoveryServiceTest.class);
-			suite.addTestSuite(JMDNSDiscoveryTest.class);
-			suite.addTestSuite(JMDNSDiscoveryWithoutRegTest.class);
-			suite.addTestSuite(JMDNSServiceInfoTest.class);
-			suite.addTestSuite(JMDNSServiceIDTest.class);
-
-			// composite
-			suite.addTestSuite(CompositeDiscoveryServiceContainerTest.class);
-			suite.addTestSuite(CompositeDiscoveryContainerTest.class);
-			suite.addTestSuite(CompositeDiscoveryContainerWithoutRegTest.class);
-			suite.addTestSuite(WithoutJSLPCompositeDiscoveryServiceContainerTest.class);
-			suite.addTestSuite(WithoutJMDNSCompositeDiscoveryServiceContainerTest.class);
-		}
-		//$JUnit-END$
-		return suite;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.classpath b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/CDC-1.1%Foundation-1.1"/>
-	<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.discovery.remote-extender/.gitignore b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.project b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.project
deleted file mode 100644
index 4524ca0..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.discovery.remote-extender</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.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 43655f2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,73 +0,0 @@
-#Fri Oct 15 17:27:15 PDT 2010
-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.compliance=1.4
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 5a22e23..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Sat Mar 14 14:30:28 CET 2009
-eclipse.preferences.version=1
-pluginProject.equinox=false
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/META-INF/MANIFEST.MF
deleted file mode 100644
index cbf5b11..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.ecf.tests.discovery.remote_extender
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.discovery.remote_extender.Activator
-Import-Package: org.eclipse.ecf.osgi.services.distribution;version="1.0.0",
- org.osgi.framework;version="1.3.0",
- org.osgi.framework.hooks.service;version="1.0.0"
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
-Bundle-Vendor: %Bundle-Vendor.0
-Export-Package: org.eclipse.ecf.tests.discovery.remote_extender;version="1.0.0"
-Bundle-ActivationPolicy: lazy
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/OSGI-INF/l10n/bundle.properties b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/OSGI-INF/l10n/bundle.properties
deleted file mode 100644
index a218455..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/OSGI-INF/l10n/bundle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-#Properties file for org.eclipse.ecf.tests.discovery.remote-extender
-Bundle-Vendor.0 = Eclipse.org
-Bundle-Name.0 = ECF Discovery Provider Remote Extender
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/about.html b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/about.html
deleted file mode 100644
index 4c79781..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!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</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/build.properties b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/build.properties
deleted file mode 100644
index f6bc7b9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/l10n/bundle.properties,\
-               about.html,\
-               OSGI-INF/
-javacErrors.. = -assertIdentifier,-enumIdentifier
-jre.compilation.profile = J2SE-1.4
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/src/org/eclipse/ecf/tests/discovery/remote_extender/Activator.java b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/src/org/eclipse/ecf/tests/discovery/remote_extender/Activator.java
deleted file mode 100644
index e07ad34..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/src/org/eclipse/ecf/tests/discovery/remote_extender/Activator.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 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.tests.discovery.remote_extender;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Filter;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.hooks.service.EventHook;
-
-public class Activator implements BundleActivator, EventHook {
-	
-	// "_" is a bad tag character for SLP 
-	private static final String MARKER = "org.eclipse.ecf.tests.discovery.remote-extender.Activator.class";
-
-	private static final String CONTAINER_TYPE = System.getProperty("org.eclipse.ecf.tests.discovery.remote-extender.containertype", "ecf.r_osgi.peer");
-	
-	private final String service = System.getProperty("org.eclipse.ecf.tests.discovery.remote-extender.service");
-	private Filter filter;
-	private Map overwrites;
-	private BundleContext context;
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext aContext) throws Exception {
-		if(service == null) {
-			return;
-		}
-		context = aContext;
-		overwrites = new HashMap();
-		filter = context.createFilter("(&" +
-				"(" + Constants.OBJECTCLASS + "=" + service + ")" +
-				"(!(" + IDistributionConstants.SERVICE_EXPORTED_INTERFACES + "=" + new String[]{service} + "))" +
-						")");
-		
-		context.registerService(EventHook.class.getName(), this, null);
-		
-		ServiceReference[] serviceReferences = context.getAllServiceReferences(service, null);
-		if(serviceReferences != null) {
-			for (int i = 0; i < serviceReferences.length; i++) {
-				ServiceReference serviceReference = serviceReferences[i];
-				overwriteServiceRegistration(serviceReference);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		this.context = null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.framework.hooks.service.EventHook#event(org.osgi.framework.ServiceEvent, java.util.Collection)
-	 */
-	public void event(ServiceEvent event, Collection contexts) {
-		ServiceReference serviceReference = event.getServiceReference();
-		// either this bundle is not active or it is not responsible
-		// also it might be a cyclic event (http://www.eclipse.org/forums/index.php?t=msg&goto=513544&)
-		if(context == null || !filter.match(serviceReference) || serviceReference.getProperty(MARKER) != null) {
-			return;
-		}
-		
-		switch (event.getType()) {
-			case ServiceEvent.MODIFIED:
-				throw new UnsupportedOperationException("not yet implemented");
-			case ServiceEvent.MODIFIED_ENDMATCH:
-				throw new UnsupportedOperationException("not yet implemented");
-			case ServiceEvent.REGISTERED:
-				contexts.clear();
-				overwriteServiceRegistration(serviceReference);
-				break;
-			case ServiceEvent.UNREGISTERING:
-				ServiceRegistration serviceRegistration = (ServiceRegistration) overwrites.get(serviceReference);
-				serviceRegistration.unregister();
-				break;
-		}
-	}
-
-	private void overwriteServiceRegistration(ServiceReference aServiceReference) {
-		Properties props = new Properties();
-		String[] keys = aServiceReference.getPropertyKeys();
-		for (int i = 0; i < keys.length; i++) {
-			String key = keys[i];
-			if(!Constants.SERVICE_ID.equals(key) || Constants.SERVICE_RANKING.equals(key)) {
-				props.put(key, aServiceReference.getProperty(key));
-			}
-		}
-		props.put(MARKER, Boolean.TRUE);
-		
-		// add OSGi service property indicated export of all interfaces exposed by service (wildcard)
-		props.put(IDistributionConstants.SERVICE_EXPORTED_INTERFACES, new String[]{service});
-		// add OSGi service property specifying config
-		props.put(IDistributionConstants.SERVICE_EXPORTED_CONFIGS, CONTAINER_TYPE);
-		// register remote service
-		Object remoteService = this.context.getService(aServiceReference);
-		// keep in mind that this removes all other interfaces the service was originally registered for
-		ServiceRegistration serviceRegistration = context.registerService(service, remoteService, props);
-		overwrites.put(aServiceReference, serviceRegistration);
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.classpath
deleted file mode 100644
index 2fbb7a2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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.osgi.services.discovery.local.poststarted/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.project
deleted file mode 100644
index d1c2788..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted</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.osgi.services.discovery.local.poststarted/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3cf3e75..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-#Thu Mar 12 10:54:05 CET 2009
-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.osgi.services.discovery.local.poststarted/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/META-INF/MANIFEST.MF
deleted file mode 100644
index 65f6430..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted
-Bundle-Version: 1.0.0.qualifer
-Bundle-Activator: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted.Activator
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Bundle-Vendor: %pluginProvider
-Import-Package: org.osgi.framework;version="1.4.0"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/OSGI-INF/remote-service/HelloWorld.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/OSGI-INF/remote-service/HelloWorld.xml
deleted file mode 100644
index 7375496..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/OSGI-INF/remote-service/HelloWorld.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-  <service-description>
-    <provide interface="org.eclipse.ecf.helloworld.HelloWorldService"/>
-    <property name="osgi.remote.configuration.type">pojo</property>
-    <property name="osgi.remote.configuration.pojo.address">https://localhost:8080/helloworld</property>
-  </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/plugin.properties
deleted file mode 100644
index 4eef92a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-#################################################################################
-# Copyright (c) 2009 Markus Alexander Kuppe 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
-#
-# Contributors:
-#   Markus Alexander Kuppe - initial API and implementation
-#################################################################################
-pluginName=OSGi R4.2 Compendium Local Discovery Tests Poststarted
-pluginProvider=Eclipse.org
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted/Activator.java
deleted file mode 100644
index 63d506e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted/Activator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.classpath
deleted file mode 100644
index 2fbb7a2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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.osgi.services.discovery.local.poststarted2/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.project
deleted file mode 100644
index 858f913..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2</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.osgi.services.discovery.local.poststarted2/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c6c2ae7..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-#Thu Mar 12 10:54:13 CET 2009
-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.osgi.services.discovery.local.poststarted2/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/MANIFEST.MF
deleted file mode 100644
index 5562a7c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2.Activator
-Remote-Service: OSGI-INF/remote-service/*.xml, /META-INF/osgi/services.remote, ${java.io.tmpdir}/HelloGalileoService.xml, ${java.io.tmpdir}/poststart2/*.xml
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Bundle-Vendor: %pluginProvider
-Import-Package: org.osgi.framework;version="1.4.0"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/osgi/services.remote b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/osgi/services.remote
deleted file mode 100644
index 976b96a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/osgi/services.remote
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-  <service-description>
-    <provide interface="org.eclipse.ecf.hellomoon.HelloMoonService"/>
-    <property name="osgi.remote.configuration.type">pojo</property>
-    <property name="osgi.remote.configuration.pojo.address">jsoc://moon:4711/hellomoon</property>
-  </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/build.properties
deleted file mode 100644
index aa1a008..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/plugin.properties
deleted file mode 100644
index 0544056..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-#################################################################################
-# Copyright (c) 2009 Markus Alexander Kuppe 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
-#
-# Contributors:
-#   Markus Alexander Kuppe - initial API and implementation
-#################################################################################
-pluginName=OSGi R4.2 Compendium Local Discovery Tests Postsstarterd 2
-pluginProvider=Eclipse.org
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted2/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted2/Activator.java
deleted file mode 100644
index 728484c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted2/Activator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.classpath
deleted file mode 100644
index 731ea5f..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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.osgi.services.discovery.local/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.project
deleted file mode 100644
index 8a8b705..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.discovery.local</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.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3eb0882..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Sat Apr 24 12:22:52 PDT 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-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.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/META-INF/MANIFEST.MF
deleted file mode 100644
index f737665..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery.local
-Bundle-Version: 1.0.0.qualifer
-Bundle-Activator: org.eclipse.ecf.tests.osgi.services.discovery.local.Activator
-Require-Bundle: org.junit;bundle-version="3.8.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Import-Package: org.eclipse.core.runtime;version="3.4.0",
- org.osgi.framework;version="1.4.0"
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.ecf.tests.osgi.services.discovery.local
-Bundle-Vendor: %pluginProvider
-
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/OSGI-INF/remote-service/GreeterService.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/OSGI-INF/remote-service/GreeterService.xml
deleted file mode 100644
index 1b49e7d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/OSGI-INF/remote-service/GreeterService.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-  <service-description>
-    <provide interface="org.eclipse.ecf.pojo.hello.HelloService"/>
-
-    <property name="service.intents">SOAP HTTP</property>
-    <property name="osgi.remote.configuration.type">pojo</property>
-    <property name="osgi.remote.configuration.pojo.address">http://localhost:9000/hello</property>
-  </service-description>
-  <service-description>
-    <provide interface="org.eclipse.ecf.pojo.hello.GreeterService"/>
-
-    <property name="service.intents">SOAP HTTP</property>
-    <property name="osgi.remote.configuration.type">pojo</property>
-    <property name="osgi.remote.configuration.pojo.address">http://localhost:9005/greeter</property>
-  </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/build.properties
deleted file mode 100644
index 4b898f8..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/,\
-               plugin.properties,\
-               config.ini,\
-               data/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/config.ini b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/config.ini
deleted file mode 100644
index d9082d6..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/config.ini
+++ /dev/null
@@ -1,64 +0,0 @@
-# Eclipse runtime configuration file
-# This file contains a number of key/value pairs that are merged into the 
-# System properties on system startup.  The values control the way the 
-# runtime is structured and runs.
-
-# Note:  Only platform:/base/ and file: URLs are supported.  In general the 
-# URLs given may include a version number (e.g., .../location_1.2.3).  
-# If a version is not specified, the system binds
-# to the location which matches exactly or to the versioned location with the
-# latest version number.  If a version number is given then only exact matches
-# are considered.
-
-# The URL for the runtime entry point.  The default value is
-# platform:/base/plugins/org.eclipse.osgi 
-#osgi.framework = platform:/base/plugins/org.eclipse.osgi
-
-# The classpath for the framework found at the osgi.framework location.  This 
-# comma-separated list contains either URLs or simple element names.  Simple
-# names are assumed to be relative to the framework's install directory.  
-# Typically this value need not be set as it is initialized by the framework itself.
-# Version match searching is not done for URLs listed here.
-#osgi.frameworkClassPath =
-
-# The comma-separated list of locations to search for the splash screen file (splash.bmp).
-# For each list element a subdirectory structure based on the pattern nl/<locale> is searched.
-# The system binds to the first matching file.  There is no default value.
-osgi.splashPath = platform:/base/plugins/org.eclipse.platform
-
-# The location of the splash screen file.  If this value is set at system startup it is used 
-# in favour of the osgi.splashPath searching outlined above.  If the value is not set 
-# the searching is done and this key is bound to the result of the search.
-#osgi.splashLocation =
-
-# The comma-separated list of bundles which are automatically installed and optionally started
-# once the system is up and running.  Each entry if of the form
-#     <URL | simple bundle location>[@ [<startlevel>] [":start"]]
-# If the startlevel is omitted then the framework will use the default start level for the bundle.
-# If the "start" tag is added then the bundle will be marked as started after being installed.
-# Simple bundle locations are interepreted as relative to the framework's parent directory.
-# The startlevel indicates the OSGi start level at which the bundle should run.
-# If this value is not set, the system computes an appropriate default.
-#osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@start, org.eclipse.equinox.log@4:start
-
-# The product to run.  A given Eclipse configuration may contain many products.
-# The product identified will supply the branding (window icons, title bar text) etc 
-# as well as define the default application to run.  
-eclipse.product=org.eclipse.sdk.ide
-
-# The application to run.  The value specified here is the id of the application extension
-# the runtime will find, instantiate and execute once the system is up.  Note that typically 
-# the identified eclipse.product defines the default application to run.
-#eclipse.application=
-
-# The default workspace location
-osgi.instance.area.default=@user.home/workspace
-
-# The build identifier
-eclipse.buildId=M20071023-1652
-
-# entry required for gtk configurations of eclipse to enable stand-alone help
-osgi.ws=gtk
-
-# End of file marker - must be here
-eof=eof
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGalileoService.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGalileoService.xml
deleted file mode 100644
index 520e870..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGalileoService.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-  <service-description>
-    <provide interface="org.eclipse.ecf.galileo.HelloGalileoService"/>
-    <property name="osgi.remote.configuration.type">pojo</property>
-    <property name="osgi.remote.configuration.pojo.address">jssoc://galileo:4712/hellogalileo</property>
-  </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGanymedeService.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGanymedeService.xml
deleted file mode 100644
index 5685777..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGanymedeService.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-  <service-description>
-    <provide interface="org.eclipse.ecf.ganymede.HelloGanymedeService"/>
-    <property name="osgi.remote.configuration.type">pojo</property>
-    <property name="osgi.remote.configuration.pojo.address">jssoc://ganymede:4713/helloganymede</property>
-  </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/org.eclipse.ecf.tests.osgi.services.discovery.local.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/org.eclipse.ecf.tests.osgi.services.discovery.local.launch
deleted file mode 100644
index 4e0529b..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/org.eclipse.ecf.tests.osgi.services.discovery.local.launch
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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="false"/>
-<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="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.tests.osgi.services.discovery.local"/>
-</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.osgi.services.discovery.local"/>
-<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"/>
-<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.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 -clean -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.osgi.services.discovery.local"/>
-<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 -Xmx384m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.buckminster.cmdline.product"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.common@2:true,org.eclipse.osgi@-1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.app@default:default,org.hamcrest.core@default:default,org.eclipse.core.runtime@default:true,org.eclipse.equinox.registry@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.concurrent@default:default,org.eclipse.core.jobs@default:default,org.junit*4.8.1.v4_8_1_v20100427-1100@default:default,org.eclipse.core.contenttype@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.identity@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<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.osgi.services.discovery.local/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/plugin.properties
deleted file mode 100644
index bd8c5a3..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-#################################################################################
-# Copyright (c) 2009 Markus Alexander Kuppe 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
-#
-# Contributors:
-#   Markus Alexander Kuppe - initial API and implementation
-#################################################################################
-pluginName=OSGi R4.2 Compendium Local Discovery Tests
-pluginProvider=Eclipse.org
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/Activator.java
deleted file mode 100644
index 1eae35c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/Activator.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.tests.osgi.services.discovery.local;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-public class Activator implements BundleActivator {
-
-	// The shared instance
-	private static Activator plugin;
-
-	private BundleContext bc = null;
-
-	/**
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		plugin = this;
-		bc = context;
-		// To startup the implementation bundle we try to start it.
-		// TODO remove this bad hack.
-		boolean startBundle = startBundle("org.eclipse.ecf.osgi.services.discovery.local");
-		if(!startBundle) {
-			System.err.println("Missing org.eclipse.ecf.osgi.services.discovery.local bundle?");
-		}
-	}
-
-	/**
-	 * @throws BundleException
-	 */
-	public boolean startBundle(final String symbolicName) throws BundleException {
-		Bundle[] bundles = bc.getBundles();
-		for (int i = 0; i < bundles.length; i++) {
-			if (bundles[i].getSymbolicName().startsWith(symbolicName)) {
-				bundles[i].start();
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-	public BundleContext getBundleContext() {
-		return bc;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DiscoveredServiceTrackerImpl.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DiscoveredServiceTrackerImpl.java
deleted file mode 100644
index 19f2efa..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DiscoveredServiceTrackerImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.tests.osgi.services.discovery.local;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-
-public class DiscoveredServiceTrackerImpl implements DiscoveredServiceTracker {
-
-	private Collection descriptions = Collections
-			.synchronizedSet(new HashSet());
-
-	private int availNotifications = 0;
-	private int unavailNotifications = 0;
-	private int modifiedNotifications = 0;
-
-	/**
-	 * @return the availNotifications
-	 */
-	public int getAvailNotifications() {
-		return availNotifications;
-	}
-
-	/**
-	 * @return the unavailNotifications
-	 */
-	public int getUnavailNotifications() {
-		return unavailNotifications;
-	}
-
-	public Collection getAvailableDescriptions() {
-		return Collections.unmodifiableCollection(descriptions);
-	}
-
-	/**
-	 * @return the modifiedNotifications
-	 */
-	public int getModifiedNotifications() {
-		return modifiedNotifications;
-	}
-
-	public void clearLists() {
-		if (descriptions != null) {
-			descriptions.clear();
-		}
-	}
-
-	public void serviceChanged(DiscoveredServiceNotification notification) {
-		switch (notification.getType()) {
-		case DiscoveredServiceNotification.AVAILABLE:
-			System.out.println("["+this+"] "+"Available notified for "
-					+ notification.getServiceEndpointDescription()
-							.getProvidedInterfaces());
-			descriptions.add(notification.getServiceEndpointDescription());
-			availNotifications++;
-			break;
-		case DiscoveredServiceNotification.MODIFIED:
-			System.out.println("["+this+"] "+"Modified notified for "
-					+ notification.getServiceEndpointDescription()
-							.getProvidedInterfaces());
-			descriptions.remove(notification.getServiceEndpointDescription());
-			descriptions.add(notification.getServiceEndpointDescription());
-			modifiedNotifications++;
-			break;
-		case DiscoveredServiceNotification.UNAVAILABLE:
-			System.out.println("["+this+"] "+"Unavailable notified for "
-					+ notification.getServiceEndpointDescription()
-							.getProvidedInterfaces());
-			descriptions.remove(notification.getServiceEndpointDescription());
-			unavailNotifications++;
-			break;
-		default:
-			break;
-		}
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DistributedOSGiBasedStaticInformationTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DistributedOSGiBasedStaticInformationTest.java
deleted file mode 100644
index 8ad9687..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DistributedOSGiBasedStaticInformationTest.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are 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
- */
-package org.eclipse.ecf.tests.osgi.services.discovery.local;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-/**
- * @author Thomas Kiesslich
- * 
- */
-public class DistributedOSGiBasedStaticInformationTest extends TestCase {
-
-	/**
-	 * @throws java.lang.Exception
-	 */
-	protected void setUp() throws Exception {
-	}
-
-	/**
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-
-	/**
-	 * These services come from the default location of this bundle.
-	 */
-	public void testReadingFromXMLBundle() {
-		String interfaceName1 = "org.eclipse.ecf.pojo.hello.HelloService";
-		String interfaceName2 = "org.eclipse.ecf.pojo.hello.GreeterService";
-		DiscoveredServiceTrackerImpl discoServiceTracker = new DiscoveredServiceTrackerImpl();
-		registerDiscoveredServiceTracker(null, null, null, discoServiceTracker);
-		assertEquals(2, discoServiceTracker.getAvailNotifications());
-		Iterator /* <ServiceEndpointDescription> */result = discoServiceTracker
-				.getAvailableDescriptions().iterator();
-		boolean foundInterface1 = false;
-		boolean foundInterface2 = false;
-		while (result.hasNext()) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) result
-					.next();
-			if (sed.getProvidedInterfaces().contains(interfaceName1)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("SOAP HTTP", props.get("service.intents"));
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("http://localhost:9000/hello", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface1 = true;
-			} else if (sed.getProvidedInterfaces().contains(interfaceName2)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("SOAP HTTP", props.get("service.intents"));
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("http://localhost:9005/greeter", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface2 = true;
-			} else {
-				fail("a ServiceEndpointDescription found that is not expected");
-			}
-		}
-		assertTrue(foundInterface1);
-		assertTrue(foundInterface2);
-	}
-
-	/**
-	 * This service comes from the default location in bundle
-	 * org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted.
-	 */
-	public void testGetServicesFromDefaultLocation() {
-		String interfaceName1 = "org.eclipse.ecf.helloworld.HelloWorldService"; //$NON-NLS-1$
-		DiscoveredServiceTrackerImpl discoServiceTracker = new DiscoveredServiceTrackerImpl();
-		Activator ac = Activator.getDefault();
-		assertNotNull(ac);
-		registerDiscoveredServiceTracker(interfaceName1, null, null,
-				discoServiceTracker);
-		// start up post started
-		boolean startBundle = false;
-		try {
-			startBundle = ac
-					.startBundle("org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted");
-		} catch (BundleException e) {
-			fail(e.getMessage());
-		}
-		assertTrue(startBundle);
-		assertEquals(1, discoServiceTracker.getAvailNotifications());
-		Iterator /* <ServiceEndpointDescription> */result = discoServiceTracker
-				.getAvailableDescriptions().iterator();
-		boolean foundInterface1 = false;
-		while (result.hasNext()) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) result
-					.next();
-			if (sed.getProvidedInterfaces().contains(interfaceName1)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("https://localhost:8080/helloworld", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface1 = true;
-			} else {
-				fail("a ServiceEndpointDescription found that is not expected");
-			}
-		}
-		assertTrue(foundInterface1);
-	}
-
-	/**
-	 * This services are all referenced from the Manifest Header entry
-	 * remote-service in the bundle
-	 * org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2 .
-	 */
-	public void testGetServicesFromManifestDefinedLocations() {
-		createDataFilesInTmp();
-		
-		String interfaceName1 = "org.eclipse.ecf.hellomoon.HelloMoonService";
-		String interfaceName2 = "org.eclipse.ecf.galileo.HelloGalileoService";
-		String interfaceName3 = "org.eclipse.ecf.ganymede.HelloGanymedeService";
-		DiscoveredServiceTrackerImpl discoServiceTracker = new DiscoveredServiceTrackerImpl();
-		Activator ac = Activator.getDefault();
-		assertNotNull(ac);
-		registerDiscoveredServiceTracker(interfaceName1, interfaceName2,
-				interfaceName3, discoServiceTracker);
-		// start up post started
-		boolean startBundle = false;
-		try {
-			startBundle = ac
-					.startBundle("org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2");
-		} catch (BundleException e) {
-			fail(e.getMessage());
-		}
-		assertTrue(startBundle);
-		assertEquals(3, discoServiceTracker.getAvailNotifications());
-		Iterator /* <ServiceEndpointDescription> */result = discoServiceTracker
-				.getAvailableDescriptions().iterator();
-		boolean foundInterface1 = false;
-		boolean foundInterface2 = false;
-		boolean foundInterface3 = false;
-		while (result.hasNext()) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) result
-					.next();
-			if (sed.getProvidedInterfaces().contains(interfaceName1)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("jsoc://moon:4711/hellomoon", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface1 = true;
-			} else if (sed.getProvidedInterfaces().contains(interfaceName2)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("jssoc://galileo:4712/hellogalileo", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface2 = true;
-			} else if (sed.getProvidedInterfaces().contains(interfaceName3)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("jssoc://ganymede:4713/helloganymede", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface3 = true;
-			} else {
-				fail("a ServiceEndpointDescription found that is not expected");
-			}
-		}
-		assertTrue(foundInterface1);
-		assertTrue(foundInterface2);
-		assertTrue(foundInterface3);
-	}
-
-	// create the test data in java.io.tmpdir first for the test to read it later
-	private void createDataFilesInTmp() {
-		String property = System.getProperty("java.io.tmpdir");
-		Activator ac = Activator.getDefault();
-		Bundle bundle = ac.getBundleContext().getBundle();
-		Enumeration e1 = bundle.findEntries("data", "*.xml", false);
-		while (e1.hasMoreElements()) {
-			try {
-				URL url = (URL) e1.nextElement();
-				File file = new File(FileLocator.toFileURL(url).getFile());
-				File tempFile = null;
-				if(file.getName().equals("HelloGalileoService.xml")) {
-					tempFile = new File(property + File.separator + file.getName());
-				} else {
-					File dir = new File(property + File.separator + "poststart2" + File.separator);
-					dir.mkdir();
-					dir.deleteOnExit();
-					tempFile = new File(property + File.separator + "poststart2" + File.separator + file.getName());
-				}
-				copyTo(file, tempFile);
-				tempFile.deleteOnExit();
-			} catch (IOException e) {
-				fail(e.getMessage());
-			}
-		}
-	}
-	
-	private void copyTo(File from, File to) throws IOException {
-		InputStream in = new FileInputStream(from);
-		OutputStream out = new FileOutputStream(to);
-		
-		byte[] buf = new byte[1024];
-		int len;
-		while ((len = in.read(buf)) > 0){
-			out.write(buf, 0, len);
-		}
-		in.close();
-		out.close();
-	}
-
-	/**
-	 * @param interfaceName1
-	 * @param interfaceName2
-	 * @param discoServiceTracker
-	 */
-	private void registerDiscoveredServiceTracker(String interfaceName1,
-			String interfaceName2, String interfaceName3,
-			DiscoveredServiceTrackerImpl discoServiceTracker) {
-		Activator ac = Activator.getDefault();
-		assertNotNull(ac);
-		BundleContext bc = ac.getBundleContext();
-
-		Dictionary properties = new Hashtable();
-		if (interfaceName1 != null) {
-			List interfaces = new ArrayList();
-			interfaces.add(interfaceName1);
-			if (interfaceName2 != null) {
-				interfaces.add(interfaceName2);
-			}
-			if (interfaceName3 != null) {
-				interfaces.add(interfaceName3);
-			}
-			properties
-					.put(
-							DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA,
-							interfaces);
-		}
-		bc.registerService(DiscoveredServiceTracker.class.getName(),
-				discoServiceTracker, properties);
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.classpath
deleted file mode 100644
index ad32c83..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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.6"/>
-	<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.osgi.services.discovery/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
deleted file mode 100644
index fbb61be..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.discovery</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.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2f6de0d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,73 +0,0 @@
-#Thu May 06 14:37:52 PDT 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.6
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
deleted file mode 100644
index c459f9a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
+++ /dev/null
@@ -1,91 +0,0 @@
-#Fri May 08 23:37:35 PDT 2009
-ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
-ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
-CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
-CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
-CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
-CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
-CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
-ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
-ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
-ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
-FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
-FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
-FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
-FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
-ILLEGAL_EXTEND=Warning
-ILLEGAL_IMPLEMENT=Warning
-ILLEGAL_INSTANTIATE=Warning
-ILLEGAL_OVERRIDE=Warning
-ILLEGAL_REFERENCE=Warning
-INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-INVALID_JAVADOC_TAG=Ignore
-INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
-LEAK_EXTEND=Ignore
-LEAK_FIELD_DECL=Ignore
-LEAK_IMPLEMENT=Ignore
-LEAK_METHOD_PARAM=Ignore
-LEAK_METHOD_RETURN_TYPE=Ignore
-METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
-METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
-UNUSED_PROBLEM_FILTERS=Warning
-eclipse.preferences.version=1
-incompatible_api_component_version=Error
-incompatible_api_component_version_include_major_without_breaking_change=Disabled
-incompatible_api_component_version_include_minor_without_api_change=Disabled
-invalid_since_tag_version=Error
-malformed_since_tag=Error
-missing_since_tag=Error
-report_api_breakage_when_major_version_incremented=Disabled
-report_resolution_errors_api_component=Warning
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 050bbd5..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Thu Feb 05 15:23:15 PST 2009
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/META-INF/MANIFEST.MF
deleted file mode 100644
index acd27d9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: OSGi RFC119 Discovery tests
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.internal.osgi.discovery.Activator
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.ecf.core.identity,
- org.eclipse.ecf.core.util,
- org.eclipse.ecf.discovery,
- org.eclipse.ecf.osgi.services.discovery,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
-Require-Bundle: org.junit;bundle-version="3.8.2"
-Bundle-Localization: plugin
-Export-Package: org.eclipse.ecf.tests.internal.osgi.discovery;x-internal:=true,
- org.eclipse.ecf.tests.osgi.services.discovery;version="1.0.0"
-
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html
deleted file mode 100644
index 4c79781..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!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</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/build.properties
deleted file mode 100644
index cdd2db7..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               about.html,\
-               plugin.properties
-src.includes = about.html
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties
deleted file mode 100644
index 1a272bc..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-############################################################################
-# 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
-#
-############################################################################
-plugin.name=ECF Distribution Tests
-plugin.provider=Eclipse.org - ECF
-
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/internal/osgi/discovery/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/internal/osgi/discovery/Activator.java
deleted file mode 100644
index 106f30c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/internal/osgi/discovery/Activator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.ecf.tests.internal.osgi.discovery;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public static final String BUNDLE_NAME = "org.eclipse.ecf.tests.osgi.services.discovery"; //$NON-NLS-1$
-	
-	private BundleContext context;
-	private static Activator plugin;
-
-	public static Activator getDefault() {
-		return plugin;
-	}
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		plugin = this;
-		this.context = context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		this.context = null;
-		plugin = null;
-	}
-
-	public BundleContext getContext() {
-		return context;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/ListenerTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/ListenerTest.java
deleted file mode 100644
index 39eb3f0..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/ListenerTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
-* 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.osgi.services.discovery;
-
-import org.eclipse.ecf.osgi.services.discovery.IHostDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.IProxyDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.LoggingHostDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.LoggingProxyDiscoveryListener;
-import org.eclipse.ecf.tests.internal.osgi.discovery.Activator;
-import org.osgi.framework.ServiceRegistration;
-
-public class ListenerTest extends PublishTest {
-
-	ServiceRegistration hostDiscoveryListenerRegistration;
-	ServiceRegistration proxyDiscoveryListenerRegistration;
-	
-	protected IHostDiscoveryListener createHostDiscoveryListener() {
-		return new LoggingHostDiscoveryListener();
-	}
-
-	protected IProxyDiscoveryListener createProxyDiscoveryListener() {
-		return new LoggingProxyDiscoveryListener();
-	}
-
-	protected void setUp() throws Exception {
-		// Register listeners
-		hostDiscoveryListenerRegistration = Activator.getDefault().getContext().registerService(IHostDiscoveryListener.class.getName(), createHostDiscoveryListener(), null);
-		proxyDiscoveryListenerRegistration = Activator.getDefault().getContext().registerService(IProxyDiscoveryListener.class.getName(), createProxyDiscoveryListener(), null);
-		super.setUp();
-	}
-	
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		hostDiscoveryListenerRegistration.unregister();
-		proxyDiscoveryListenerRegistration.unregister();
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/PublishTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/PublishTest.java
deleted file mode 100644
index 3ec07aa..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/PublishTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
-* 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.osgi.services.discovery;
-
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.List;
-import java.util.Properties;
-
-import junit.framework.TestCase;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.util.Trace;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.eclipse.ecf.tests.internal.osgi.discovery.Activator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-
-public class PublishTest extends TestCase {
-
-	BundleContext context;
-	ID endpointID;
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		context = Activator.getDefault().getContext();
-		endpointID = IDFactory.getDefault().createStringID("myid");
-	}
-	
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		endpointID = null;
-		context = null;
-	}
-	
-	class TestServicePublication implements RemoteServicePublication {
-
-		public ServiceReference getReference() {
-			// TODO Auto-generated method stub
-			return null;
-		}
-		
-	}
-	
-	class DiscoveredServiceTrackerImpl implements DiscoveredServiceTracker {
-
-		public void serviceChanged(DiscoveredServiceNotification notification) {
-			Trace.trace(Activator.BUNDLE_NAME, "DiscoveredServiceTrackerImpl.serviceChanged("+notification+")");
-		}
-		
-	}
-	
-	protected Properties createServicePublicationProperties(List interfaces) {
-		Properties props = new Properties();
-		props.put(RemoteServicePublication.SERVICE_INTERFACE_NAME, interfaces);
-		props.put(RemoteServicePublication.ENDPOINT_CONTAINERID, endpointID);
-		byte[] serviceIdAsBytes = new Long(100).toString().getBytes();
-		props.put("ecf.rsvc.id", serviceIdAsBytes);
-		props.put("ecf.rsvc.ns", "namespace");
-		return props;
-	}
-	
-	protected ServicePublication createServicePublication() {
-		return new TestServicePublication();
-	}
-	
-	public void testServicePublish() throws Exception {
-	    List interfaces = new ArrayList();
-	    interfaces.add("foo.bar");
-		ServiceRegistration reg = context.registerService(ServicePublication.class.getName(), createServicePublication(), (Dictionary) createServicePublicationProperties(interfaces));
-		Thread.sleep(60000);
-		reg.unregister();
-		Thread.sleep(60000);
-	}
-	
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF
index dfa30ca..b0db8d9 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF
@@ -13,7 +13,6 @@
  org.eclipse.ecf.remoteservice;bundle-version="3.0.0",
  org.eclipse.ecf;bundle-version="3.0.0",
  org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0",
  org.junit,
  org.eclipse.equinox.common,
  org.eclipse.equinox.concurrent;bundle-version="1.0.0",
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project
deleted file mode 100644
index d8a4405..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery</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.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 712f540..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,73 +0,0 @@
-#Tue Mar 09 13:55:54 PST 2010
-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.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch
deleted file mode 100644
index 1a8766e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="append.args" value="true"/>
-<stringAttribute key="application" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.GenericMultiServiceHost"/>
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/GenericMultiServiceHostApplication"/>
-<booleanAttribute key="default" value="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.ecf.example.collab,org.apache.httpcomponents.httpcore.nio,ch.ethz.iks.r_osgi.remote,org.eclipse.ecf.provider.jgroups,org.eclipse.ecf.services.quotes.starwars,org.eclipse.ecf.examples.datashare.app,org.eclipse.ecf.tests.provider.datashare.nio,org.eclipse.team.ecf.ui,org.eclipse.ecf.mgmt.app,org.eclipse.ecf.presence.ui,org.eclipse.ecf.discovery.ui.browser,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.provider.bittorrent.ui,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.tests.mgmt.framework,org.eclipse.emf.ecore.change,org.eclipse.ecf.provider.filetransfer.scp,org.eclipse.ecf.examples.osgiservice.hello,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.provider.jms.activemq,com.skype,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.example.collab.editor,org.eclipse.ecf.provider.skype.ui,org.eclipse.ecf.tests.presence,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.provider.irc.bot,org.eclipse.ecf.provider.irc.ui,org.eclipse.ecf.doc,org.eclipse.ecf.tests.sync,org.eclipse.ecf.tests.provider.jslp,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests,org.eclipse.ecf.tests.osgi.services.discovery,org.eclipse.ecf.tests.call,org.eclipse.ecf.provider.nntp.security,org.eclipse.ecf.salvo.application,org.eclipse.ecf.tests.protocol.msn,org.eclipse.ecf.tests.mgmt.ds,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.provider.twitter.ui,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer,org.eclipse.ecf.filetransfer,org.eclipse.ecf.examples.loadbalancing,org.eclipse.ecf.telephony.call,org.eclipse.ecf.salvo.ui.navigator,org.eclipse.ecf.ui.capabilities,org.eclipse.ecf.tests.filetransfer,org.eclipse.ecf.mgmt.ds,org.eclipse.ecf.provider.yahoo.ui,org.eclipse.ecf.tests.provider.jms.activemq,org.eclipse.ecf.ui,org.eclipse.ecf.protocol.nntp.model,org.eclipse.ecf.services.quotes,org.eclipse.ecf.storage,org.eclipse.ecf.mgmt.framework.host,org.eclipse.emf.ecore,org.eclipse.emf.edit.ui,org.eclipse.ecf.examples.updatesite.server,org.eclipse.ecf.provider.jms,org.eclipse.ecf.discovery.ui.properties.tabbed,org.eclipse.ecf.telephony.call.ui,org.eclipse.ecf.tests.provider.jgroups,org.eclipse.ecf.protocol.nntp.store.filesystem,org.eclipse.ecf.example.clients,org.eclipse.ecf.provider.ui,org.eclipse.helios.tests,org.eclipse.ecf.discovery.ui.edit,org.eclipse.ecf.provider.filetransfer.httpclient.ssl,org.jivesoftware.smack,org.eclipse.ecf.provider.jms.qpid,org.eclipse.ecf.discovery.ui.properties,org.eclipse.ecf.samples.nntp,org.eclipse.ecf.provider.datashare,org.eclipse.ecf.provider.twitter.ui.hub,org.eclipse.ecf.server.jgroups,org.eclipse.ecf.provider.irc,org.eclipse.ecf.examples.remoteservice.discovery.local,org.eclipse.ecf.mgmt.app.host,org.eclipse.ecf.datashare,org.eclipse.ecf.examples.remoteservices.hello.consumer,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.ecf.protocol.nntp.model.test,org.eclipse.ecf.provider.xmpp.ui,org.eclipse.ecf.tests.provider.jmdns,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.tests.filetransfer.jreprovider,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.examples.eventadmin.app,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer,org.eclipse.ecf.provider.riena,org.eclipse.ecf.provider.jms.activemq.ui,org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.remoteservice.ui.dosgi,org.eclipse.ecf.provider.filetransfer.efs,com.commonsense.backstop.client.axis,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2,org.eclipse.ecf.tests.sharedobject,org.eclipse.ecf.tests.provider.xmpp,org.eclipse.emf.common.ui,org.eclipse.ecf.tests.storage,org.eclipse.ecf.examples.remoteservices.dictionary.common,com.commonsense.backstop.tests.client.axis,org.eclipse.ecf.discovery.ui,org.eclipse.ecf.protocol.nntp.store.filesystem.tests,org.eclipse.ecf.tests.discovery,org.eclipse.ecf.tests.provider.filetransfer.scp,org.eclipse.ecf.protocol.nntp.core,org.eclipse.ecf.tests.provider.jms.weblogic,org.eclipse.ecf.provider.twitter,org.eclipse.ecf.provider.rss,org.eclipse.ecf.salvo.ui,org.eclipse.ecf.examples.loadbalancing.server,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j,org.eclipse.ecf.provider.r_osgi,org.eclipse.ecf.tests.provider.nntp,org.eclipse.ecf.remoteservice.ui,org.eclipse.emf.edit,org.apache.mime4j,org.eclipse.emf.common,org.eclipse.ecf.tests.provider.filetransfer.efs,org.eclipse.ecf.springframework,org.eclipse.ecf.remoteservice.soap,org.eclipse.ecf.examples.remoteservices.hello.dm.host,org.eclipse.ecf.provider.filetransfer.sharedobject,org.eclipse.ecf.tests.provider.filetransfer.xmpp,org.eclipse.ecf.tests.provider.twitter,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.tests.apache.httpclient.server,org.eclipse.ecf.presence.bot,org.eclipse.ecf.tests.server.generic,org.eclipse.ecf.provider.jslp,org.eclipse.ecf.mgmt.framework,org.eclipse.ecf.tests.osgi.services.discovery.local,org.eclipse.helios.tools,org.eclipse.ecf.provider.aim,org.eclipse.ecf.protocol.nntp.store.derby,org.eclipse.ecf.examples.updatesite.client,ch.ethz.iks.slp,org.eclipse.ecf.provider.nntp.ui,org.eclipse.ecf.tests.filetransfer.httpserver,org.eclipse.ecf.examples.remoteservices.hello.host,org.eclipse.ecf.console,org.eclipse.ecf.provider.skype,org.eclipse.team.ecf.core,org.eclipse.ecf.examples.loadbalancing.consumer,org.eclipse.ecf.provider.filetransfer.ssl,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client,org.eclipse.ecf.tests.provider.discovery,org.apache.httpcomponents.httpcore,org.eclipse.ecf.provider.yahoo,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted,org.eclipse.ecf.examples.remoteservices.hello.ds.host,org.eclipse.ecf.services.quotes.eclipsetwitter,org.eclipse.ecf.client.jgroups,org.json,com.skype.win32.win32.x86,org.eclipse.ecf.server,org.eclipse.emf,org.eclipse.ecf.examples.remoteservice.rest.twitter,org.eclipse.ecf.tests.provider.skype,org.eclipse.ecf.provider.nntp,org.eclipse.ecf.examples.loadbalancing.servicehost,org.eclipse.ecf.mgmt.ds.host,org.eclipse.ecf.tests.mgmt.app,org.eclipse.ecf.tests.provider.jms,org.eclipse.ecf.docshare,org.eclipse.ecf.tests.datashare,org.eclipse.ecf.examples.provider.dictionary.soap.client,org.eclipse.ecf.examples.remoteservices.hello2,org.eclipse.ecf.services.quotes.oldskool,org.eclipse.ecf.provider.twitter.ui.hub.product,org.eclipse.ecf.provider.jms.weblogic,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.presence,org.eclipse.ecf.sync,org.eclipse.ecf.provider.jmdns,com.skype.examples,org.eclipse.ecf.provider.msn,org.eclipse.ecf.provider.msn.ui,org.eclipse.ecf.provider.filetransfer,org.eclipse.ecf.provider.bittorrent,org.eclipse.ecf.provider.jms.weblogic.ui"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../GenericMultiServiceHostApplication"/>
-<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.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx384m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.jobs@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.hamcrest.core@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.runtime@default:true,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.preferences@default:default,org.eclipse.osgi.services@default:default,org.eclipse.core.contenttype@default:default,javax.servlet@default:default,org.eclipse.equinox.app@default:default,org.eclipse.osgi@-1:true,org.eclipse.equinox.registry@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.examples.remoteservices.server@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.mgmt.p2.profile.host@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.ecf.mgmt.p2@default:default,org.eclipse.ecf.tests.httpservice.util@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.tests.provider.discovery.local@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,eclipse.p2.host@default:default,org.example.processor.assignment1@default:default,org.eclipse.ecf.example.remoteservice.soap.host.hello@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.remoteservice.apt.java6@default:default,org.example.processor.assignment3@default:default,eclipse.p2@default:default,org.eclipse.ecf.examples.tests.remoteservice.soap.host.hello@default:default,org.example.processor@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.example.processor.solution@default:default,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.mgmt.p2.repository.host@default:default,org.example.processor.assignment2@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.tests.mgmt.p2@default:default,org.eclipse.ecf.remoteservice.soap.host@default:default,org.eclipse.ecf.examples.remoteservices.client@default:false,org.eclipse.ecf.mgmt.p2.install.host@default:default,org.eclipse.ecf.examples.loadbalancing.ds.consumer@default:default,org.eclipse.ecf.identity@default:default"/>
-<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="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch
deleted file mode 100644
index b0426e1..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.ecf.example.collab,org.apache.httpcomponents.httpcore.nio,ch.ethz.iks.r_osgi.remote,org.eclipse.ecf.provider.jgroups,org.eclipse.ecf.services.quotes.starwars,org.eclipse.ecf.examples.datashare.app,org.eclipse.ecf.tests.provider.datashare.nio,org.eclipse.team.ecf.ui,org.eclipse.ecf.mgmt.app,org.eclipse.ecf.presence.ui,org.eclipse.ecf.discovery.ui.browser,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.provider.bittorrent.ui,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.tests.mgmt.framework,org.eclipse.emf.ecore.change,org.eclipse.ecf.provider.filetransfer.scp,org.eclipse.ecf.examples.osgiservice.hello,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.provider.jms.activemq,com.skype,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.example.collab.editor,org.eclipse.ecf.provider.skype.ui,org.eclipse.ecf.tests.presence,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.provider.irc.bot,org.apache.commons.httpclient,org.eclipse.ecf.provider.irc.ui,org.eclipse.ecf.doc,org.eclipse.ecf.tests.sync,org.eclipse.ecf.tests.provider.jslp,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests,org.eclipse.ecf.tests.osgi.services.discovery,org.eclipse.ecf.tests.call,org.eclipse.ecf.provider.nntp.security,org.eclipse.ecf.salvo.application,org.eclipse.ecf.tests.protocol.msn,org.eclipse.ecf.tests.mgmt.ds,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.provider.twitter.ui,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer,org.eclipse.ecf.examples.loadbalancing,org.eclipse.ecf.telephony.call,org.eclipse.ecf.salvo.ui.navigator,org.eclipse.ecf.ui.capabilities,org.eclipse.ecf.tests.filetransfer,org.eclipse.ecf.mgmt.ds,org.eclipse.ecf.provider.yahoo.ui,org.eclipse.ecf.tests.provider.jms.activemq,org.eclipse.ecf.ui,org.eclipse.ecf.protocol.nntp.model,org.eclipse.ecf.services.quotes,org.eclipse.ecf.mgmt.framework.host,org.eclipse.ecf.storage,org.eclipse.emf.ecore,org.eclipse.emf.edit.ui,org.eclipse.ecf.examples.updatesite.server,org.eclipse.ecf.provider.jms,org.eclipse.ecf.discovery.ui.properties.tabbed,org.eclipse.ecf.telephony.call.ui,org.eclipse.ecf.tests.provider.jgroups,org.eclipse.ecf.protocol.nntp.store.filesystem,org.eclipse.ecf.example.clients,org.eclipse.ecf.provider.ui,org.eclipse.helios.tests,org.eclipse.ecf.discovery.ui.edit,org.eclipse.ecf.provider.filetransfer.httpclient.ssl,org.eclipse.ecf.provider.jms.qpid,org.jivesoftware.smack,org.eclipse.ecf.discovery.ui.properties,org.eclipse.ecf.samples.nntp,org.eclipse.ecf.provider.datashare,org.eclipse.ecf.provider.twitter.ui.hub,org.eclipse.ecf.server.jgroups,org.eclipse.ecf.provider.irc,org.eclipse.ecf.examples.remoteservice.discovery.local,org.eclipse.ecf.mgmt.app.host,org.eclipse.ecf.datashare,org.eclipse.ecf.examples.remoteservices.hello.consumer,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.helios,org.eclipse.ecf.protocol.nntp.model.test,org.eclipse.ecf.provider.xmpp.ui,org.eclipse.ecf.tests.provider.jmdns,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.tests.filetransfer.jreprovider,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.examples.eventadmin.app,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer,org.eclipse.ecf.provider.riena,org.eclipse.ecf.provider.jms.activemq.ui,org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.remoteservice.ui.dosgi,org.eclipse.ecf.provider.filetransfer.efs,com.commonsense.backstop.client.axis,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2,org.eclipse.ecf.tests.sharedobject,org.eclipse.ecf.tests.provider.xmpp,org.eclipse.emf.common.ui,org.eclipse.ecf.tests.storage,org.eclipse.ecf.examples.remoteservices.dictionary.common,com.commonsense.backstop.tests.client.axis,org.eclipse.ecf.discovery.ui,org.eclipse.ecf.protocol.nntp.store.filesystem.tests,org.eclipse.ecf.tests.discovery,org.eclipse.ecf.tests.provider.filetransfer.scp,org.eclipse.ecf.protocol.nntp.core,org.eclipse.ecf.tests.provider.jms.weblogic,org.eclipse.ecf.provider.twitter,org.eclipse.ecf.provider.rss,org.eclipse.ecf.salvo.ui,org.eclipse.ecf.examples.loadbalancing.server,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j,org.eclipse.ecf.provider.r_osgi,org.eclipse.ecf.tests.provider.nntp,org.eclipse.ecf.remoteservice.ui,org.eclipse.emf.edit,org.apache.mime4j,org.eclipse.emf.common,org.eclipse.ecf.tests.provider.filetransfer.efs,org.eclipse.ecf.springframework,org.eclipse.ecf.remoteservice.soap,org.eclipse.ecf.examples.remoteservices.hello.dm.host,org.eclipse.ecf.provider.filetransfer.sharedobject,org.eclipse.ecf.tests.provider.filetransfer.xmpp,org.eclipse.ecf.tests.provider.twitter,org.apache.commons.codec,org.eclipse.ecf.tests.apache.httpclient.server,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.presence.bot,org.eclipse.ecf.tests.server.generic,org.eclipse.ecf.provider.jslp,org.eclipse.ecf.mgmt.framework,org.eclipse.ecf.tests.osgi.services.discovery.local,org.eclipse.helios.tools,org.eclipse.ecf.provider.aim,org.eclipse.ecf.protocol.nntp.store.derby,org.eclipse.ecf.examples.updatesite.client,ch.ethz.iks.slp,org.eclipse.ecf.provider.nntp.ui,org.eclipse.ecf.tests.filetransfer.httpserver,org.eclipse.ecf.examples.remoteservices.hello.host,org.eclipse.ecf.console,org.eclipse.ecf.provider.skype,org.eclipse.team.ecf.core,org.eclipse.ecf.examples.loadbalancing.consumer,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client,org.eclipse.ecf.tests.provider.discovery,org.apache.httpcomponents.httpcore,org.eclipse.ecf.provider.yahoo,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted,org.eclipse.ecf.examples.remoteservices.hello.ds.host,org.eclipse.ecf.services.quotes.eclipsetwitter,org.eclipse.ecf.client.jgroups,org.json,com.skype.win32.win32.x86,org.eclipse.ecf.server,org.eclipse.emf,org.eclipse.ecf.examples.remoteservice.rest.twitter,org.eclipse.ecf.tests.provider.skype,org.eclipse.ecf.provider.nntp,org.eclipse.ecf.examples.loadbalancing.servicehost,org.eclipse.ecf.mgmt.ds.host,org.eclipse.ecf.tests.mgmt.app,org.eclipse.ecf.tests.provider.jms,org.eclipse.ecf.docshare,org.eclipse.ecf.tests.datashare,org.eclipse.ecf.examples.provider.dictionary.soap.client,org.eclipse.ecf.examples.remoteservices.hello2,org.eclipse.ecf.services.quotes.oldskool,org.eclipse.ecf.provider.twitter.ui.hub.product,org.eclipse.ecf.provider.jms.weblogic,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.presence,org.eclipse.ecf.sync,org.eclipse.ecf.provider.jmdns,com.skype.examples,org.eclipse.ecf.provider.msn,org.eclipse.ecf.provider.msn.ui,org.eclipse.ecf.provider.bittorrent,org.eclipse.ecf.provider.jms.weblogic.ui"/>
-<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.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<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.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic.GenericMultiServiceProxyTest"/>
-<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.osgi.services.distribution.localdiscovery"/>
-<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 -Xmx384m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.ecf.client.jgroups.jgClientProduct"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.databinding.property@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.ui.ide@default:default,org.hamcrest.core@default:default,org.eclipse.text@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.jface@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.runtime@default:true,org.eclipse.osgi@-1:true,org.eclipse.equinox.p2.engine@default:default,org.eclipse.core.variables@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.core.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.net@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.core.filesystem@default:default,javax.servlet@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.ui.win32@default:false,org.eclipse.core.expressions@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.help@default:default,org.eclipse.swt@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.core.resources@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.ui.views@default:default,org.eclipse.core.resources.win32.x86@default:false,com.ibm.icu@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.jobs@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.remoteservice@default:default"/>
-<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.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF
deleted file mode 100644
index 3a425f2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,24 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Localdiscovery
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.eclipse.osgi.framework.console,
- org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ecf.tests,
- org.eclipse.ecf.osgi.services.distribution;bundle-version="1.0.0",
- org.eclipse.ecf.remoteservice;bundle-version="3.0.0",
- org.eclipse.ecf;bundle-version="3.0.0",
- org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0",
- org.junit,
- org.eclipse.equinox.common,
- org.eclipse.equinox.concurrent;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.distribution;bundle-version="1.0.0",
- org.eclipse.equinox.app;bundle-version="1.3.0",
- org.eclipse.ecf.osgi.services.discovery.local;bundle-version="1.0.0"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties
deleted file mode 100644
index 1b67e5a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               plugin.xml,\
-               genericmultiservicehost.xml,\
-               GenericMultiServiceProxyTest.launch,\
-               GenericMultiServiceHostApplication.launch
-src.includes = GenericMultiServiceHostApplication.launch,\
-               GenericMultiServiceProxyTest.launch,\
-               genericmultiservicehost.xml
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml
deleted file mode 100644
index 19b8c77..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-  <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-    <service-description>
-      <provide interface="org.eclipse.ecf.tests.remoteservice.IConcatService"/>
-      <property name="ecf.sp.cid">ecftcp://localhost:9655/server</property>
-      <property name="ecf.sp.cns">org.eclipse.ecf.core.identity.StringID</property>
-      <property name="ecf.sp.ect">ecf.generic.server</property>
-   </service-description>
-   <service-description>
-      <provide
-interface="org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1"/>
-      <property
-name="ecf.sp.cid">ecftcp://localhost:9655/server</property>
-      <property name="ecf.sp.cns">org.eclipse.ecf.core.identity.StringID</property>
-      <property name="ecf.sp.ect">ecf.generic.server</property>
-   </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml
deleted file mode 100644
index a55de1e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-   <extension
-         id="GenericMultiServiceHost"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="*"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic.GenericMultiServiceHostApplication">
-         </run>
-      </application>
-   </extension>
-
-</plugin>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java
deleted file mode 100644
index c72a464..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public static final String PLUGIN_ID = "org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery";
-	
-	private static Activator plugin;
-	private BundleContext context;
-	
-	public static final Activator getDefault() {
-		return plugin;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		plugin = this;
-		this.context = context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		context = null;
-		plugin = null;
-	}
-
-	public BundleContext getContext() {
-		return context;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java
deleted file mode 100644
index 1e9414d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
-* 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.osgi.services.distribution.localdiscovery;
-
-import java.net.URL;
-import java.util.Dictionary;
-
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.osgi.services.discovery.local.DiscoveryCommandProvider;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.ecf.tests.osgi.services.distribution.AbstractDistributionTest;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-
-public abstract class AbstractMultiServiceProxyTest extends
-		AbstractDistributionTest {
-
-	protected DiscoveryCommandProvider discoveryCommandProvider;
-	protected URL serviceDescriptionURL;
-	protected IContainer clientContainer;
-	
-	protected void setUp() throws Exception {
-		discoveryCommandProvider = getDiscoveryCommandProvider();
-		serviceDescriptionURL = getServiceDescriptionURL();
-		clientContainer = getContainerFactory().createContainer(getClientContainerName());
-	}
-	
-	protected abstract URL getServiceDescriptionURL();
-	
-	protected void tearDown() throws Exception {
-		discoveryCommandProvider = null;
-		serviceDescriptionURL = null;
-		clientContainer.dispose();
-		getContainerManager().removeAllContainers();
-	}
-	
-	protected BundleContext getContext() {
-		return Activator.getDefault().getContext();
-	}
-
-	protected DiscoveryCommandProvider getDiscoveryCommandProvider() {
-		DiscoveryCommandProviderServiceTracker st = new DiscoveryCommandProviderServiceTracker();
-		st.open();
-		DiscoveryCommandProvider provider = st.getDiscoveryCommandProvider();
-		st.close();
-		return provider;
-	}
-
-	protected void publishServiceDescriptions(final URL url) {
-		publishServiceDescriptions(url.toString());
-	}
-
-	int argsAccessed = 0;
-
-	protected void publishServiceDescriptions(final String url) {
-		discoveryCommandProvider._publish(new CommandInterpreter() {
-			public String nextArgument() {
-				argsAccessed++;
-				return (argsAccessed == 1) ? url : null;
-			}
-
-			public Object execute(String cmd) {
-				return null;
-			}
-
-			public void print(Object o) {
-			}
-
-			public void println() {
-			}
-
-			public void println(Object o) {
-			}
-
-			public void printStackTrace(Throwable t) {
-			}
-
-			public void printDictionary(Dictionary dic, String title) {
-			}
-
-			public void printBundleResource(Bundle bundle, String resource) {
-			}
-		});
-
-	}
-
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/DiscoveryCommandProviderServiceTracker.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/DiscoveryCommandProviderServiceTracker.java
deleted file mode 100644
index 0651f20..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/DiscoveryCommandProviderServiceTracker.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
-* 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.osgi.services.distribution.localdiscovery;
-
-import org.eclipse.ecf.osgi.services.discovery.local.DiscoveryCommandProvider;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class DiscoveryCommandProviderServiceTracker extends ServiceTracker {
-
-	private DiscoveryCommandProvider discoveryCommandProvider;
-	
-	public DiscoveryCommandProviderServiceTracker() {
-		super(Activator.getDefault().getContext(), CommandProvider.class.getName(), null);
-		@SuppressWarnings("unused")
-		DiscoveryCommandProvider dcp = new DiscoveryCommandProvider(null);
-	}
-
-	public void open() {
-		super.open(true);
-		Object[] allCommandProviders = getServices();
-		for(int i=0; i < allCommandProviders.length; i++) {
-			if (allCommandProviders[i] instanceof DiscoveryCommandProvider) {
-				discoveryCommandProvider = (DiscoveryCommandProvider) allCommandProviders[i];
-			}
-		}
-	}
-	
-	public DiscoveryCommandProvider getDiscoveryCommandProvider() {
-		return discoveryCommandProvider;
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java
deleted file mode 100644
index 10b2449..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
-* 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.osgi.services.distribution.localdiscovery.generic;
-
-import java.util.Dictionary;
-import java.util.Properties;
-
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestService1;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
-import org.eclipse.ecf.tests.remoteservice.AbstractConcatHostApplication;
-import org.eclipse.ecf.tests.remoteservice.IConcatService;
-import org.eclipse.equinox.app.IApplicationContext;
-
-public class GenericMultiServiceHostApplication extends AbstractConcatHostApplication implements IDistributionConstants {
-
-	private String containerId = "ecftcp://localhost:9655/server";
-	private String containerType = "ecf.generic.server";
-	
-	public Object start(IApplicationContext context) throws Exception {
-		// First, create container of appropriate type
-		IContainer container = createContainer(containerId);
-		// Then, from container create remote service container
-		rsContainer = createRemoteServiceContainer(container);
-		// Now register IConcatService remote service
-		Activator.getDefault().getContext().registerService(IConcatService.class.getName(), createConcatService(), createRemoteServiceProperties(containerType,containerId));
-		System.out.println("registered concat remote service");
-		// Register ITestService
-		Activator.getDefault().getContext().registerService(TestServiceInterface1.class.getName(), createTestService(), createRemoteServiceProperties(containerType,containerId));
-		System.out.println("registered testserviceinterface1");
-		
-		printStarted();
-		// And wait until we're explicitly stopped.
-		synchronized (this) {
-			while (!done)
-				wait();
-		}
-		return new Integer(0);
-	}
-
-	protected String getContainerId() {
-		return containerId;
-	}
-	
-	protected Dictionary createRemoteServiceProperties(String containerType, String containerId) {
-		Dictionary props = new Properties();
-		// add OSGi service property indicated export of all interfaces exposed by service (wildcard)
-		props.put(SERVICE_EXPORTED_INTERFACES, SERVICE_EXPORTED_INTERFACES_WILDCARD);
-		// add OSGi service property specifying config
-		props.put(SERVICE_EXPORTED_CONFIGS, containerType);
-		// add ECF service property specifying container factory args
-		props.put(SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS, containerId);
-		return props;
-	}
-	
-	protected Object createTestService() {
-		return new TestService1();
-	}
-	
-	protected Object createConcatService() {
-		return new IConcatService() {
-			public String concat(String string1, String string2) {
-				final String result = string1.concat(string2);
-				System.out.println("SERVICE.concat(" + string1 + "," + string2
-						+ ") returning " + result);
-				return string1.concat(string2);
-			}
-		};
-	}
-
-	protected String getContainerType() {
-		return containerType;
-	}
-
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java
deleted file mode 100644
index e3bae1f..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * 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.osgi.services.distribution.localdiscovery.generic;
-
-import java.net.URL;
-
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
-import org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.AbstractMultiServiceProxyTest;
-import org.eclipse.ecf.tests.remoteservice.IConcatService;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-
-// NOTE:  running this test successfully depends upon having a GenericMultiServiceHost
-// server running
-public class GenericMultiServiceProxyTest extends AbstractMultiServiceProxyTest
-		implements IDistributionConstants {
-
-	private static final String SERVICE_DESCRIPTION_FILE = "/genericmultiservicehost.xml";
-
-	protected URL getServiceDescriptionURL() {
-		return Activator.getDefault().getContext().getBundle()
-		.getEntry(SERVICE_DESCRIPTION_FILE);
-	}
-	
-	protected String getClientContainerName() {
-		return "ecf.generic.client";
-	}
-
-	public void testTestServiceInterface1Access() throws Exception {
-		publishServiceDescriptions(serviceDescriptionURL);
-		sleep(5000);
-		String classname = TestServiceInterface1.class.getName();
-		// Setup service tracker for client container
-		ServiceTracker st = createProxyServiceTracker(classname);
-		// Service Consumer - Get (remote) service references
-		ServiceReference[] remoteReferences = st.getServiceReferences();
-		assertReferencesValidAndFirstHasCorrectType(remoteReferences, classname);
-		// Spec requires that the 'service.imported' property be set
-		assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
-		st.close();
-	}
-	
-	public void testConcatServiceInterfaceAccess() throws Exception {
-		publishServiceDescriptions(serviceDescriptionURL);
-		sleep(5000);
-		String classname = IConcatService.class.getName();
-		// Setup service tracker for client container
-		ServiceTracker st = createProxyServiceTracker(classname);
-		// Service Consumer - Get (remote) service references
-		ServiceReference[] remoteReferences = st.getServiceReferences();
-		assertReferencesValidAndFirstHasCorrectType(remoteReferences, classname);
-		// Spec requires that the 'service.imported' property be set
-		assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
-		st.close();
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF
index cf12db7..e301abd 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF
@@ -14,6 +14,5 @@
  org.eclipse.equinox.concurrent;bundle-version="1.0.0",
  org.eclipse.ecf.tests.osgi.services.distribution;bundle-version="1.0.0",
  org.eclipse.ecf;bundle-version="3.1.100",
- org.eclipse.ecf.tests;bundle-version="2.1.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.2.0"
+ org.eclipse.ecf.tests;bundle-version="2.1.0"
 Export-Package: org.eclipse.ecf.tests.osgi.services.distribution.r_osgi
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 43907b3..a3f3ccd 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
@@ -15,9 +15,9 @@
  org.eclipse.ecf.remoteservice;bundle-version="3.0.0",
  org.eclipse.ecf;bundle-version="3.0.0",
  org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0",
- org.junit,
- org.eclipse.equinox.common,
- org.eclipse.equinox.concurrent;bundle-version="1.0.0"
+ org.eclipse.equinox.concurrent;bundle-version="1.0.0",
+ org.junit;bundle-version="4.8.2",
+ org.eclipse.equinox.common;bundle-version="3.6.0"
 Export-Package: org.eclipse.ecf.tests.internal.osgi.services.distribution;x-internal:=true,
- org.eclipse.ecf.tests.osgi.services.distribution
+ org.eclipse.ecf.tests.osgi.services.distribution,
+ org.eclipse.ecf.tests.osgi.services.distribution.async
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java
index efb63e7..9660875 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java
@@ -243,7 +243,7 @@
 								+ reference + ",svc=" + service);
 					}
 				});
-		st.open(true);
+		st.open();
 		return st;
 	}
 
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java
index 82bc94d..3b539da 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java
@@ -26,7 +26,7 @@
 public abstract class AbstractRemoteServiceAccessTest extends
 		AbstractDistributionTest {
 
-	protected static final int REGISTER_WAIT = Integer.parseInt(System.getProperty("waittime","15000"));
+	protected static final int REGISTER_WAIT = Integer.parseInt(System.getProperty("waittime","30000"));
 
 	private final String classname = TestServiceInterface1.class.getName();
 	private ServiceTracker st;
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
new file mode 100644
index 0000000..9df9b6d
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java
@@ -0,0 +1,20 @@
+/****************************************************************************
+ * Copyright (c) 2011 Composent 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:
+ *    Scott Lewis - initial API and implementation
+ *****************************************************************************/
+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 {
+
+	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 53aec23..8199e8e 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
@@ -22,6 +22,6 @@
  org.osgi.service.remoteserviceadmin;version="1.0.0",
  org.osgi.util.tracker
 Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
- org.junit;bundle-version="4.8.1",
+ org.junit;bundle-version="3.8.0",
  org.eclipse.ecf.tests;bundle-version="2.1.0"
 Export-Package: org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;version="1.1.1"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
index 64d5247..7e46e98 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
@@ -233,7 +233,7 @@
 								+ reference + ",svc=" + service);
 					}
 				});
-		st.open(true);
+		st.open();
 		return st;
 	}
 
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
index cd0c4d7..094e4ba 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
@@ -48,7 +48,7 @@
 
 	protected IDiscoveryLocator getDiscoveryLocator() {
 		ServiceTracker serviceTracker = new ServiceTracker(Activator.getDefault().getContext(),IDiscoveryLocator.class.getName(), null);
-		serviceTracker.open(true);
+		serviceTracker.open();
 		IDiscoveryLocator result = (IDiscoveryLocator) serviceTracker.getService();
 		serviceTracker.close();
 		return result;
@@ -56,7 +56,7 @@
 	
 	protected IDiscoveryAdvertiser getDiscoveryAdvertiser() {
 		ServiceTracker serviceTracker = new ServiceTracker(Activator.getDefault().getContext(),IDiscoveryAdvertiser.class.getName(), null);
-		serviceTracker.open(true);
+		serviceTracker.open();
 		IDiscoveryAdvertiser result = (IDiscoveryAdvertiser) serviceTracker.getService();
 		serviceTracker.close();
 		return result;
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.classpath b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.classpath
deleted file mode 100644
index 64c5e31..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.gitignore b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 75c3924..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,74 +0,0 @@
-#Tue Jan 11 19:51:57 PST 2011
-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.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/META-INF/MANIFEST.MF
deleted file mode 100644
index 1ed648e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Local
-Bundle-SymbolicName: org.eclipse.ecf.tests.provider.discovery.local
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.internal.tests.provider.discovery.local.Activator
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker
-Require-Bundle: org.junit;bundle-version="4.8.1",
- org.eclipse.equinox.common,
- org.eclipse.ecf.osgi.services.discovery.local;bundle-version="1.0.0",
- org.eclipse.ecf.tests;bundle-version="2.1.0",
- org.eclipse.ecf.osgi.services.distribution;bundle-version="1.2.0"
-Bundle-Localization: plugin
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/about.html b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/about.html
deleted file mode 100644
index 4c79781..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!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</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/build.properties b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/build.properties
deleted file mode 100644
index 711ee39..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               service-descriptions/,\
-               plugin.properties,\
-               about.html
-src.includes = service-descriptions/,\
-               about.html
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/plugin.properties
deleted file mode 100644
index e06af95..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-/****************************************************************************
-* 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
-*
-*****************************************************************************/
-plugin.name = ECF Local Discovery Provider Tests
-plugin.provider = Eclipse.org - ECF
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-generic.xml b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-generic.xml
deleted file mode 100644
index b46e9e1..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-generic.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-  <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-    <service-description>
-      <provide
-interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
-      <property
-name="ecf.sp.cid">ecftcp://localhost:3787/server</property>
-      <property name="ecf.sp.cns">org.eclipse.ecf.core.identity.StringID</property>
-      <property name="ecf.sp.ect">ecf.generic.server</property>
-   </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-rosgi.xml b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-rosgi.xml
deleted file mode 100644
index a41c2d2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-rosgi.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-  <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-    <service-description>
-      <provide
-interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
-      <property
-name="ecf.sp.cid">ecftcp://localhost:3787/server</property>
-      <property name="ecf.sp.cns">ecf.namespace.r_osgi</property>
-      <property name="ecf.sp.ect">ecf.r_osgi.peer</property>
-   </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/internal/tests/provider/discovery/local/Activator.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/internal/tests/provider/discovery/local/Activator.java
deleted file mode 100644
index 619ae6a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/internal/tests/provider/discovery/local/Activator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.eclipse.ecf.internal.tests.provider.discovery.local;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	private static BundleContext context;
-
-	public static BundleContext getContext() {
-		return context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext bundleContext) throws Exception {
-		Activator.context = bundleContext;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext bundleContext) throws Exception {
-		Activator.context = null;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/AbstractServiceDescriptionPublishTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/AbstractServiceDescriptionPublishTest.java
deleted file mode 100644
index de34d7d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/AbstractServiceDescriptionPublishTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
-* 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.provider.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.eclipse.ecf.internal.tests.provider.discovery.local.Activator;
-import org.eclipse.ecf.osgi.services.discovery.local.IServiceEndpointDescriptionPublisher;
-import org.eclipse.ecf.tests.ECFAbstractTestCase;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-public abstract class AbstractServiceDescriptionPublishTest extends ECFAbstractTestCase {
-
-	private static final String SERVICE_DESCRIPTION_PATH = "/service-descriptions/";
-	
-	private IServiceEndpointDescriptionPublisher publisher;
-	
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		ServiceTracker st = new ServiceTracker(Activator.getContext(),IServiceEndpointDescriptionPublisher.class.getName(),null);
-		st.open();
-		publisher = (IServiceEndpointDescriptionPublisher) st.getService();
-		st.close();
-	}
-	
-	@Override
-	protected void tearDown() throws Exception {
-		publisher = null;
-		super.tearDown();
-	}
-	
-	protected IServiceEndpointDescriptionPublisher getServiceDescriptionPublisher() {
-		return publisher;
-	}
-	
-	protected InputStream loadServiceDescription(String fileName) throws IOException {
-		BundleContext context = Activator.getContext();
-		URL url = context.getBundle().getEntry(SERVICE_DESCRIPTION_PATH + fileName);
-		if (url == null) throw new IOException("Cannot find service description file name="+fileName);
-		return url.openStream();
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/ServiceEndpoingDescriptionFilePublishTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/ServiceEndpoingDescriptionFilePublishTest.java
deleted file mode 100644
index a2f1ced..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/ServiceEndpoingDescriptionFilePublishTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
-* 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.provider.discovery.local;
-
-import java.io.InputStream;
-
-import org.eclipse.ecf.osgi.services.discovery.local.IServiceEndpointDescriptionPublisher;
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-
-@SuppressWarnings("restriction")
-public class ServiceEndpoingDescriptionFilePublishTest extends AbstractServiceDescriptionPublishTest implements IDistributionConstants {
-
-	private static final String HELLO_SED_GENERIC_FILE = "hello-service-description-generic.xml";
-	private static final String HELLO_SED_ROSGI_FILE = "hello-service-description-rosgi.xml";
-
-	public void testServiceDescriptionGenericPublishFromFile() throws Exception {
-		InputStream serviceDescriptionStream = loadServiceDescription(HELLO_SED_GENERIC_FILE);
-		IServiceEndpointDescriptionPublisher publisher = getServiceDescriptionPublisher();
-		publisher.publishServiceDescription(serviceDescriptionStream);
-		sleep(4000);
-		serviceDescriptionStream = loadServiceDescription(HELLO_SED_GENERIC_FILE);
-		publisher.unpublishServiceDescription(serviceDescriptionStream);
-	}
-	
-	public void testServiceDescriptionROSGiPublishFromFile() throws Exception {
-		InputStream serviceDescriptionStream = loadServiceDescription(HELLO_SED_ROSGI_FILE);
-		IServiceEndpointDescriptionPublisher publisher = getServiceDescriptionPublisher();
-		publisher.publishServiceDescription(serviceDescriptionStream);
-		sleep(4000);
-		serviceDescriptionStream = loadServiceDescription(HELLO_SED_ROSGI_FILE);
-		publisher.unpublishServiceDescription(serviceDescriptionStream);
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF
index b704858..00296e5 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.provider.zookeeper
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.eclipse.ecf,
  org.eclipse.ecf.discovery,
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
new file mode 100644
index 0000000..c962348
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
@@ -0,0 +1,137 @@
+/****************************************************************************
+* 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 java.io.ByteArrayOutputStream;
+import java.io.NotSerializableException;
+import java.io.ObjectOutputStream;
+import java.net.URI;
+
+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.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);
+	}
+
+	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));
+	}
+
+}
