Bug 126344 - Simplify the new registry migration process
diff --git a/bundles/org.eclipse.equinox.preferences/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.preferences/META-INF/MANIFEST.MF
index 75a7372..d76c446 100644
--- a/bundles/org.eclipse.equinox.preferences/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.preferences/META-INF/MANIFEST.MF
@@ -7,9 +7,9 @@
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.equinox.common,
- system.bundle
+ system.bundle,
+ org.eclipse.equinox.registry
 Export-Package: org.eclipse.core.internal.preferences;x-friends:="org.eclipse.core.resources,org.eclipse.core.runtime",
  org.eclipse.core.runtime.preferences,
  org.osgi.service.prefs;version="1.1"
 Eclipse-LazyStart: true
-Import-Package: org.eclipse.equinox.registry
diff --git a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/Activator.java b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/Activator.java
index 2b897e6..17554e7 100644
--- a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/Activator.java
+++ b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/Activator.java
@@ -52,7 +52,7 @@
 	public void start(BundleContext context) throws Exception {
 		bundleContext = context;
 		processCommandLine();
-		registryServiceTracker = new ServiceTracker(context,"org.eclipse.equinox.registry.IExtensionRegistry",this);
+		registryServiceTracker = new ServiceTracker(context,"org.eclipse.core.runtime.IExtensionRegistry",this);
 		registryServiceTracker.open();
 	}
 
diff --git a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/DefaultPreferences.java b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/DefaultPreferences.java
index 2fb36d0..bb7bffe 100644
--- a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/DefaultPreferences.java
+++ b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/DefaultPreferences.java
@@ -17,8 +17,6 @@
 import org.eclipse.core.internal.runtime.RuntimeLog;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.preferences.*;
-import org.eclipse.equinox.registry.IConfigurationElement;
-import org.eclipse.equinox.registry.IExtension;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
diff --git a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java
index d2a76ab..544871c 100644
--- a/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java
+++ b/bundles/org.eclipse.equinox.preferences/src/org/eclipse/core/internal/preferences/PreferencesService.java
@@ -15,7 +15,6 @@
 import org.eclipse.core.internal.runtime.RuntimeLog;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.preferences.*;
-import org.eclipse.equinox.registry.*;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
diff --git a/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF
index f604df5..25ffa30 100644
--- a/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.equinox.registry; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 3.2.0.qualifier
 Bundle-Localization: plugin
 Export-Package: org.eclipse.core.internal.registry;x-friends:="org.eclipse.core.runtime",
  org.eclipse.core.internal.registry.osgi;x-friends:="org.eclipse.core.runtime",
  org.eclipse.core.internal.registry.spi;x-internal:=true,
- org.eclipse.equinox.registry.spi,
- org.eclipse.equinox.registry,
- org.eclipse.equinox.registry.tracker
+ org.eclipse.core.runtime,
+ org.eclipse.core.runtime.dynamichelpers,
+ org.eclipse.core.runtime.spi
 Require-Bundle: org.eclipse.equinox.common
 Bundle-Vendor: %providerName
 Bundle-Activator: org.eclipse.core.internal.registry.osgi.Activator
@@ -25,3 +25,5 @@
  org.osgi.util.tracker,
  org.xml.sax,
  javax.xml.parsers
