diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java
index 8153779..6c608c7 100644
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java
+++ b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java
@@ -28,9 +28,12 @@
 
 	public static final String PROP_INSTALL_AREA = "osgi.install.area"; //$NON-NLS-1$
 	public static final String PROP_CONFIG_AREA = "osgi.configuration.area"; //$NON-NLS-1$
+	public static final String PROP_CONFIG_AREA_DEFAULT = "osgi.configuration.area.default"; //$NON-NLS-1$
 	public static final String PROP_SHARED_CONFIG_AREA = "osgi.sharedConfiguration.area"; //$NON-NLS-1$
 	public static final String PROP_INSTANCE_AREA = "osgi.instance.area"; //$NON-NLS-1$
+	public static final String PROP_INSTANCE_AREA_DEFAULT = "osgi.instance.area.default"; //$NON-NLS-1$
 	public static final String PROP_USER_AREA = "osgi.user.area"; //$NON-NLS-1$
+	public static final String PROP_USER_AREA_DEFAULT = "osgi.user.area.default"; //$NON-NLS-1$
 	public static final String PROP_MANIFEST_CACHE = "osgi.manifest.cache"; //$NON-NLS-1$
 	public static final String PROP_USER_HOME = "user.home"; //$NON-NLS-1$
 	public static final String PROP_USER_DIR = "user.dir"; //$NON-NLS-1$
@@ -103,16 +106,25 @@
 	}
 
 	public static void initializeLocations() {
-		URL defaultLocation = buildURL(System.getProperty(PROP_USER_HOME), true);
-		userLocation = buildLocation(PROP_USER_AREA, defaultLocation, "user", false); //$NON-NLS-1$
+		Location temp = buildLocation(PROP_USER_AREA_DEFAULT, null, "", false); //$NON-NLS-1$
+		URL defaultLocation = temp == null ? null : temp.getURL();
+		if (defaultLocation == null)
+			defaultLocation = buildURL(new File(System.getProperty(PROP_USER_HOME), "user").getAbsolutePath(), true); //$NON-NLS-1$
+		userLocation = buildLocation(PROP_USER_AREA, defaultLocation, "", false); //$NON-NLS-1$
 
-		defaultLocation = buildURL(new File(System.getProperty(PROP_USER_DIR), "workspace").getAbsolutePath(), true); //$NON-NLS-1$
-		instanceLocation = buildLocation(PROP_INSTANCE_AREA, defaultLocation, "workspace", false); //$NON-NLS-1$
+		temp = buildLocation(PROP_INSTANCE_AREA_DEFAULT, null, "", false); //$NON-NLS-1$
+		defaultLocation = temp == null ? null : temp.getURL();
+		if (defaultLocation == null)
+			defaultLocation = buildURL(new File(System.getProperty(PROP_USER_DIR), "workspace").getAbsolutePath(), true); //$NON-NLS-1$
+		instanceLocation = buildLocation(PROP_INSTANCE_AREA, defaultLocation, "", false); //$NON-NLS-1$
 
 		mungeConfigurationLocation();
 		// compute a default but it is very unlikely to be used since main will have computed everything
-		defaultLocation = buildURL(computeDefaultConfigurationLocation(), true);
-		configurationLocation = buildLocation(PROP_CONFIG_AREA, defaultLocation, CONFIG_DIR, false);
+		temp = buildLocation(PROP_CONFIG_AREA_DEFAULT, null, "", false); //$NON-NLS-1$
+		defaultLocation = temp == null ? null : temp.getURL();
+		if (defaultLocation == null)
+			defaultLocation = buildURL(computeDefaultConfigurationLocation(), true);
+		configurationLocation = buildLocation(PROP_CONFIG_AREA, defaultLocation, "", false); //$NON-NLS-1$
 		// get the parent location based on the system property. This will have been set on the 
 		// way in either by the caller/user or by main.  There will be no parent location if we are not 
 		// cascaded.
@@ -140,10 +152,13 @@
 		else if (location.equalsIgnoreCase(NO_DEFAULT))
 			result = new BasicLocation(property, null, readOnly);
 		else {
-			if (location.equalsIgnoreCase(USER_HOME))
-				location = computeDefaultUserAreaLocation(userDefaultAppendage);
-			if (location.equalsIgnoreCase(USER_DIR))
-				location = new File(System.getProperty(PROP_USER_DIR), userDefaultAppendage).getAbsolutePath();
+			if (location.startsWith(USER_HOME)) {
+				String base = substituteVar(location, USER_HOME, PROP_USER_HOME);
+				location = new File(base, userDefaultAppendage).getAbsolutePath();
+			} else if (location.startsWith(USER_DIR)) {
+				String base = substituteVar(location, USER_DIR, PROP_USER_DIR);
+				location = new File(base, userDefaultAppendage).getAbsolutePath();
+			}
 			URL url = buildURL(location, true);
 			if (url != null) {
 				result = new BasicLocation(property, null, readOnly);
@@ -153,6 +168,11 @@
 		return result;
 	}
 
+	private static String substituteVar(String source, String var, String prop) {
+		String value = System.getProperty(prop, "");
+		return value + source.substring(var.length());
+	}
+
 	private static void initializeDerivedConfigurationLocations() {
 		if (System.getProperty(PROP_MANIFEST_CACHE) == null)
 			System.getProperties().put(PROP_MANIFEST_CACHE, getConfigurationFile(MANIFESTS_DIR).getAbsolutePath());
