diff --git a/examples/org.eclipse.e4.core.metaconfig.example/ConfigProduct.product b/examples/org.eclipse.e4.core.metaconfig.example/ConfigProduct.product
index a0a00cc..3583d99 100644
--- a/examples/org.eclipse.e4.core.metaconfig.example/ConfigProduct.product
+++ b/examples/org.eclipse.e4.core.metaconfig.example/ConfigProduct.product
@@ -1,34 +1,35 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.4"?>
-
-<product name="Configuration Example" id="org.eclipse.e4.enterprise.utils.config.example.configExample" application="org.eclipse.e4.enterprise.utils.config.example.application" version="4.0" useFeatures="true">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <windowImages/>
-
-   <launcher name="configexample">
-      <solaris/>
-      <win useIco="false">
-         <bmp/>
-      </win>
-   </launcher>
-
-   <vm>
-   </vm>
-
-   <plugins>
-   </plugins>
-
-   <features>
-      <feature id="org.eclipse.rcp" version="0.0.0"/>
-      <feature id="org.eclipse.e4.enterprise.utils.config.feature" version="0.0.0"/>
-      <feature id="org.eclipse.e4.enterprise.utils.config.example.feature" version="0.0.0"/>
-   </features>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="Configuration Example" id="org.eclipse.e4.core.metaconfig.example.configExample" application="org.eclipse.e4.core.metaconfig.example.application" version="4.0" useFeatures="true" includeLaunchers="true">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher name="configexample">
+      <solaris/>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+   </vm>
+
+   <plugins>
+   </plugins>
+
+   <features>
+      <feature id="org.eclipse.rcp"/>
+      <feature id="org.eclipse.e4.core.metaconfig.example.feature" version="4.6.0.qualifier"/>
+      <feature id="org.eclipse.e4.core.metaconfig.feature" version="4.6.0.qualifier"/>
+   </features>
+
+
+</product>
diff --git a/examples/org.eclipse.e4.core.metaconfig.example/plugin.xml b/examples/org.eclipse.e4.core.metaconfig.example/plugin.xml
index 9567853..45d8dde 100644
--- a/examples/org.eclipse.e4.core.metaconfig.example/plugin.xml
+++ b/examples/org.eclipse.e4.core.metaconfig.example/plugin.xml
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-
-   <extension
-         id="application"
-         point="org.eclipse.core.runtime.applications">
-      <application>
-         <run
-               class="org.eclipse.e4.core.metaconfig.example.rcp.Application">
-         </run>
-      </application>
-   </extension>
-   <extension
-         point="org.eclipse.ui.perspectives">
-      <perspective
-            name="Perspective"
-            class="org.eclipse.e4.core.metaconfig.example.rcp.Perspective"
-            id="org.eclipse.e4.enterprise.utils.config.example.perspective">
-      </perspective>
-   </extension>
-   <extension
-         point="org.eclipse.ui.views">
-      <view
-            name="View"
-            class="org.eclipse.e4.core.metaconfig.example.rcp.View"
-            id="org.eclipse.e4.enterprise.config.integration.view">
-      </view>
-   </extension>
-   <extension
-         id="configExample"
-         point="org.eclipse.core.runtime.products">
-      <product
-            application="org.eclipse.e4.enterprise.utils.config.example.application"
-            name="Configuration Example">
-         <property
-               name="appName"
-               value="Configuration Example">
-         </property>
-      </product>
-   </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+   <extension
+         id="application"
+         point="org.eclipse.core.runtime.applications">
+      <application>
+         <run
+               class="org.eclipse.e4.core.metaconfig.example.rcp.Application">
+         </run>
+      </application>
+   </extension>
+   <extension
+         point="org.eclipse.ui.perspectives">
+      <perspective
+            name="Perspective"
+            class="org.eclipse.e4.core.metaconfig.example.rcp.Perspective"
+            id="org.eclipse.e4.core.metaconfig.example.rcp.Perspective">
+      </perspective>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            name="View"
+            class="org.eclipse.e4.core.metaconfig.example.rcp.View"
+            id="org.eclipse.e4.core.metaconfig.example.rcp.View">
+      </view>
+   </extension>
+   <extension
+         id="configExample"
+         point="org.eclipse.core.runtime.products">
+      <product
+            application="org.eclipse.e4.core.metaconfig.example.application"
+            name="Configuration Example">
+         <property
+               name="appName"
+               value="Configuration Example">
+         </property>
+      </product>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/Activator.java b/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/Activator.java
index 6d5d447..8072e62 100644
--- a/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/Activator.java
+++ b/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/Activator.java
@@ -8,83 +8,83 @@
  * Contributors:
  *    David Orme - initial API and implementation
  ******************************************************************************/
