diff --git a/org.eclipse.debug.ui/plugin.xml b/org.eclipse.debug.ui/plugin.xml
index 0e85a94..dd5eb3f 100644
--- a/org.eclipse.debug.ui/plugin.xml
+++ b/org.eclipse.debug.ui/plugin.xml
@@ -32,7 +32,7 @@
    <extension-point id="launchConfigurationTypeImages" name="%LaunchConfigurationTypeImageExtensionName" schema="schema/launchConfigurationTypeImages.exsd"/>
    <extension-point id="launchGroups" name="%LaunchGroupsExtensionName" schema="schema/launchGroups.exsd"/>
    <extension-point id="launchShortcuts" name="%LaunchShortcutsName" schema="schema/launchShortcuts.exsd"/>
-	<extension-point id="launchConfigurationVariables" name="%LaunchConfigurationVariablesName"/>
+   <extension-point id="launchConfigurationVariables" name="%LaunchConfigurationVariablesName"/>
 	
 <!-- Extensions -->
    <extension
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/ExternalToolVariableRegistry.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/ExternalToolVariableRegistry.java
index a3de699..c36b828 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/ExternalToolVariableRegistry.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/ExternalToolVariableRegistry.java
@@ -58,15 +58,20 @@
 	 * The extension point id to read the variables from
 	 */
 	protected String extensionPointId;
+	/**
+	 * The plugin id to read the extension point from
+	 */
+	protected String pluginId;
 	
 	public ExternalToolVariableRegistry() {
-		this(IVariableConstants.EXTENSION_POINT_TOOL_VARIABLES);
+		this(DebugUIPlugin.getUniqueIdentifier(), IVariableConstants.EXTENSION_POINT_TOOL_VARIABLES);
 	}
 	
 	/**
 	 * Creates a new registry and loads the variables.
 	 */
-	protected ExternalToolVariableRegistry(String extensionPointId) {
+	protected ExternalToolVariableRegistry(String pluginId, String extensionPointId) {
+		this.pluginId= pluginId;
 		this.extensionPointId = extensionPointId;
 		loadVariables();
 	}
@@ -109,7 +114,7 @@
 	private void loadVariables() {
 		variables = new TreeMap();
 		IPluginRegistry registry = Platform.getPluginRegistry();
-		IExtensionPoint point = registry.getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), extensionPointId);
+		IExtensionPoint point = registry.getExtensionPoint(pluginId, extensionPointId);
 		if (point != null) {
 			IExtension[] extensions = point.getExtensions();
 			for (int i = 0; i < extensions.length; i++) {
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/IVariableConstants.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/IVariableConstants.java
index b332b0b..3114225 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/IVariableConstants.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/variables/IVariableConstants.java
@@ -100,6 +100,6 @@
 	 * Extension point to declare external tool variables. 
 	 * (value<code>toolVariables</code>).
 	 */
-	public static final String EXTENSION_POINT_TOOL_VARIABLES = "toolVariables"; //$NON-NLS-1$
+	public static final String EXTENSION_POINT_TOOL_VARIABLES = "launchConfigurationVariables"; //$NON-NLS-1$
 	
 }
\ No newline at end of file
diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/RefreshScopeVariableRegistry.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/RefreshScopeVariableRegistry.java
index 5d297c8..bdd6e44 100644
--- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/RefreshScopeVariableRegistry.java
+++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/RefreshScopeVariableRegistry.java
@@ -22,7 +22,7 @@
 	 * Creates the registry and loads the variables.
 	 */
 	public RefreshScopeVariableRegistry() {
-		super(IExternalToolConstants.EXTENSION_POINT_REFRESH_VARIABLES);
+		super(IExternalToolConstants.PLUGIN_ID, IExternalToolConstants.EXTENSION_POINT_REFRESH_VARIABLES);
 	}
 	
 }