+Eclipse-ExtensibleAPI: true
+Bundle-ClassPath: runtime_registry_compatibility.jar, .
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/BaseExtensionHandle.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/BaseExtensionHandle.java
new file mode 100644
index 0000000..f5eb083
--- /dev/null
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/BaseExtensionHandle.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM Corporation 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.core.internal.registry;
+
+import org.eclipse.core.runtime.*;
+
+/**
+ * This is the copy of the ExtensionHandle minus the getDeclaringPluginDescriptor()
+ * method that was moved into compatibility plugin.
+ * 
+ * This class should not be used directly. Use ExtensionHandle instead.
+ * 
+ * @since org.eclipse.equinox.registry 3.2 
+ */
+public class BaseExtensionHandle extends Handle implements IExtension {
+	static final BaseExtensionHandle[] EMPTY_ARRAY = new BaseExtensionHandle[0];
+
+	public BaseExtensionHandle(IObjectManager objectManager, int id) {
+		super(objectManager, id);
+	}
+
+	protected Extension getExtension() {
+		return (Extension) objectManager.getObject(getId(), RegistryObjectManager.EXTENSION);
+	}
+
+	protected boolean shouldPersist() {
+		return getExtension().shouldPersist();
+	}
+
+	public String getNamespace() {
+		return getExtension().getNamespaceName();
+	}
+
+	public String getExtensionPointUniqueIdentifier() {
+		return getExtension().getExtensionPointIdentifier();
+	}
+
+	public String getLabel() {
+		return getExtension().getLabel();
+	}
+
+	public String getSimpleIdentifier() {
+		return getExtension().getSimpleIdentifier();
+	}
+
+	public String getUniqueIdentifier() {
+		return getExtension().getUniqueIdentifier();
+	}
+
+	public IConfigurationElement[] getConfigurationElements() {
+		return (IConfigurationElement[]) objectManager.getHandles(getExtension().getRawChildren(), RegistryObjectManager.CONFIGURATION_ELEMENT);
+	}
+
+	RegistryObject getObject() {
+		return getExtension();
+	}
+
+	public boolean isValid() {
+		try {
+			getExtension();
+		} catch (InvalidRegistryObjectException e) {
+			return false;
+		}
+		return true;
+	}
+}
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/BaseExtensionPointHandle.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/BaseExtensionPointHandle.java
new file mode 100644
index 0000000..946d486
--- /dev/null
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/BaseExtensionPointHandle.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM Corporation 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.core.internal.registry;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import org.eclipse.core.runtime.*;
+
+/**
+ * This is the copy of the ExtensionPointHandle minus the getDeclaringPluginDescriptor()
+ * method that was moved into compatibility plugin.
+ * 
+ * This class should not be used directly. Use ExtensionPointHandle instead.
+ * 
+ * @since org.eclipse.equinox.registry 3.2 
+ */
+public class BaseExtensionPointHandle extends Handle implements IExtensionPoint {
+	static final BaseExtensionPointHandle[] EMPTY_ARRAY = new BaseExtensionPointHandle[0];
+
+	public BaseExtensionPointHandle(IObjectManager objectManager, int id) {
+		super(objectManager, id);
+	}
+
+	public IExtension[] getExtensions() {
+		return (IExtension[]) objectManager.getHandles(getExtensionPoint().getRawChildren(), RegistryObjectManager.EXTENSION);
+	}
+
+	public String getNamespace() {
+		return getExtensionPoint().getNamespace();
+	}
+
+	protected boolean shouldPersist() {
+		return getExtensionPoint().shouldPersist();
+	}
+
+	public IExtension getExtension(String extensionId) {
+		if (extensionId == null)
+			return null;
+		int[] children = getExtensionPoint().getRawChildren();
+		for (int i = 0; i < children.length; i++) {
+			//	Here we directly get the object because it avoids the creation of garbage and because we'll need the object anyway to compare the value
+			if (extensionId.equals(((Extension) objectManager.getObject(children[i], RegistryObjectManager.EXTENSION)).getUniqueIdentifier()))
+				return (ExtensionHandle) objectManager.getHandle(children[i], RegistryObjectManager.EXTENSION);
+		}
+		return null;
+	}
+
+	public IConfigurationElement[] getConfigurationElements() {
+		//get the actual extension objects since we'll need to get the configuration elements information.
+		Extension[] tmpExtensions = (Extension[]) objectManager.getObjects(getExtensionPoint().getRawChildren(), RegistryObjectManager.EXTENSION);
+		if (tmpExtensions.length == 0)
+			return ConfigurationElementHandle.EMPTY_ARRAY;
+
+		ArrayList result = new ArrayList();
+		for (int i = 0; i < tmpExtensions.length; i++) {
+			result.addAll(Arrays.asList(objectManager.getHandles(tmpExtensions[i].getRawChildren(), RegistryObjectManager.CONFIGURATION_ELEMENT)));
+		}
+		return (IConfigurationElement[]) result.toArray(new IConfigurationElement[result.size()]);
+	}
+
+	public String getLabel() {
+		return getExtensionPoint().getLabel();
+	}
+
+	public String getSchemaReference() {
+		return getExtensionPoint().getSchemaReference();
+	}
+
+	public String getSimpleIdentifier() {
+		return getExtensionPoint().getSimpleIdentifier();
+	}
+
+	public String getUniqueIdentifier() {
+		return getExtensionPoint().getUniqueIdentifier();
+	}
+
+	RegistryObject getObject() {
+		return getExtensionPoint();
+	}
+
+	protected ExtensionPoint getExtensionPoint() {
+		return (ExtensionPoint) objectManager.getObject(getId(), RegistryObjectManager.EXTENSION_POINT);
+	}
+
+	public boolean isValid() {
+		try {
+			getExtensionPoint();
+		} catch (InvalidRegistryObjectException e) {
+			return false;
+		}
+		return true;
+	}
+}
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElement.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElement.java
index 2da3d0a..0ddd834 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElement.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElement.java
@@ -12,8 +12,6 @@
 
 import java.util.Hashtable;
 import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.registry.IExecutableExtension;
-import org.eclipse.equinox.registry.IExecutableExtensionFactory;
 import org.eclipse.osgi.util.NLS;
 
 /**
@@ -250,11 +248,8 @@
 		try {
 			// We need to take into account both "old" and "new" style executable extensions 
 			ConfigurationElementHandle confElementHandle = new ConfigurationElementHandle(registry.getObjectManager(), getObjectId());
-			if (result instanceof IExecutableExtension) {
+			if (result instanceof IExecutableExtension)
 				((IExecutableExtension) result).setInitializationData(confElementHandle, attributeName, initData);
-			}
-			if (registry.compatibilityStrategy != null)
-				registry.compatibilityStrategy.setInitializationData(result, confElementHandle, attributeName, initData);
 		} catch (CoreException ce) {
 			// user code threw exception
 			throw ce;
@@ -264,11 +259,8 @@
 		}
 
 		// Deal with executable extension factories.
-		if (result instanceof IExecutableExtensionFactory) {
+		if (result instanceof IExecutableExtensionFactory)
 			result = ((IExecutableExtensionFactory) result).create();
-		}
-		if (registry.compatibilityStrategy != null)
-			result = registry.compatibilityStrategy.create(result);
 
 		return result;
 	}
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElementHandle.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElementHandle.java
index aec8fbc..3f9645b 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElementHandle.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ConfigurationElementHandle.java
@@ -11,7 +11,6 @@
 package org.eclipse.core.internal.registry;
 
 import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.registry.*;
 
 /**
  * @since 3.1 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Contribution.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Contribution.java
index 107965e..7dfdf32 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Contribution.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Contribution.java
@@ -11,7 +11,7 @@
 package org.eclipse.core.internal.registry;
 
 import org.eclipse.core.runtime.Assert;
-import org.eclipse.equinox.registry.InvalidRegistryObjectException;
+import org.eclipse.core.runtime.InvalidRegistryObjectException;
 
 // This object is used to keep track on a contributor basis of the extension and extension points being contributed.
 // It is mainly used on removal so we can quickly  find objects to remove.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionDelta.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionDelta.java
index 5d15126..a666025 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionDelta.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionDelta.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.core.internal.registry;
 
-import org.eclipse.equinox.registry.*;
+import org.eclipse.core.runtime.*;
 
 public class ExtensionDelta implements IExtensionDelta {
 	private int kind;
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java
index 77bc6c5..c1046a7 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionHandle.java
@@ -10,60 +10,18 @@
  *******************************************************************************/
 package org.eclipse.core.internal.registry;
 
-import org.eclipse.equinox.registry.*;
-
 /**
+ * The code (minus the getDeclaringPluginDescriptor() was moved into 
+ * the  BaseExtensionPointHandle to avoid duplicating code in the 
+ * compatibility fragment.
+ * 
+ * Modifications to the code should be done in the BaseExtensionHandle.
+ * 
  * @since 3.1 
  */