-package org.eclipse.e4.core.metaconfig.example;
-
+package org.eclipse.e4.core.metaconfig.example;
+
 import org.eclipse.e4.core.metaconfig.Configuration;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.e4.enterprise.config.integration";
-
-	// The shared instance
-	private static Activator plugin;
-	
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-	}
-
-	private ServiceTracker configTracker;
-
-	private BundleContext context;
-	
-	/**
-	 * @return the current configuration file's Properties object.  May be null
-	 * if the configuration service is not loaded or is not included in the 
-	 * application.
-	 */
-	public Configuration getConfiguration() {
-		return (Configuration) configTracker.getService();
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		this.context = context;
-		configTracker = new ServiceTracker(context, Configuration.class.getName(), null);
-		configTracker.open();
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * Returns an image descriptor for the image file at the given
-	 * plug-in relative path
-	 *
-	 * @param path the path
-	 * @return the image descriptor
-	 */
-	public static ImageDescriptor getImageDescriptor(String path) {
-		return imageDescriptorFromPlugin(PLUGIN_ID, path);
-	}
-}
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.osgi.util.tracker.ServiceTracker;
+
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.e4.core.metaconfig.example";
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	private ServiceTracker configTracker;
+
+	private BundleContext context;
+	
+	/**
+	 * @return the current configuration file's Properties object.  May be null
+	 * if the configuration service is not loaded or is not included in the 
+	 * application.
+	 */
+	public Configuration getConfiguration() {
+		return (Configuration) configTracker.getService();
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		this.context = context;
+		configTracker = new ServiceTracker(context, Configuration.class.getName(), null);
+		configTracker.open();
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns an image descriptor for the image file at the given
+	 * plug-in relative path
+	 *
+	 * @param path the path
+	 * @return the image descriptor
+	 */
+	public static ImageDescriptor getImageDescriptor(String path) {
+		return imageDescriptorFromPlugin(PLUGIN_ID, path);
+	}
+}
diff --git a/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/ApplicationWorkbenchAdvisor.java b/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/ApplicationWorkbenchAdvisor.java
index 3bffd89..5fc81ef 100644
--- a/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/ApplicationWorkbenchAdvisor.java
+++ b/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/ApplicationWorkbenchAdvisor.java
@@ -16,7 +16,7 @@
 
 public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
 
-	private static final String PERSPECTIVE_ID = "org.eclipse.e4.enterprise.utils.config.example.perspective";
+	private static final String PERSPECTIVE_ID = "org.eclipse.e4.core.metaconfig.example.rcp.Perspective";
 
 	public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
 			IWorkbenchWindowConfigurer configurer) {
diff --git a/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/View.java b/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/View.java
index 12fdc15..c42646c 100644
--- a/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/View.java
+++ b/examples/org.eclipse.e4.core.metaconfig.example/src/org/eclipse/e4/core/metaconfig/example/rcp/View.java
@@ -24,7 +24,7 @@
 
 
 public class View extends ViewPart {
-	public static final String ID = "org.eclipse.e4.enterprise.config.integration.view";
+	public static final String ID = "org.eclipse.e4.core.metaconfig.example.rcp.View";
 
 	/**
 	 * This is a callback that will allow us to create the viewer and initialize
@@ -38,7 +38,7 @@
 		text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 		
 		text.setText("Please read the \"readme\" file contained in this bundle " +
-				"[/org.eclipse.e4.enterprise.utils.config.example/README.txt]");
+				"[/org.eclipse.e4.core.metaconfig.example/README.txt]");
 		
 		button.addSelectionListener(new SelectionAdapter() {
 			@Override
