diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/Site.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/Site.java
index 90a5043..0172321 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/Site.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/Site.java
@@ -11,6 +11,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.update.configuration.IConfiguredSite;
 import org.eclipse.update.core.model.*;
+import org.eclipse.update.internal.URLKey;
 import org.eclipse.update.internal.core.*;
 
 /**
@@ -62,7 +63,7 @@
 
 	private ISiteContentProvider siteContentProvider;
 	
-	Map featureCache = new HashMap();
+	private Map featureCache = new HashMap(); // key=URLKey value=IFeature
 	
 	/**
 	 * Constructor for Site
@@ -442,7 +443,8 @@
 	public IFeature createFeature(String type, URL url) throws CoreException {
 
 		// First check the cache
-		IFeature feature = (IFeature) featureCache.get(url);
+		URLKey key = new URLKey(url);
+		IFeature feature = (IFeature) featureCache.get(key);
 		if (feature != null) return feature;
 			
 		// Create a new one
@@ -455,7 +457,7 @@
 		feature = factory.createFeature(url, this);
 		if (feature != null) {
 			// Add the feature to the cache 
-			featureCache.put(url, feature);
+			featureCache.put(key, feature);
 		}
 		return feature;
 	}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/URLKey.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/URLKey.java
new file mode 100644
index 0000000..8e3c1d6
--- /dev/null
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/URLKey.java
@@ -0,0 +1,45 @@
+package org.eclipse.update.internal;
+/*
+ * (c) Copyright IBM Corp. 2000, 2002.
+ * All Rights Reserved.
+ */
+ 
+import java.net.URL;
+
+import org.eclipse.update.internal.core.UpdateManagerUtils;
+
+
+/**
+ * 
+ * 
+ */
+public class URLKey {
+
+	private URL url;
+	
+	/**
+	 * Constructor for URLKey.
+	 */
+	public URLKey(URL url) {
+		super();
+		this.url = url;
+	}
+
+	/**
+	 * @see java.lang.Object#equals(Object)
+	 */
+	public boolean equals(Object obj) {
+		if (obj instanceof URL)
+			return UpdateManagerUtils.sameURL(url,(URL)obj);
+		else 
+			return false;
+	}
+
+	/**
+	 * @see java.lang.Object#hashCode()
+	 */
+	public int hashCode() {
+		return url.hashCode();
+	}
+
+}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteLocal.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteLocal.java
index 975a525..a6cfe60 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteLocal.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteLocal.java
@@ -420,6 +420,7 @@
 				newConfiguration = new InstallConfiguration(configuration, newFile, name);
 				// set the same date in the installConfig
 				newConfiguration.setCreationDate(currentDate);
+				newConfiguration.setTimeline(configuration.getTimeline());
 			} catch (MalformedURLException e) {
 				throw Utilities.newCoreException(Policy.bind("SiteLocal.UnableToCreateURLFor") + newFileName, e);
 				//$NON-NLS-1$
