diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java
index 749142e..6e88516 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/Feature.java
@@ -376,7 +376,7 @@
 				}	
 			
 				for (int i = 0; i < references.length; i++) {
-					setMonitorTaskName(subMonitor,msg+references[i].getIdentifier());
+					setMonitorTaskName(subMonitor,msg+" "+references[i].getIdentifier());
 					consumer.store(references[i], subMonitor);
 				}
 			} else {
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java
index d854a0d..a667187 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureContentProvider.java
@@ -7,6 +7,7 @@
 import java.io.*;
 import java.net.URL;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.update.core.model.*;
 import org.eclipse.update.internal.core.Policy;
 import org.eclipse.update.internal.core.UpdateManagerPlugin;
@@ -77,12 +78,13 @@
 	 * @param ref content reference
 	 * @param monitor progress monitor, can be <code>null</code>
 	 * @exception IOException
+	 * @exception CoreException
 	 * @since 2.0
 	 */
 	public ContentReference asLocalReference(
 		ContentReference ref,
 		InstallMonitor monitor)
-		throws IOException {
+		throws IOException,CoreException {
 
 		// check to see if this is already a local reference
 		if (ref.isLocalReference())
@@ -101,9 +103,9 @@
 		
 			// 
 			// download the referenced file into local temporary area
-			localFile = Utilities.createLocalFile(getWorkingDirectory(), key, null /*name*/);		
 			InputStream is = null;
 			OutputStream os = null;
+			localFile = Utilities.createLocalFile(getWorkingDirectory(), key, null /*name*/);			
 			try {
 				if (monitor != null) {
 					monitor.saveState();
@@ -118,7 +120,7 @@
 				Utilities.copy(is, os, monitor);
 			} catch (IOException e) {
 				Utilities.removeLocalFile(key);
-				throw e;
+				throw Utilities.newCoreException(Policy.bind("FeatureContentProvider.UnableToCreate",new Object[]{localFile}),e);
 			} finally {
 				if (is != null)
 					try {
@@ -145,11 +147,12 @@
 	 * 
 	 * @param ref content reference
 	 * @param monitor progress monitor, can be <code>null</code>
-	 * @exception IOException	  
+	 * @exception IOException	
+	 * @exception CoreException  
 	 * @since 2.0
 	 */
 	public File asLocalFile(ContentReference ref, InstallMonitor monitor)
-		throws IOException {
+		throws IOException,CoreException {
 		File file = ref.asFile();
 		if (file != null)
 			return file;
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
index 61d3b0e..917c383 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
@@ -7,12 +7,12 @@
 ContentReference.UnableToCreateInputStream= Unable to create an input stream for the reference {0}.
 ContentReference.UnableToReturnReferenceAsFile= Unable to return reference {0} as File.
 ContentReference.UnableToReturnReferenceAsURL= Unable to return reference {0} as URL.
-ContentReference.HttpNok= Error accessing remote reference {0} : Return code: {1}
+ContentReference.HttpNok= Error accessing remote reference {0}: Return code: {1}
 ContentReference.FileDoesNotExist=The file {0} does not exist on the filesystem.
 
 Feature.SiteAlreadySet= Internal Error: Site already set for the feature {0}.
 Feature.TaskInstallFeatureFiles= Installing feature files: 
-Feature.TaskInstallPluginFiles= Installing plug-in {0} files :
+Feature.TaskInstallPluginFiles= Installing plug-in {0} files:
 Feature.TaskInstallNonPluginsFiles= Installing non-plug-in files: 
 Feature.NoContentProvider= The Feature {0} does not have a Content Provider. Internal Error.
 Feature.NoFeatureContentConsumer= The Feature {0} does not have a Content Consumer. Internal Error.
@@ -22,6 +22,7 @@
 Feature.UnableToInitializeFeatureReference= Unable to initialize Feature Reference for versioned identifier {0}.
 
 FeatureContentProvider.Downloading= Downloading:
+FeatureContentProvider.UnableToCreate= Unable to create file \"{0}\"
 
 InstallHandler.unableToCreateHandler = Unable to create custom install handler for feature \"{0}\".
 InstallHandler.notFound = Custom install handler required by feature \"{0}\" was not found.
@@ -207,7 +208,7 @@
 SiteURLFactory.UnableToCreateURL= Internal Error. Unable to create a URL from {0}.
 SiteURLFactory.UnableToAccessSiteStream= Unable to access Site stream: {0}
 
-JarVerifier.Verify= Verifying : {0}
+JarVerifier.Verify= Verifying: {0}
 JarVerifier.UnableToFindEncryption= Unable to find algorithm to verify integrity of KeyStore {0}.
 JarVerifier.UnableToLoadCertificate= Unable to load one or multiples certificates in the KeyStore {0}.
 JarVerifier.UnableToFindProviderForKeystore= Unable to find provider for the KeyStore type {0}.