-public class ExtensionHandle extends Handle implements IExtension {
-	static final ExtensionHandle[] EMPTY_ARRAY = new ExtensionHandle[0];
+public class ExtensionHandle extends BaseExtensionHandle {
 
 	public ExtensionHandle(IObjectManager objectManager, int id) {
 		super(objectManager, id);
 	}
-
-	protected Extension getExtension() {
-		return (Extension) objectManager.getObject(getId(), RegistryObjectManager.EXTENSION);
-	}
-
-	protected boolean shouldPersist() {
-		return getExtension().shouldPersist();
-	}
-
-	public String getNamespace() {
-		return getExtension().getNamespaceName();
-	}
-
-	public String getExtensionPointUniqueIdentifier() {
-		return getExtension().getExtensionPointIdentifier();
-	}
-
-	public String getLabel() {
-		return getExtension().getLabel();
-	}
-
-	public String getSimpleIdentifier() {
-		return getExtension().getSimpleIdentifier();
-	}
-
-	public String getUniqueIdentifier() {
-		return getExtension().getUniqueIdentifier();
-	}
-
-	public IConfigurationElement[] getConfigurationElements() {
-		return (IConfigurationElement[]) objectManager.getHandles(getExtension().getRawChildren(), RegistryObjectManager.CONFIGURATION_ELEMENT);
-	}
-
-	RegistryObject getObject() {
-		return getExtension();
-	}
-
-	public boolean isValid() {
-		try {
-			getExtension();
-		} catch (InvalidRegistryObjectException e) {
-			return false;
-		}
-		return true;
-	}
 }
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java
index 98822d5..b338eaf 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionPointHandle.java
@@ -10,87 +10,18 @@
  *******************************************************************************/
 package org.eclipse.core.internal.registry;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import org.eclipse.equinox.registry.*;
-
 /**
+ * The code (minus the getDeclaringPluginDescriptor() was moved into 
+ * the  BaseExtensionPointHandle to avoid duplicating code in the 
+ * compatibility fragment.
+ * 
+ * Modifications to the code should be done in the BaseExtensionPointHandle.
+ * 
  * @since 3.1 
  */
-public class ExtensionPointHandle extends Handle implements IExtensionPoint {
-	static final ExtensionPointHandle[] EMPTY_ARRAY = new ExtensionPointHandle[0];
+public class ExtensionPointHandle extends BaseExtensionPointHandle {
 
 	public ExtensionPointHandle(IObjectManager objectManager, int id) {
 		super(objectManager, id);
 	}
-
-	public IExtension[] getExtensions() {
-		return (IExtension[]) objectManager.getHandles(getExtensionPoint().getRawChildren(), RegistryObjectManager.EXTENSION);
-	}
-
-	public String getNamespace() {
-		return getExtensionPoint().getNamespace();
-	}
-
-	protected boolean shouldPersist() {
-		return getExtensionPoint().shouldPersist();
-	}
-
-	public IExtension getExtension(String extensionId) {
-		if (extensionId == null)
-			return null;
-		int[] children = getExtensionPoint().getRawChildren();
-		for (int i = 0; i < children.length; i++) {
-			//	Here we directly get the object because it avoids the creation of garbage and because we'll need the object anyway to compare the value
-			if (extensionId.equals(((Extension) objectManager.getObject(children[i], RegistryObjectManager.EXTENSION)).getUniqueIdentifier()))
-				return (ExtensionHandle) objectManager.getHandle(children[i], RegistryObjectManager.EXTENSION);
-		}
-		return null;
-	}
-
-	public IConfigurationElement[] getConfigurationElements() {
-		//get the actual extension objects since we'll need to get the configuration elements information.
-		Extension[] tmpExtensions = (Extension[]) objectManager.getObjects(getExtensionPoint().getRawChildren(), RegistryObjectManager.EXTENSION);
-		if (tmpExtensions.length == 0)
-			return ConfigurationElementHandle.EMPTY_ARRAY;
-
-		ArrayList result = new ArrayList();
-		for (int i = 0; i < tmpExtensions.length; i++) {
-			result.addAll(Arrays.asList(objectManager.getHandles(tmpExtensions[i].getRawChildren(), RegistryObjectManager.CONFIGURATION_ELEMENT)));
-		}
-		return (IConfigurationElement[]) result.toArray(new IConfigurationElement[result.size()]);
-	}
-
-	public String getLabel() {
-		return getExtensionPoint().getLabel();
-	}
-
-	public String getSchemaReference() {
-		return getExtensionPoint().getSchemaReference();
-	}
-
-	public String getSimpleIdentifier() {
-		return getExtensionPoint().getSimpleIdentifier();
-	}
-
-	public String getUniqueIdentifier() {
-		return getExtensionPoint().getUniqueIdentifier();
-	}
-
-	RegistryObject getObject() {
-		return getExtensionPoint();
-	}
-
-	protected ExtensionPoint getExtensionPoint() {
-		return (ExtensionPoint) objectManager.getObject(getId(), RegistryObjectManager.EXTENSION_POINT);
-	}
-
-	public boolean isValid() {
-		try {
-			getExtensionPoint();
-		} catch (InvalidRegistryObjectException e) {
-			return false;
-		}
-		return true;
-	}
 }
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionRegistry.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionRegistry.java
index da025eb..5b7efad 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionRegistry.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ExtensionRegistry.java
@@ -17,8 +17,7 @@
 import org.eclipse.core.internal.registry.spi.ConfigurationElementDescription;
 import org.eclipse.core.internal.registry.spi.ConfigurationElementAttribute;
 import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.registry.*;
-import org.eclipse.equinox.registry.spi.RegistryStrategy;
+import org.eclipse.core.runtime.spi.RegistryStrategy;
 import org.eclipse.osgi.storagemanager.StorageManager;
 import org.eclipse.osgi.util.NLS;
 import org.xml.sax.InputSource;
@@ -31,9 +30,9 @@
 
 	protected class ListenerInfo {
 		public String filter;
-		public EventListener listener;
+		public IRegistryChangeListener listener;
 
-		public ListenerInfo(EventListener listener, String filter) {
+		public ListenerInfo(IRegistryChangeListener listener, String filter) {
 			this.listener = listener;
 			this.filter = filter;
 		}
@@ -70,10 +69,7 @@
 	private Object masterToken; // use to get full control of the registry; objects created as "static" 
 	private Object userToken; // use to modify non-persisted registry elements
 
-	/////////////////////////////////////////////////////////////////////////////////////////
-	// Registry strategies
-	protected RegistryStrategy strategy;
-	protected ICompatibilityStrategy compatibilityStrategy = null;
+	protected RegistryStrategy strategy; // overridable portions of the registry functionality
 
 	public RegistryObjectManager getObjectManager() {
 		return registryObjects;
@@ -176,12 +172,12 @@
 		return affectedNamespaces;
 	}
 
-	public void addRegistryChangeListener(EventListener listener) {
+	public void addRegistryChangeListener(IRegistryChangeListener listener) {
 		// this is just a convenience API - no need to do any sync'ing here		
 		addRegistryChangeListener(listener, null);
 	}
 
-	public void addRegistryChangeListener(EventListener listener, String filter) {
+	public void addRegistryChangeListener(IRegistryChangeListener listener, String filter) {
 		synchronized (listeners) {
 			listeners.add(new ListenerInfo(listener, filter));
 		}
@@ -555,7 +551,7 @@
 		return affectedNamespaces;
 	}
 
-	public void removeRegistryChangeListener(EventListener listener) {
+	public void removeRegistryChangeListener(IRegistryChangeListener listener) {
 		synchronized (listeners) {
 			listeners.remove(new ListenerInfo(listener, null));
 		}
@@ -566,9 +562,7 @@
 			strategy = registryStrategy;
 		else
 			strategy = new RegistryStrategy(null, true);
-		// split strategies - reduce number of "instanceof" calls
-		if (registryStrategy instanceof ICompatibilityStrategy)
-			compatibilityStrategy = (ICompatibilityStrategy) strategy;
+
 		// create the file manager right away
 		setFileManager(strategy.getStorage(), strategy.isCacheReadOnly());
 
@@ -681,8 +675,8 @@
 		} catch (IOException e) {
 			//Ignore the exception since we can recompute the cache
 		}
-		cacheStorageManager.close();
 		theTableReader.close();
+		cacheStorageManager.close();
 	}
 
 	/*
@@ -814,8 +808,6 @@
 				continue;
 			if (listenerInfo.listener instanceof IRegistryChangeListener)
 				((IRegistryChangeListener) listenerInfo.listener).registryChanged(new RegistryChangeEvent(deltas, listenerInfo.filter));
-			if (compatibilityStrategy != null)
-				compatibilityStrategy.invokeListener(listenerInfo.listener, deltas, listenerInfo.filter);
 		}
 		for (Iterator iter = deltas.values().iterator(); iter.hasNext();) {
 			((RegistryDelta) iter.next()).getObjectManager().close();
@@ -954,7 +946,7 @@
 	 * If the registry is not modifiable, this method is an access controlled method. 
 	 * Proper token should be passed as an argument for non-modifiable registries.
 	 * </p>
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#isModifiable()
+	 * @see org.eclipse.core.runtime.spi.RegistryStrategy#isModifiable()
 	 * 
 	 * @param identifier Id of the extension point. If non-qualified names is supplied,
 	 * it will be converted internally into a fully qualified name
@@ -965,7 +957,7 @@
 	 * @param schemaReference reference to the extension point schema. The schema reference 
 	 * is a URL path relative to the plug-in installation URL. May be null
 	 * @param token the key used to check permissions. Two registry keys are set in the registry
-	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.equinox.registry.spi.RegistryStrategy, Object, Object)}: 
+	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.core.runtime.spi.RegistryStrategy, Object, Object)}: 
 	 * master token and a user token. Master token allows all operations; user token 
 	 * allows non-persisted registry elements to be modified.
 	 * @throws IllegalArgumentException if incorrect token is passed in
@@ -1018,7 +1010,7 @@
 	 * If the registry is not modifiable, this method is an access controlled method. 
 	 * Proper token should be passed as an argument for non-modifiable registries.
 	 * </p>
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#isModifiable()
+	 * @see org.eclipse.core.runtime.spi.RegistryStrategy#isModifiable()
 	 * @see org.eclipse.core.internal.registry.spi.ConfigurationElementDescription
 	 * 
 	 * @param identifier Id of the extension. If non-qualified name is supplied,
@@ -1031,7 +1023,7 @@
 	 * name is supplied, it is assumed to have the same contributorId as this extension
 	 * @param configurationElements contents of the extension
 	 * @param token the key used to check permissions. Two registry keys are set in the registry
-	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.equinox.registry.spi.RegistryStrategy, Object, Object)}: 
+	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.core.runtime.spi.RegistryStrategy, Object, Object)}: 
 	 * master token and a user token. Master token allows all operations; user token 
 	 * allows non-persisted registry elements to be modified.
 	 * @throws IllegalArgumentException if incorrect token is passed in
@@ -1168,12 +1160,8 @@
 		return true;
 	}
 
-	public void setCompatibilityStrategy(ICompatibilityStrategy strategy) {
-		compatibilityStrategy = strategy;
-	}
-
 	/**
-	 * This is an experimental funciton. It <b>will</b> be modified in future.
+	 * This is an experimental function. It <b>will</b> be modified in future.
 	 */
 	public Object getTemporaryUserToken() {
 		return userToken;
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Handle.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Handle.java
index ca1ef62..35c1f72 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Handle.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/Handle.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.core.internal.registry;
 
-import org.eclipse.equinox.registry.InvalidRegistryObjectException;
+import org.eclipse.core.runtime.InvalidRegistryObjectException;
 
 /**
  * A handle is the super class to all registry objects that are now served to users.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ICompatibilityStrategy.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ICompatibilityStrategy.java
deleted file mode 100644
index 2f8e868..0000000
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ICompatibilityStrategy.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation 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.core.internal.registry;
-
-import java.util.EventListener;
-import java.util.Map;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.equinox.registry.IConfigurationElement;
-
-/**
- * This interfaces provides a bridge between the "old" org.eclipse.core.runitime elements
- * and "new" org.eclipse.equinox.registry elements. While registry internally operates
- * with "new" elements, listeners might expect "old" element types.
- * 
- * The interface provides backward compatibility. It is not expected to be implemented
- * or extended by clients.
- *  
- * @since org.eclipse.equinox.registry 1.0
- */
-public interface ICompatibilityStrategy {
-	/**
-	 * Implement to ADD an additional listener invocation mechanism.
-	 * (Default meachnism is executed first, this implementation is executed second.)
-	 *  
-	 * @param listener - the listener to be invoked
-	 * @param deltas - event deltas
-	 * @param filter - the listener filter string
-	 */
-	public void invokeListener(EventListener listener, Map deltas, String filter);
-
-	/**
-	 * Implement to ADD an additional initialization path for the CreateExecutableExtensions.
-	 * (Default meachnism is executed first, this implementation is executed second.)
-	 * @param newClassInstance - class just created for an executable extension
-	 * @param confElement - ConfigurationElement that triggered creation of this element
-	 * @param propertyName - name of the attribute describing class to be created
-	 * @param initData - initialization data
-	 * @throws CoreException
-	 */
-	public void setInitializationData(Object newClassInstance, IConfigurationElement confElement, String propertyName, Object initData) throws CoreException;
-	
-	
-	/**
-	 * Implement to ADD an additional creation path for the CreateExecutableExtensions. 
-	 * (Default meachnism is executed first, this implementation is executed second.)
-	 * 
-	 * @param result - object being created
-	 * @return object returned by the IExecutableExtensionFactory.create() method
-	 */
-	public Object create(Object result) throws CoreException ;
-}
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryChangeEvent.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryChangeEvent.java
index e35df39..92c2c70 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryChangeEvent.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryChangeEvent.java
@@ -12,8 +12,8 @@
 
 import java.util.Arrays;
 import java.util.Map;
-import org.eclipse.equinox.registry.IExtensionDelta;
-import org.eclipse.equinox.registry.IRegistryChangeEvent;
+import org.eclipse.core.runtime.IExtensionDelta;
+import org.eclipse.core.runtime.IRegistryChangeEvent;
 
 /**
  * A registry change event implementation. A filter can be specified. In that case, only 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryDelta.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryDelta.java
index d25cb73..12b66db 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryDelta.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryDelta.java
@@ -11,8 +11,8 @@
 package org.eclipse.core.internal.registry;
 
 import java.util.*;
-import org.eclipse.equinox.registry.IExtension;
-import org.eclipse.equinox.registry.IExtensionDelta;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionDelta;
 
 /**
  * The extension deltas are grouped by namespace. There is one registry delta by namespace.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java
index 5ccc3df..d929431 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java
@@ -12,7 +12,7 @@
 
 import java.lang.ref.SoftReference;
 import java.util.*;
-import org.eclipse.equinox.registry.InvalidRegistryObjectException;
+import org.eclipse.core.runtime.InvalidRegistryObjectException;
 
 /**
  * This class manage all the object from the registry but does not deal with their dependencies.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TableWriter.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TableWriter.java
index 9f8b71c..2b929d6 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TableWriter.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TableWriter.java
@@ -12,10 +12,7 @@
 
 import java.io.*;
 import java.util.*;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.equinox.registry.IConfigurationElement;
-import org.eclipse.equinox.registry.IExtension;
+import org.eclipse.core.runtime.*;
 
 public class TableWriter {
 	private static final byte fileError = 0;
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TemporaryObjectManager.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TemporaryObjectManager.java
index 7c5d160..8af0330 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TemporaryObjectManager.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/TemporaryObjectManager.java
@@ -11,7 +11,7 @@
 package org.eclipse.core.internal.registry;
 
 import java.util.Map;
-import org.eclipse.equinox.registry.InvalidRegistryObjectException;
+import org.eclipse.core.runtime.InvalidRegistryObjectException;
 
 /**
  * @since 3.1
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ThirdLevelConfigurationElementHandle.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ThirdLevelConfigurationElementHandle.java
index 1931b8c..7cf9d0d 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ThirdLevelConfigurationElementHandle.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/ThirdLevelConfigurationElementHandle.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.core.internal.registry;
 
-import org.eclipse.equinox.registry.IConfigurationElement;
+import org.eclipse.core.runtime.IConfigurationElement;
 
 /**
  * @since 3.1 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/Activator.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/Activator.java
index db74720..200b450 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/Activator.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/Activator.java
@@ -13,8 +13,7 @@
 import java.io.File;
 import java.util.Hashtable;
 import org.eclipse.core.internal.registry.IRegistryConstants;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.equinox.registry.*;
+import org.eclipse.core.runtime.*;
 import org.eclipse.osgi.service.datalocation.Location;
 import org.eclipse.osgi.service.environment.EnvironmentInfo;
 import org.osgi.framework.*;
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/EclipseBundleListener.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/EclipseBundleListener.java
index 12a70d3..3eb79df 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/EclipseBundleListener.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/EclipseBundleListener.java
@@ -18,9 +18,7 @@
 import org.eclipse.core.internal.registry.RegistryMessages;
 import org.eclipse.core.internal.runtime.ResourceTranslator;
 import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.equinox.registry.RegistryUtils;
+import org.eclipse.core.runtime.*;
 import org.eclipse.osgi.util.ManifestElement;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.*;
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryProviderOSGI.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryProviderOSGI.java
index a5b7288..3b46dfe 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryProviderOSGI.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryProviderOSGI.java
@@ -12,10 +12,7 @@
 
 import org.eclipse.core.internal.registry.RegistryMessages;
 import org.eclipse.core.internal.runtime.RuntimeLog;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.equinox.registry.IExtensionRegistry;
-import org.eclipse.equinox.registry.IRegistryProvider;
+import org.eclipse.core.runtime.*;
 import org.osgi.framework.BundleContext;
 import org.osgi.util.tracker.ServiceTracker;
 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryStrategyOSGI.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryStrategyOSGI.java
index 1353e80..eceb764 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryStrategyOSGI.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/osgi/RegistryStrategyOSGI.java
@@ -22,9 +22,7 @@
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.equinox.registry.IRegistryProvider;
-import org.eclipse.equinox.registry.RegistryFactory;
-import org.eclipse.equinox.registry.spi.RegistryStrategy;
+import org.eclipse.core.runtime.spi.RegistryStrategy;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -78,16 +76,10 @@
 		token = key;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#isModifiable()
-	 */
 	public boolean isModifiable() {
 		return false; // Clients are not allowed to add information into this registry
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#translate(java.lang.String, java.util.ResourceBundle)
-	 */
 	public final String translate(String key, ResourceBundle resources) {
 		return ResourceTranslator.getResourceString(null, key, resources);
 	}
@@ -126,9 +118,6 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#scheduleChangeEvent(java.lang.Object[], java.util.Map, java.lang.Object)
-	 */
 	public final void scheduleChangeEvent(Object[] listeners, Map deltas, Object registry) {
 		new ExtensionEventDispatcherJob(listeners, deltas, registry).schedule();
 	}
@@ -232,7 +221,7 @@
 	/////////////////////////////////////////////////////////////////////////////////////
 	// Executable extensions: bundle-based class loading
 
-	public Object createExecutableExtension(String pluginName, String namespaceOwnerId, String namespaceName, String className, Object initData, String propertyName, org.eclipse.equinox.registry.IConfigurationElement confElement) throws CoreException {
+	public Object createExecutableExtension(String pluginName, String namespaceOwnerId, String namespaceName, String className, Object initData, String propertyName, org.eclipse.core.runtime.IConfigurationElement confElement) throws CoreException {
 
 		if (pluginName != null && !pluginName.equals("") && !pluginName.equals(namespaceName)) { //$NON-NLS-1$
 			Bundle otherBundle = null;
@@ -244,7 +233,7 @@
 		return createExecutableExtension(contributingBundle, className, initData, propertyName, confElement);
 	}
 
-	private Object createExecutableExtension(Bundle bundle, String className, Object initData, String propertyName, org.eclipse.equinox.registry.IConfigurationElement confElement) throws CoreException {
+	private Object createExecutableExtension(Bundle bundle, String className, Object initData, String propertyName, org.eclipse.core.runtime.IConfigurationElement confElement) throws CoreException {
 		// load the requested class from this plugin
 		Class classInstance = null;
 		try {
@@ -278,9 +267,6 @@
 	 */
 	private EclipseBundleListener pluginBundleListener = null;
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#start(java.lang.Object)
-	 */
 	public void onStart(Object registry) {
 		super.onStart(registry);
 		if (!(registry instanceof ExtensionRegistry))
@@ -301,9 +287,6 @@
 			pluginBundleListener.processBundles(Activator.getContext().getBundles());
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#stop(java.lang.Object)
-	 */
 	public void onStop(Object registry) {
 		if (pluginBundleListener != null)
 			Activator.getContext().removeBundleListener(pluginBundleListener);
@@ -317,23 +300,14 @@
 	//////////////////////////////////////////////////////////////////////////////////////
 	// Cache strategy
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#useCache()
-	 */
 	public boolean cacheUse() {
 		return !"true".equals(System.getProperty(IRegistryConstants.PROP_NO_REGISTRY_CACHE)); //$NON-NLS-1$
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#lazyCacheLoading()
-	 */
 	public boolean cacheLazyLoading() {
 		return !("true".equalsIgnoreCase(System.getProperty(IRegistryConstants.PROP_NO_LAZY_CACHE_LOADING))); //$NON-NLS-1$
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#computeTimeStamp()
-	 */
 	public long cacheComputeTimeStamp() {
 		// If the check config prop is false or not set then exit
 		if (!"true".equalsIgnoreCase(System.getProperty(IRegistryConstants.PROP_CHECK_CONFIG))) //$NON-NLS-1$  
@@ -359,9 +333,6 @@
 		return result;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.registry.spi.RegistryStrategy#getXMLParser()
-	 */
 	public SAXParserFactory getXMLParser() {
 		if (xmlTracker == null) {
 			xmlTracker = new ServiceTracker(Activator.getContext(), SAXParserFactory.class.getName(), null);
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementAttribute.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementAttribute.java
index 03ddd53..fd9b2a1 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementAttribute.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementAttribute.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.core.internal.registry.spi;
 
-import org.eclipse.equinox.registry.IConfigurationElement;
+import org.eclipse.core.runtime.IConfigurationElement;
 
 /**
  * Describes properties of configuration elements to be added to the registry. 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementDescription.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementDescription.java
index c5118ce..d754547 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementDescription.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/spi/ConfigurationElementDescription.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.core.internal.registry.spi;
 
-import org.eclipse.equinox.registry.IConfigurationElement;
+import org.eclipse.core.runtime.IConfigurationElement;
 
 /**
  * Describes configuration elements (content of an extension) to be added to 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IConfigurationElement.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IConfigurationElement.java
similarity index 99%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IConfigurationElement.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IConfigurationElement.java
index e90697e..648a0be 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IConfigurationElement.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IConfigurationElement.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 import org.eclipse.core.runtime.CoreException;
 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExecutableExtension.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExecutableExtension.java
similarity index 98%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExecutableExtension.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExecutableExtension.java
index 420e757..8ce094b 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExecutableExtension.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExecutableExtension.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 import org.eclipse.core.runtime.CoreException;
 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExecutableExtensionFactory.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExecutableExtensionFactory.java
similarity index 95%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExecutableExtensionFactory.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExecutableExtensionFactory.java
index 3c9c47c..f8f8580 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExecutableExtensionFactory.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExecutableExtensionFactory.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 import org.eclipse.core.runtime.CoreException;
 
@@ -33,7 +33,7 @@
  * Like any other executable extension, they can configured by implementing {@link org.eclipse.core.runtime.IExecutableExtension} interface.
  * </p>
  * 
- * @see org.eclipse.equinox.registry.IConfigurationElement
+ * @see org.eclipse.core.runtime.IConfigurationElement
  * @since org.eclipse.equinox.registry 1.0
  */
 public interface IExecutableExtensionFactory {
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtension.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtension.java
similarity index 99%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtension.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtension.java
index 82e86dc..9a12b3b 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtension.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtension.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 /**
  * An extension declared in a plug-in.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionDelta.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionDelta.java
similarity index 97%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionDelta.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionDelta.java
index adcec1e..cb83847 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionDelta.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionDelta.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 /**
  * An extension delta represents changes to the extension registry.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionPoint.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionPoint.java
similarity index 99%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionPoint.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionPoint.java
index ddbe7bc..e834497 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionPoint.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionPoint.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 /**
  * An extension point declared in a plug-in.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionRegistry.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionRegistry.java
similarity index 93%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionRegistry.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionRegistry.java
index bb6705d..d79d9c8 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IExtensionRegistry.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IExtensionRegistry.java
@@ -8,10 +8,9 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 import java.io.InputStream;
-import java.util.EventListener;
 import java.util.ResourceBundle;
 
 /**
@@ -51,6 +50,7 @@
  * <p>
  * This interface is not intended to be implemented by clients.
  * </p>
+ * @since 3.0
  */
 public interface IExtensionRegistry {
 	/**
@@ -70,9 +70,9 @@
 	 * @param namespace the namespace in which to listen for changes
 	 * @see IRegistryChangeListener
 	 * @see IRegistryChangeEvent
-	 * @see #removeRegistryChangeListener(EventListener) 
+	 * @see #removeRegistryChangeListener(IRegistryChangeListener) 
 	 */
-	public void addRegistryChangeListener(EventListener listener, String namespace);
+	public void addRegistryChangeListener(IRegistryChangeListener listener, String namespace);
 
 	/**
 	 * Adds the given listener for registry change events.
@@ -88,10 +88,10 @@
 	 * @param listener the listener
 	 * @see IRegistryChangeListener
 	 * @see IRegistryChangeEvent
-	 * @see #addRegistryChangeListener(EventListener, String)
-	 * @see #removeRegistryChangeListener(EventListener)
+	 * @see #addRegistryChangeListener(IRegistryChangeListener, String)
+	 * @see #removeRegistryChangeListener(IRegistryChangeListener)
 	 */
-	public void addRegistryChangeListener(EventListener listener);
+	public void addRegistryChangeListener(IRegistryChangeListener listener);
 
 	/**
 	 * Returns all configuration elements from all extensions configured
@@ -241,10 +241,10 @@
 	 *
 	 * @param listener the listener
 	 * @see IRegistryChangeListener
-	 * @see #addRegistryChangeListener(EventListener)
-	 * @see #addRegistryChangeListener(EventListener, String)
+	 * @see #addRegistryChangeListener(IRegistryChangeListener)
+	 * @see #addRegistryChangeListener(IRegistryChangeListener, String)
 	 */
-	public void removeRegistryChangeListener(EventListener listener);
+	public void removeRegistryChangeListener(IRegistryChangeListener listener);
 
 	/**
 	 * Adds to this extension registry an extension point(s), extension(s), or 
@@ -265,7 +265,7 @@
 	 * @param name optional name of the contribution. Used for error reporting; might be null
 	 * @param translationBundle optional resource bundle used for translations; might be null 
 	 * @param token the key used to check permissions. Two registry keys are set in the registry
-	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.equinox.registry.spi.RegistryStrategy, Object, Object)}: 
+	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.core.runtime.spi.RegistryStrategy, Object, Object)}: 
 	 * master token and a user token. Master token allows all operations; user token 
 	 * allows non-persisted registry elements to be modified.
 	 * @return - true: the contribution was successfully processed; false - error in 
@@ -279,7 +279,7 @@
 	 * 
 	 * @param extension extension to be removed
 	 * @param token the key used to check permissions. Two registry keys are set in the registry
-	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.equinox.registry.spi.RegistryStrategy, Object, Object)}: 
+	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.core.runtime.spi.RegistryStrategy, Object, Object)}: 
 	 * master token and a user token. Master token allows all operations; user token only
 	 * allows non-persisted registry elements to be modified.
 	 * <p>
@@ -296,7 +296,7 @@
 	 * 
 	 * @param extensionPoint extension point to be removed
 	 * @param token the key used to check permissions. Two registry keys are set in the registry
-	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.equinox.registry.spi.RegistryStrategy, Object, Object)}: 
+	 * constructor {@link RegistryFactory#createRegistry(org.eclipse.core.runtime.spi.RegistryStrategy, Object, Object)}: 
 	 * master token and a user token. Master token allows all operations; user token only
 	 * allows non-persisted registry elements to be modified.
 	 * <p>
@@ -315,7 +315,7 @@
 	 * <p>
 	 * This method is an access controlled method. Master token should be passed as an argument.
 	 * </p>
-	 * @see RegistryFactory#createRegistry(org.eclipse.equinox.registry.spi.RegistryStrategy, Object, Object)
+	 * @see RegistryFactory#createRegistry(org.eclipse.core.runtime.spi.RegistryStrategy, Object, Object)
 	 * @param token master token for the registry
 	 * @throws IllegalArgumentException if incorrect token is passed
 	 */
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryChangeEvent.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryChangeEvent.java
similarity index 98%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryChangeEvent.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryChangeEvent.java
index 6a5364d..f7af951 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryChangeEvent.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryChangeEvent.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 /**
  * Registry change events describe changes to the extension registry. 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryChangeListener.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryChangeListener.java
similarity index 97%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryChangeListener.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryChangeListener.java
index 7d62773..8c908af 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryChangeListener.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryChangeListener.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 import java.util.EventListener;
 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryProvider.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryProvider.java
similarity index 96%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryProvider.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryProvider.java
index 0e0c472..de462fb 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/IRegistryProvider.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/IRegistryProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 /**
  * Implement this interface to specify the default extension registry.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/RegistryFactory.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/RegistryFactory.java
similarity index 88%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/RegistryFactory.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/RegistryFactory.java
index a1a5791..bf877a8 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/RegistryFactory.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/RegistryFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation 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,11 +8,10 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
-import org.eclipse.core.internal.registry.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.registry.spi.RegistryStrategy;
+import org.eclipse.core.internal.registry.ExtensionRegistry;
+import org.eclipse.core.runtime.spi.RegistryStrategy;
 
 /**
  * Use this class to create or obtain an extension registry.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/RegistryUtils.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/RegistryUtils.java
similarity index 94%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/RegistryUtils.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/RegistryUtils.java
index 8c2713e..5731912 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/RegistryUtils.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/RegistryUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation 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,14 +8,13 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry;
+package org.eclipse.core.runtime;
 
 import java.io.File;
 import org.eclipse.core.internal.registry.IRegistryConstants;
 import org.eclipse.core.internal.registry.RegistryMessages;
 import org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI;
-import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.registry.spi.RegistryStrategy;
+import org.eclipse.core.runtime.spi.RegistryStrategy;
 import org.osgi.framework.Bundle;
 
 /**
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/ExtensionTracker.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/ExtensionTracker.java
similarity index 94%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/ExtensionTracker.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/ExtensionTracker.java
index 6512c4e..486fc2a 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/ExtensionTracker.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/ExtensionTracker.java
@@ -8,27 +8,27 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry.tracker;
+package org.eclipse.core.runtime.dynamichelpers;
 
 import java.util.HashMap;
 import java.util.Map;
 import org.eclipse.core.internal.registry.RegistryMessages;
 import org.eclipse.core.internal.runtime.ReferenceHashSet;
 import org.eclipse.core.internal.runtime.RuntimeLog;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionDelta;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IRegistryChangeEvent;
+import org.eclipse.core.runtime.IRegistryChangeListener;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.RegistryFactory;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.equinox.registry.IExtension;
-import org.eclipse.equinox.registry.IExtensionDelta;
-import org.eclipse.equinox.registry.IExtensionPoint;
-import org.eclipse.equinox.registry.IExtensionRegistry;
-import org.eclipse.equinox.registry.IRegistryChangeEvent;
-import org.eclipse.equinox.registry.IRegistryChangeListener;
-import org.eclipse.equinox.registry.RegistryFactory;
 
 /**
  * Implementation of the IExtensionTracker. 
- * @see org.eclipse.equinox.registry.tracker.IExtensionTracker 
+ * @see org.eclipse.core.runtime.dynamichelpers.IExtensionTracker 
  * @since 3.1
  */
 public class ExtensionTracker implements IExtensionTracker, IRegistryChangeListener {
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IExtensionChangeHandler.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IExtensionChangeHandler.java
similarity index 93%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IExtensionChangeHandler.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IExtensionChangeHandler.java
index 20d8a36..1637876 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IExtensionChangeHandler.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IExtensionChangeHandler.java
@@ -8,9 +8,9 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry.tracker;
+package org.eclipse.core.runtime.dynamichelpers;
 
-import org.eclipse.equinox.registry.IExtension;
+import org.eclipse.core.runtime.IExtension;
 
 /**
  * Extension change handlers are notified of changes for a given extension 
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IExtensionTracker.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IExtensionTracker.java
similarity index 97%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IExtensionTracker.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IExtensionTracker.java
index 3f54377..dadf499 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IExtensionTracker.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IExtensionTracker.java
@@ -8,10 +8,10 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry.tracker;
+package org.eclipse.core.runtime.dynamichelpers;
 
 import org.eclipse.core.internal.runtime.ReferenceHashSet;
-import org.eclipse.equinox.registry.IExtension;
+import org.eclipse.core.runtime.IExtension;
 
 /**
  * An extension tracker keeps associations between extensions and their derived objects on an extension basis.
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IFilter.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IFilter.java
similarity index 91%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IFilter.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IFilter.java
index fcaefd8..1dc0203 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/IFilter.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/IFilter.java
@@ -8,9 +8,9 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry.tracker;
+package org.eclipse.core.runtime.dynamichelpers;
 
-import org.eclipse.equinox.registry.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionPoint;
 
 /**
  * A filter compares the given object to some pattern and returns true
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/package.html b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/package.html
similarity index 99%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/package.html
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/package.html
index 2ad57b4..154a80a 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/tracker/package.html
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/dynamichelpers/package.html
@@ -11,4 +11,4 @@
 This package specifies the API for tracking extensions life-cycle.
 </p>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/package.html b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/package.html
similarity index 100%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/package.html
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/package.html
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/spi/RegistryStrategy.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/spi/RegistryStrategy.java
similarity index 97%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/spi/RegistryStrategy.java
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/spi/RegistryStrategy.java
index 248217b..7229eb1 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/spi/RegistryStrategy.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/spi/RegistryStrategy.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.equinox.registry.spi;
+package org.eclipse.core.runtime.spi;
 
 import java.io.File;
 import java.util.Map;
@@ -16,7 +16,6 @@
 import javax.xml.parsers.SAXParserFactory;
 import org.eclipse.core.internal.registry.*;
 import org.eclipse.core.runtime.*;
-import org.eclipse.equinox.registry.IConfigurationElement;
 import org.eclipse.osgi.util.NLS;
 
 /**
@@ -344,7 +343,7 @@
 	 * The parser used by the registry to parse descriptions of extension points
 	 * and extensions from the XML input streams.
 	 * 
-	 * @see org.eclipse.equinox.registry.IExtensionRegistry#addContribution(java.io.InputStream, String, boolean, String, ResourceBundle, Object)
+	 * @see org.eclipse.core.runtime.IExtensionRegistry#addContribution(java.io.InputStream, String, boolean, String, ResourceBundle, Object)
 	 * 
 	 * @return XML parser
 	 */
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/spi/package.html b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/spi/package.html
similarity index 100%
rename from bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/spi/package.html
rename to bundles/org.eclipse.equinox.registry/src/org/eclipse/core/runtime/spi/package.html
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/InvalidRegistryObjectException.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/InvalidRegistryObjectException.java
deleted file mode 100644
index 8064860..0000000
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/equinox/registry/InvalidRegistryObjectException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation 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.equinox.registry;
-
-/** 
- * An unchecked exception indicating that an attempt to access
- * an extension registry object that is no longer valid.
- * <p>
- * This exception is thrown by methods on extension registry
- * objects. It is not intended to be instantiated or
- * subclassed by clients.
- * </p>
- */
-public class InvalidRegistryObjectException extends RuntimeException {
-	/*
-	 * Declare a stable serialVersionUID.
-	 */
-	private static final long serialVersionUID = 1L;
-
-	private static final String MESSAGE = "Invalid registry object"; //$NON-NLS-1$
-
-	/**
-	 * Creates a new exception instance with null as its detail message.
-	 */
-	public InvalidRegistryObjectException() {
-		super(MESSAGE);
-	}
-}