*** empty log message ***
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleManifest.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleManifest.java
index 78ec25c..bf07ec8 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleManifest.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/BundleManifest.java
@@ -82,7 +82,7 @@
 			// plugin version
 			String version = a.getValue(Constants.BUNDLE_VERSION);
 			if (version == null) {
-				Utils.log(NLS.bind("BundleManifest.noVersion", (new String[] { Constants.BUNDLE_VERSION, id })));
+				Utils.log(NLS.bind(Messages.BundleManifest_noVersion, (new String[] { Constants.BUNDLE_VERSION, id })));
 				return;
 			}
 			String hostPlugin = a.getValue(Constants.FRAGMENT_HOST);
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java
index be22bac..f1ac2a4 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationActivator.java
@@ -108,7 +108,7 @@
 		configurationFactorySR = context.registerService(IPlatformConfigurationFactory.class.getName(), new PlatformConfigurationFactory(), null);
 		configuration = getPlatformConfiguration(getInstallURL(), configLocation);
 		if (configuration == null)
-			throw Utils.newCoreException(NLS.bind("ConfigurationActivator.createConfig", (new String[] { configLocation.getURL().toExternalForm() })), null); //$NON-NLS-1$
+			throw Utils.newCoreException(NLS.bind(Messages.ConfigurationActivator_createConfig, (new String[] { configLocation.getURL().toExternalForm() })), null);
 
 		DataInputStream stream = null;
 		try {
@@ -176,7 +176,7 @@
 					toRefresh.add(bundlesToUninstall[i]);					
 					bundlesToUninstall[i].uninstall();
 				} catch (Exception e) {
-					Utils.log(NLS.bind("ConfigurationActivator.uninstallBundle", (new String[] { bundlesToUninstall[i].getLocation() }))); //$NON-NLS-1$
+					Utils.log(NLS.bind(Messages.ConfigurationActivator_uninstallBundle, (new String[] { bundlesToUninstall[i].getLocation() })));
 				}
 			}
 			
@@ -197,7 +197,7 @@
 				
 				} catch (Exception e) {
 					if (!Utils.isAutomaticallyStartedBundle(bundlesToInstall[i]))
-						Utils.log(NLS.bind("ConfigurationActivator.installBundle", (new String[] { bundlesToInstall[i] })) + "   " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
+						Utils.log(NLS.bind(Messages.ConfigurationActivator_installBundle, (new String[] { bundlesToInstall[i] })) + "   " + e.getMessage()); //$NON-NLS-1$
 				}
 			}
 			context.ungetService(reference);
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java
index d5edf25..13fad34 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/ConfigurationParser.java
@@ -118,9 +118,9 @@
 			}
 
 		} catch (MalformedURLException e) {
-			throw new SAXException(NLS.bind("InstalledSiteParser.UnableToCreateURL", (new String[] { e.getMessage() })), e); //$NON-NLS-1$
+			throw new SAXException(NLS.bind(Messages.InstalledSiteParser_UnableToCreateURL, (new String[] { e.getMessage() })), e);
 		} catch (CoreException e) {
-			throw new SAXException(NLS.bind("InstalledSiteParser.InternalError", (new String[] { e.toString() })), e); //$NON-NLS-1$
+			throw new SAXException(NLS.bind(Messages.InstalledSiteParser_ErrorParsingFile, (new String[] { e.toString() })), e);
 		}
 	}
 
@@ -284,7 +284,7 @@
 				config = new Configuration(new Date(time));
 			} catch (NumberFormatException e1) {
 				time = new Date().getTime();
-				Utils.log(NLS.bind("InstalledSiteParser.date", (new String[] { date }))); //$NON-NLS-1$
+				Utils.log(NLS.bind(Messages.InstalledSiteParser_date, (new String[] { date })));
 				config = new Configuration(); // constructed with current date
 			}
 		}
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FeatureParser.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FeatureParser.java
index d73d522..460f449 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FeatureParser.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FeatureParser.java
@@ -101,7 +101,7 @@
 
 		if (id == null || id.trim().equals("") //$NON-NLS-1$
 		|| ver == null || ver.trim().equals("")) { //$NON-NLS-1$
-			System.out.println(NLS.bind("FeatureParser.IdOrVersionInvalid", (new String[] { id, ver}))); //$NON-NLS-1$
+			System.out.println(NLS.bind(Messages.FeatureParser_IdOrVersionInvalid, (new String[] { id, ver})));
 		} else {
 //			String label = attributes.getValue("label"); //$NON-NLS-1$
 //			String provider = attributes.getValue("provider-name"); //$NON-NLS-1$
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FullFeatureParser.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FullFeatureParser.java
index d328764..d991b00 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FullFeatureParser.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/FullFeatureParser.java
@@ -101,7 +101,7 @@
 
 		if (id == null || id.trim().equals("") //$NON-NLS-1$
 		|| ver == null || ver.trim().equals("")) { //$NON-NLS-1$
-			System.out.println(NLS.bind("FeatureParser.IdOrVersionInvalid", (new String[] { id, ver}))); //$NON-NLS-1$
+			System.out.println(NLS.bind(Messages.FeatureParser_IdOrVersionInvalid, (new String[] { id, ver})));
 		} else {
 //			String label = attributes.getValue("label"); //$NON-NLS-1$
 //			String provider = attributes.getValue("provider-name"); //$NON-NLS-1$
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
index ecd0683..27e1b70 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
@@ -516,7 +516,7 @@
 			} catch (CoreException e) {
 				Utils.log(e.getMessage());
 				Utils.log(e.getStatus());
-				throw new IOException(NLS.bind("cfig.unableToSave", (new String[] { url.toExternalForm() }))); //$NON-NLS-1$
+				throw new IOException(NLS.bind(Messages.cfig_unableToSave, (new String[] { url.toExternalForm() })));
 			} finally {
 				os.close();
 			}
@@ -589,7 +589,7 @@
 				changeStamp = config.getDate().getTime();
 				config.setDirty(false);
 			} catch (CoreException e) {
-				throw new IOException(NLS.bind("cfig.unableToSave", (new String[] { cfigTmp.getAbsolutePath() }))); //$NON-NLS-1$
+				throw new IOException(NLS.bind(Messages.cfig_unableToSave, (new String[] { cfigTmp.getAbsolutePath() })));
 			} finally {
 				if (os != null)
 					try {
@@ -610,7 +610,7 @@
 				// case we will restart with the previous state.
 				Utils.log(Messages.PlatformConfiguration_cannotRenameTempFile); 
 				
-				throw new IOException(NLS.bind("cfig.unableToSave", (new String[] { cfigTmp.getAbsolutePath() }))); //$NON-NLS-1$
+				throw new IOException(NLS.bind(Messages.cfig_unableToSave, (new String[] { cfigTmp.getAbsolutePath() })));
 			}
 		}
 	}
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginEntry.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginEntry.java
index 068fe39..dcc0189 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginEntry.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginEntry.java
@@ -126,7 +126,7 @@
 				versionId = new VersionedIdentifier(id, ver);
 				return versionId;
 			} catch (Exception e) {
-				Utils.log(NLS.bind("PluginEntry.versionError", (new String[] { id, ver }))); //$NON-NLS-1$ //$NON-NLS-2$
+				Utils.log(NLS.bind(Messages.PluginEntry_versionError, (new String[] { id, ver })));
 			}
 		}
 
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginParser.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginParser.java
index 03e3cac..456dd0e 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginParser.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginParser.java
@@ -115,11 +115,11 @@
 		String version = attributes.getValue("version"); //$NON-NLS-1$
 		if (id == null || id.trim().length() == 0) {
 			id = "_no_id_"; //$NON-NLS-1$
-            Utils.log(NLS.bind("PluginParser.plugin_no_id", (new String[] { location })));
+            Utils.log(NLS.bind(Messages.PluginParser_plugin_no_id, (new String[] { location })));
         }
         if (version == null || version.trim().length() == 0) {
             version = "0.0.0"; //$NON-NLS-1$
-            Utils.log(NLS.bind("PluginParser.plugin_no_version", (new String[] { location })));
+            Utils.log(NLS.bind(Messages.PluginParser_plugin_no_version, (new String[] { location })));
         }
 		pluginEntry.setVersionedIdentifier(new VersionedIdentifier(id, version));
 		
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/SiteEntry.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/SiteEntry.java
index 8274aad..36f17a7 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/SiteEntry.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/SiteEntry.java
@@ -277,7 +277,7 @@
 						return false;
 					boolean valid = f.isDirectory() && (new File(f,FEATURE_XML).exists());
 					if (!valid)
-						Utils.log(NLS.bind("SiteEntry.cannotFindFeatureInDir", (new String[] { f.getAbsolutePath() }))); //$NON-NLS-1$
+						Utils.log(NLS.bind(Messages.SiteEntry_cannotFindFeatureInDir, (new String[] { f.getAbsolutePath() })));
 					return valid;
 				}
 			});
@@ -293,7 +293,7 @@
 					if (featureEntry != null)
 						addFeatureEntry(featureEntry);
 				} catch (MalformedURLException e) {
-					Utils.log(NLS.bind("InstalledSiteParser.UnableToCreateURLForFile", (new String[] { featuresDir.getAbsolutePath() })));//$NON-NLS-1$
+					Utils.log(NLS.bind(Messages.InstalledSiteParser_UnableToCreateURLForFile, (new String[] { featuresDir.getAbsolutePath() })));
 				}
 			}
 		}
@@ -374,10 +374,10 @@
 			}
 		} catch (IOException e5) {
 			String pluginFileString2 = pluginURL + "!" + entryName; //$NON-NLS-1$
-			Utils.log(NLS.bind("InstalledSiteParser.ErrorAccessing", (new String[] { pluginFileString2 }))); //$NON-NLS-1$
+			Utils.log(NLS.bind(Messages.InstalledSiteParser_ErrorAccessing, (new String[] { pluginFileString2 })));
 		} catch (SAXException e3) {
 			String pluginFileString1 = pluginURL + "!" + entryName; //$NON-NLS-1$
-			Utils.log(NLS.bind("InstalledSiteParser.ErrorParsingFile", (new String[] { pluginFileString1 }))); //$NON-NLS-1$
+			Utils.log(NLS.bind(Messages.InstalledSiteParser_ErrorParsingFile, (new String[] { pluginFileString1 })));
 		} finally {
 			if (bundleManifestIn != null) {
 				try {
@@ -442,13 +442,13 @@
 		} catch (IOException e) {
 			String pluginFileString = pluginFile.getAbsolutePath();
 			if (ConfigurationActivator.DEBUG)
-				Utils.log(Utils.newStatus(NLS.bind("InstalledSiteParser.ErrorParsingFile", (new String[] { pluginFileString })), e));//$NON-NLS-1$
+				Utils.log(Utils.newStatus(NLS.bind(Messages.InstalledSiteParser_ErrorParsingFile, (new String[] { pluginFileString })), e));
 			else
-				Utils.log(NLS.bind("InstalledSiteParser.ErrorAccessing", (new String[] { pluginFileString }))); //$NON-NLS-1$
+				Utils.log(NLS.bind(Messages.InstalledSiteParser_ErrorAccessing, (new String[] { pluginFileString })));
 		} catch (SAXException e) {
 			String pluginFileString = pluginFile.getAbsolutePath();
-			Utils.log(NLS.bind("InstalledSiteParser.ErrorParsingFile", (new String[] { pluginFileString }))); //$NON-NLS-1$
-		}
+			Utils.log(NLS.bind(Messages.InstalledSiteParser_ErrorParsingFile, (new String[] { pluginFileString })));
+        }
 	}
 
 	/**
@@ -511,7 +511,7 @@
 			return pluginsChangeStamp;
 		
 		if (!PlatformConfiguration.supportsDetection(resolvedURL)) {
-			Utils.log(NLS.bind("SiteEntry.computePluginStamp", (new String[] { resolvedURL.toExternalForm() }))); //$NON-NLS-1$
+			Utils.log(NLS.bind(Messages.SiteEntry_computePluginStamp, (new String[] { resolvedURL.toExternalForm() })));
 			return 0;
 		}
 
@@ -519,7 +519,7 @@
 		File root = new File(resolvedURL.getFile().replace('/', File.separatorChar));
 		File pluginsDir = new File(root, PLUGINS);
 		if (!pluginsDir.exists() || !pluginsDir.isDirectory()) {
-			Utils.log(NLS.bind("SiteEntry.pluginsDir", (new String[] { pluginsDir.getAbsolutePath() }))); //$NON-NLS-1$
+			Utils.log(NLS.bind(Messages.SiteEntry_pluginsDir, (new String[] { pluginsDir.getAbsolutePath() })));
 			return 0;
 		}
 
@@ -601,7 +601,7 @@
 				// log error if same feature version/id but a different url
 				if (feature instanceof FeatureEntry && existing instanceof FeatureEntry &&
 						!((FeatureEntry)feature).getURL().equals(((FeatureEntry)existing).getURL()))
-				Utils.log(NLS.bind("SiteEntry.duplicateFeature", (new String[] { getURL().toExternalForm(), existing.getFeatureIdentifier() }))); //$NON-NLS-1$ //$NON-NLS-2$
+				Utils.log(NLS.bind(Messages.SiteEntry_duplicateFeature, (new String[] { getURL().toExternalForm(), existing.getFeatureIdentifier() })));
 			}
 		} else {
 			featureEntries.put(feature.getFeatureIdentifier(), feature);
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/branding/IniFileReader.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/branding/IniFileReader.java
index 92904ef..539d7bf 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/branding/IniFileReader.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/branding/IniFileReader.java
@@ -17,6 +17,7 @@
 
 import org.eclipse.core.runtime.*;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.update.internal.configurator.Messages;
 import org.osgi.framework.*;
 
 /**
@@ -81,7 +82,7 @@
 		bundle = Platform.getBundle(pluginId);
 		if (bundle == null || bundle.getState() == Bundle.UNINSTALLED || bundle.getState() == Bundle.INSTALLED) {
 			bundle = null; // make it null for other test down the road
-			String message = NLS.bind("IniFileReader.MissingDesc", (new String[] { featureId }));  //$NON-NLS-1$
+			String message = NLS.bind(Messages.IniFileReader_MissingDesc, (new String[] { featureId }));
 			return new Status(IStatus.ERROR, PID, 0, message, null);
 		}
 
@@ -96,7 +97,7 @@
 			ioe = e;
 		}
 		if (iniURL == null) {
-			String message = NLS.bind("IniFileReader.OpenINIError", (new String[] { iniFilename }));  //$NON-NLS-1$
+			String message = NLS.bind(Messages.IniFileReader_OpenINIError, (new String[] { iniFilename }));
 			return new Status(IStatus.ERROR, PID, 0, message, ioe);
 		}
 		
@@ -108,7 +109,7 @@
 				if (propertiesURL != null)
 					propertiesURL = Platform.resolve(propertiesURL);
 			} catch (IOException e) {
-				String message = NLS.bind("IniFileReader.OpenPropError", (new String[] { propertiesFilename })); //$NON-NLS-1$
+				String message = NLS.bind(Messages.IniFileReader_OpenPropError, (new String[] { propertiesFilename }));
 				return new Status(IStatus.ERROR, PID, 0, message, e);
 			}
 		}
@@ -121,7 +122,7 @@
 				if (mappingsURL != null)
 					mappingsURL = Platform.resolve(mappingsURL);
 			} catch (IOException e) {
-				String message = NLS.bind("IniFileReader.OpenMapError", (new String[] { mappingsFilename })); //$NON-NLS-1$
+				String message = NLS.bind(Messages.IniFileReader_OpenMapError, (new String[] { mappingsFilename }));
 				return new Status(IStatus.ERROR, PID, 0, message, e);
 			}
 		}
@@ -311,7 +312,7 @@
 			ini.load(is);
 		} catch (IOException e) {
 			ini = null;
-			String message = NLS.bind("IniFileReader.ReadIniError", (new String[] { iniURL.toExternalForm() })); //$NON-NLS-1$
+			String message = NLS.bind(Messages.IniFileReader_ReadIniError, (new String[] { iniURL.toExternalForm() }));
 			return new Status(IStatus.ERROR, PID, 0, message, e);
 		} finally {
 			try {
@@ -328,7 +329,7 @@
 				properties = new PropertyResourceBundle(is);
 			} catch (IOException e) {
 				properties = null;
-				String message = NLS.bind("IniFileReader.ReadPropError", (new String[] { propertiesURL.toExternalForm() })); //$NON-NLS-1$
+				String message = NLS.bind(Messages.IniFileReader_ReadPropError, (new String[] { propertiesURL.toExternalForm() }));
 				return new Status(IStatus.ERROR, PID, 0, message, e);
 			} finally {
 				try {
@@ -347,7 +348,7 @@
 				bundle = new PropertyResourceBundle(is);
 			} catch (IOException e) {
 				bundle = null;
-				String message = NLS.bind("IniFileReader.ReadMapError", (new String[] { mappingsURL.toExternalForm() })); //$NON-NLS-1$
+				String message = NLS.bind(Messages.IniFileReader_ReadMapError, (new String[] { mappingsURL.toExternalForm() }));
 				return new Status(IStatus.ERROR, PID, 0, message, e);
 			} finally {
 				try {
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java
index b34fde9..a82bae5 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/BaseSiteFactory.java
@@ -70,7 +70,7 @@
 		} catch (MissingResourceException e) {

 			UpdateCore.warn(e.getLocalizedMessage() + ":" + url.toExternalForm()); //$NON-NLS-1$

 		} catch (MalformedURLException e) {

-			UpdateCore.warn(NLS.bind("BaseSiteFactory.CannotRetriveParentDirectory", (new String[] { url.toExternalForm() })));  //$NON-NLS-1$

+			UpdateCore.warn(NLS.bind(Messages.BaseSiteFactory_CannotRetriveParentDirectory, (new String[] { url.toExternalForm() })));

 		}

 

 		return bundle;

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java
index 880db8a..bd824a7 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/ContentReference.java
@@ -147,7 +147,7 @@
 			length=response.getContentLength();

 			return is;

 		} else

-			throw new IOException(NLS.bind("ContentReference.UnableToCreateInputStream", (new String[] { this.toString() }))); //$NON-NLS-1$

+			throw new IOException(NLS.bind(Messages.ContentReference_UnableToCreateInputStream, (new String[] { this.toString() })));

 	}

 	/**

 	 * Creates an input stream for the reference.

@@ -167,7 +167,7 @@
 			length=offset + response.getContentLength();

 			return is;

 		} else

-			throw new IOException(NLS.bind("ContentReference.UnableToCreateInputStream", (new String[] { this.toString() }))); //$NON-NLS-1$

+			throw new IOException(NLS.bind(Messages.ContentReference_UnableToCreateInputStream, (new String[] { this.toString() })));

 	}

 	

 	/**

@@ -234,10 +234,10 @@
 			if (result.exists())

 				return result;

 			else 

-				throw new IOException(NLS.bind("ContentReference.FileDoesNotExist", (new String[] { this.toString() }))); //$NON-NLS-1$ 			

+				throw new IOException(NLS.bind(Messages.ContentReference_FileDoesNotExist, (new String[] { this.toString() }))); 			

 		}

 

-		throw new IOException(NLS.bind("ContentReference.UnableToReturnReferenceAsFile", (new String[] { this.toString() }))); //$NON-NLS-1$ 

+		throw new IOException(NLS.bind(Messages.ContentReference_UnableToReturnReferenceAsFile, (new String[] { this.toString() }))); 

 	}

 

 	/**

@@ -254,7 +254,7 @@
 		if (file != null)

 			return file.toURL();

 

-		throw new IOException(NLS.bind("ContentReference.UnableToReturnReferenceAsURL", (new String[] { this.toString() }))); //$NON-NLS-1$

+		throw new IOException(NLS.bind(Messages.ContentReference_UnableToReturnReferenceAsURL, (new String[] { this.toString() })));

 	}

 

 	/**

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 ae45349..2ff358f 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
@@ -429,7 +429,7 @@
 					pluginsToInstall[i].getVersionedIdentifier();

 				String pluginID =

 					(pluginVerId == null) ? "" : pluginVerId.getIdentifier(); //$NON-NLS-1$

-				msg = NLS.bind("Feature.TaskInstallPluginFiles", (new String[] { pluginID })); //$NON-NLS-1$

+				msg = NLS.bind(Messages.Feature_TaskInstallPluginFiles, (new String[] { pluginID }));

 

 				for (int j = 0; j < references.length; j++) {

 					setMonitorTaskName(

@@ -523,13 +523,13 @@
 			// and an error occured during abort

 			if (originalException != null) {

 				throw Utilities.newCoreException(

-					NLS.bind("InstallHandler.error", (new String[] { this.getLabel() })), //$NON-NLS-1$

+					NLS.bind(Messages.InstallHandler_error, (new String[] { this.getLabel() })),

 					originalException);

 			}

 

 			if (newException != null)

 				throw Utilities.newCoreException(

-					NLS.bind("InstallHandler.error", (new String[] { this.getLabel() })), //$NON-NLS-1$

+					NLS.bind(Messages.InstallHandler_error, (new String[] { this.getLabel() })),

 					newException);

 

 			if (abortedException != null) {

@@ -727,7 +727,7 @@
 		throws CoreException {

 		if (featureContentProvider == null) {

 			throw Utilities.newCoreException(

-				NLS.bind("Feature.NoContentProvider", (new String[] { getVersionedIdentifier().toString() })),

+				NLS.bind(Messages.Feature_NoContentProvider, (new String[] { getVersionedIdentifier().toString() })),

 				null);	

 		}

 		return this.featureContentProvider;

@@ -755,7 +755,7 @@
 			String featureURLString =

 				(getURL() != null) ? getURL().toExternalForm() : ""; //$NON-NLS-1$

 			throw Utilities.newCoreException(

-				NLS.bind("Feature.SiteAlreadySet", (new String[] { featureURLString })), //$NON-NLS-1$

+				NLS.bind(Messages.Feature_SiteAlreadySet, (new String[] { featureURLString })),

 				null);

 		}

 		this.site = site;

@@ -785,7 +785,7 @@
 				: getURL().toExternalForm();

 

 		String verString =

-			NLS.bind("Feature.FeatureVersionToString", (new String[] { URLString, getVersionedIdentifier().toString() }));

+			NLS.bind(Messages.Feature_FeatureVersionToString, (new String[] { URLString, getVersionedIdentifier().toString() }));

 		String label = getLabel() == null ? "" : getLabel(); //$NON-NLS-1$

 		return verString + " [" + label + "]"; //$NON-NLS-1$ //$NON-NLS-2$

 	}

@@ -884,7 +884,7 @@
 			return newRef;

 		} catch (Exception e) {

 			throw Utilities.newCoreException(

-				NLS.bind("Feature.UnableToInitializeFeatureReference", (new String[] { identifier.toString() })),

+				NLS.bind(Messages.Feature_UnableToInitializeFeatureReference, (new String[] { identifier.toString() })),

 				e);

 		}

 	}

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 693c8a8..e7f32a4 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
@@ -251,7 +251,7 @@
 						inputLength = ref.getInputSize(); 
 					} catch (IOException e) {
 						throw Utilities.newCoreException(
-							NLS.bind("FeatureContentProvider.UnableToRetrieve", (new Object[] { ref })),
+							NLS.bind(Messages.FeatureContentProvider_UnableToRetrieve, (new Object[] { ref })),
 							e);
 					}
 
@@ -261,7 +261,7 @@
 								new FileOutputStream(localFile));
 					} catch (FileNotFoundException e) {
 						throw Utilities.newCoreException(
-							NLS.bind("FeatureContentProvider.UnableToCreate", (new Object[] { localFile })),
+							NLS.bind(Messages.FeatureContentProvider_UnableToCreate, (new Object[] { localFile })),
 							e);
 					}
 				}
@@ -289,7 +289,7 @@
 						throw new InstallAbortedException(msg, null);
 					} else {
 						throw new FeatureDownloadException(
-							NLS.bind("FeatureContentProvider.ExceptionDownloading", (new Object[] { getURL().toExternalForm()})),
+							NLS.bind(Messages.FeatureContentProvider_ExceptionDownloading, (new Object[] { getURL().toExternalForm()})),
 							new IOException());
 					}
 				} else {
@@ -310,7 +310,7 @@
 				Utilities.mapLocalFile(key, localFile);
 			} catch (ClassCastException e) {
 				throw Utilities.newCoreException(
-					NLS.bind("FeatureContentProvider.UnableToCreate", (new Object[] { localFile })),
+					NLS.bind(Messages.FeatureContentProvider_UnableToCreate, (new Object[] { localFile })),
 					e);
 			} finally {
 				//Do not close IS if user cancel,
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java
index 674d838..1f390ce 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/FeatureReference.java
@@ -145,7 +145,7 @@
 			try {
 				resolve(url, null);
 			} catch (MalformedURLException e) {
-				throw Utilities.newCoreException(NLS.bind("FeatureReference.UnableToResolveURL", (new String[] { url.toExternalForm() })), e);	//$NON-NLS-1$
+				throw Utilities.newCoreException(NLS.bind(Messages.FeatureReference_UnableToResolveURL, (new String[] { url.toExternalForm() })), e);
 			}
 		}
 	}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java
index c8764c4..d878a02 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/IncludedFeatureReference.java
@@ -136,7 +136,7 @@
 	 */
 	public IFeature getFeature(IProgressMonitor monitor) throws CoreException {
 		if (isUninstalled())
-			throw new CoreException(new Status(IStatus.ERROR, UpdateCore.getPlugin().getBundle().getSymbolicName(), IStatus.OK, NLS.bind("IncludedFeatureReference.featureUninstalled", (new String[] { getFeatureIdentifier() })), null));
+			throw new CoreException(new Status(IStatus.ERROR, UpdateCore.getPlugin().getBundle().getSymbolicName(), IStatus.OK, NLS.bind(Messages.IncludedFeatureReference_featureUninstalled, (new String[] { getFeatureIdentifier() })), null));
 		else
 			return super.getFeature(monitor);
 	}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java
index c2b7f6c..4ffc557 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/InstallMonitor.java
@@ -14,6 +14,7 @@
 

 import org.eclipse.core.runtime.*;

 import org.eclipse.osgi.util.NLS;

+import org.eclipse.update.internal.core.Messages;

 

 /**

  * Install progress monitor

@@ -258,8 +259,8 @@
 			long totalK = totalCopyCount / 1024;

 			String msg =

 				(totalK <= 0)

-					? NLS.bind("InstallMonitor.DownloadSize", (new String[] { Long.toString(countK) })) //$NON-NLS-1$

-					: NLS.bind("InstallMonitor.DownloadSizeLong", (new String[] { Long.toString(countK), Long.toString(totalK) }));

+					? NLS.bind(Messages.InstallMonitor_DownloadSize, (new String[] { Long.toString(countK) }))

+					: NLS.bind(Messages.InstallMonitor_DownloadSizeLong, (new String[] { Long.toString(countK), Long.toString(totalK) }));

 			monitor.subTask(subTaskString + msg);

 		}

 	}

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 78134d9..aa21b60 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
@@ -162,7 +162,7 @@
 		//DEBUG:

 		if (!found) {

 			String URLString = (this.getURL() != null) ? this.getURL().toExternalForm() : "<no site url>"; //$NON-NLS-1$

-			UpdateCore.warn(NLS.bind("Site.CannotFindCategory", (new String[] { key, URLString }))); //$NON-NLS-1$ //$NON-NLS-2$

+			UpdateCore.warn(NLS.bind(Messages.Site_CannotFindCategory, (new String[] { key, URLString })));

 			if (getCategoryModels().length <= 0)

 				UpdateCore.warn(Messages.Site_NoCategories);	

 		}

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java
index 750a047..8e0c6a5 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/SiteContentProvider.java
@@ -14,6 +14,7 @@
 

 import org.eclipse.core.runtime.*;

 import org.eclipse.osgi.util.NLS;

+import org.eclipse.update.internal.core.Messages;

 

 /**

  * Base site content provider

@@ -58,7 +59,7 @@
 			return new URL(getURL(), archiveID);

 		} catch (MalformedURLException e) {

 			throw Utilities.newCoreException(

-					NLS.bind("SiteContentProvider.ErrorCreatingURLForArchiveID", (new String[] { archiveID, getURL().toExternalForm() })),

+					NLS.bind(Messages.SiteContentProvider_ErrorCreatingURLForArchiveID, (new String[] { archiveID, getURL().toExternalForm() })),

 					e);

 		}

 	}

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java
index ad0e4bb..72754bf 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/VersionedIdentifier.java
@@ -46,7 +46,7 @@
 	public VersionedIdentifier(String id, String versionName) {

 		if (id == null	|| (id = id.trim()).equals("")) //$NON-NLS-1$

 			throw new IllegalArgumentException(

-				NLS.bind("VersionedIdentifier.IdOrVersionNull", (new String[] { id, versionName }))); //$NON-NLS-1$

+				NLS.bind(Messages.VersionedIdentifier_IdOrVersionNull, (new String[] { id, versionName })));

 		this.id = id;

 		// 15707

 		if (versionName != null){

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java
index 5e8a17f..990171b 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultFeatureParser.java
@@ -153,7 +153,7 @@
 				while (iter.hasNext()) {

 					stack = "\r\n" + iter.next().toString() + stack; //$NON-NLS-1$

 				}

-				throw new SAXException(NLS.bind("DefaultFeatureParser.WrongParsingStack", (new String[] { stack })));//$NON-NLS-1$

+				throw new SAXException(NLS.bind(Messages.DefaultFeatureParser_WrongParsingStack, (new String[] { stack })));

 			}

 		}

 	}

@@ -180,7 +180,7 @@
 

 		switch (currentState) {

 			case STATE_IGNORED_ELEMENT :

-				internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownElement", (new String[] { localName, getState(currentState) })));	//$NON-NLS-1$

+				internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownElement, (new String[] { localName, getState(currentState) })));

 				break;

 

 			case STATE_INITIAL :

@@ -221,7 +221,7 @@
 				break;

 

 			default :

-				internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownStartState", (new String[] { Integer.toString(currentState) })));	//$NON-NLS-1$

+				internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownStartState, (new String[] { Integer.toString(currentState) })));

 				break;

 		}

 

@@ -281,7 +281,7 @@
 					InstallHandlerEntryModel handlerModel = (InstallHandlerEntryModel) objectStack.pop();

 					featureModel = (FeatureModel) objectStack.peek();

 					if (featureModel.getInstallHandlerModel() != null)

-						internalError(NLS.bind("DefaultFeatureParser.ElementAlreadySet", (new String[] { getState(state) }))); //$NON-NLS-1$

+						internalError(NLS.bind(Messages.DefaultFeatureParser_ElementAlreadySet, (new String[] { getState(state) })));

 					else

 						featureModel.setInstallHandlerModel(handlerModel);

 				}

@@ -306,14 +306,14 @@
 							if (objectStack.peek() instanceof FeatureModel) {

 								featureModel = (FeatureModel) objectStack.peek();

 								if (featureModel.getDescriptionModel() != null)

-									internalError(NLS.bind("DefaultFeatureParser.ElementAlreadySet", (new String[] { getState(state) })));	//$NON-NLS-1$

+									internalError(NLS.bind(Messages.DefaultFeatureParser_ElementAlreadySet, (new String[] { getState(state) })));

 								else

 									featureModel.setDescriptionModel(info);

 							}

 							break;

 

 						default :

-							internalError(NLS.bind("DefaultFeatureParser.StateIncludeWrongElement", (new String[] { getState(innerState), getState(state) })));	//$NON-NLS-1$

+							internalError(NLS.bind(Messages.DefaultFeatureParser_StateIncludeWrongElement, (new String[] { getState(innerState), getState(state) })));

 							break;

 

 					}

@@ -339,14 +339,14 @@
 							if (objectStack.peek() instanceof FeatureModel) {

 								featureModel = (FeatureModel) objectStack.peek();

 								if (featureModel.getCopyrightModel() != null)

-									internalError(NLS.bind("DefaultFeatureParser.ElementAlreadySet", (new String[] { getState(state) })));//$NON-NLS-1$

+									internalError(NLS.bind(Messages.DefaultFeatureParser_ElementAlreadySet, (new String[] { getState(state) })));

 								else

 									featureModel.setCopyrightModel(info);

 							}

 							break;

 

 						default :

-							internalError(NLS.bind("DefaultFeatureParser.StateIncludeWrongElement", (new String[] { getState(innerState), getState(state) })));	//$NON-NLS-1$

+							internalError(NLS.bind(Messages.DefaultFeatureParser_StateIncludeWrongElement, (new String[] { getState(innerState), getState(state) })));

 							break;

 

 					}

@@ -373,14 +373,14 @@
 							if (objectStack.peek() instanceof FeatureModel) {

 								featureModel = (FeatureModel) objectStack.peek();

 								if (featureModel.getLicenseModel() != null)

-									internalError(NLS.bind("DefaultFeatureParser.ElementAlreadySet", (new String[] { getState(state) })));	//$NON-NLS-1$

+									internalError(NLS.bind(Messages.DefaultFeatureParser_ElementAlreadySet, (new String[] { getState(state) })));

 								else

 									featureModel.setLicenseModel(info);

 							}

 							break;

 

 						default :

-							internalError(NLS.bind("DefaultFeatureParser.StateIncludeWrongElement", (new String[] { getState(innerState), getState(state) })));	//$NON-NLS-1$

+							internalError(NLS.bind(Messages.DefaultFeatureParser_StateIncludeWrongElement, (new String[] { getState(innerState), getState(state) })));

 							break;

 

 					}

@@ -399,7 +399,7 @@
 					if (objectStack.peek() instanceof FeatureModel) {

 						featureModel = (FeatureModel) objectStack.peek();

 						if (featureModel.getUpdateSiteEntryModel() != null) {

-							internalError(NLS.bind("DefaultFeatureParser.ElementAlreadySet", (new String[] { getState(state) })));	//$NON-NLS-1$

+							internalError(NLS.bind(Messages.DefaultFeatureParser_ElementAlreadySet, (new String[] { getState(state) })));

 						} else {

 							featureModel.setUpdateSiteEntryModel(info);

 						}

@@ -542,7 +542,7 @@
 			stateStack.push(new Integer(STATE_FEATURE));

 			processFeature(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownElement", (new String[] { elementName, getState(currentState) })));//$NON-NLS-1$

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownElement, (new String[] { elementName, getState(currentState) })));

 	}

 

 	private void handleFeatureState(String elementName, Attributes attributes) throws SAXException {

@@ -574,7 +574,7 @@
 			stateStack.push(new Integer(STATE_DATA));

 			processData(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownElement", (new String[] { elementName, getState(currentState) }))); //$NON-NLS-1$

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownElement, (new String[] { elementName, getState(currentState) })));

 	}

 

 	private void handleURLState(String elementName, Attributes attributes) throws SAXException {

@@ -585,7 +585,7 @@
 			stateStack.push(new Integer(STATE_DISCOVERY));

 			processURLInfo(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownElement", (new String[] { elementName, getState(currentState) }))); //$NON-NLS-1$

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownElement, (new String[] { elementName, getState(currentState) })));

 	}

 

 	private void handleRequiresState(String elementName, Attributes attributes) throws SAXException {

@@ -593,7 +593,7 @@
 			stateStack.push(new Integer(STATE_IMPORT));

 			processImport(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownElement", (new String[] { elementName, getState(currentState) }))); //$NON-NLS-1$

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownElement, (new String[] { elementName, getState(currentState) })));

 	}

 	private void handleUpdateDiscoveryState(String elementName, Attributes attributes) throws SAXException {

 		if (elementName.equals(HANDLER)) {

@@ -630,8 +630,8 @@
 			stateStack.push(new Integer(STATE_DISCOVERY));

 			processURLInfo(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownElement", (new String[] { elementName, getState(currentState) }))); //$NON-NLS-1$

-	}

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownElement, (new String[] { elementName, getState(currentState) })));

+        }

 

 

 

@@ -667,7 +667,7 @@
 			stateStack.push(new Integer(STATE_IMPORT));

 			processImport(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultFeatureParser.UnknownElement", (new String[] { elementName, getState(currentState) }))); //$NON-NLS-1$

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultFeatureParser_UnknownElement, (new String[] { elementName, getState(currentState) })));

 	}

 

 	/*

@@ -681,7 +681,7 @@
 

 		if (id == null || id.trim().equals("") //$NON-NLS-1$

 		|| ver == null || ver.trim().equals("")) { //$NON-NLS-1$

-			internalError(NLS.bind("DefaultFeatureParser.IdOrVersionInvalid", (new String[] { id, ver, getState(currentState)})));	//$NON-NLS-1$

+			internalError(NLS.bind(Messages.DefaultFeatureParser_IdOrVersionInvalid, (new String[] { id, ver, getState(currentState)})));

 		} else {

 			// create feature model

 			FeatureModel feature = factory.createFeatureModel();

@@ -804,7 +804,7 @@
 

 		if (id == null || id.trim().equals("") //$NON-NLS-1$

 		|| ver == null || ver.trim().equals("")) { //$NON-NLS-1$

-			internalError(NLS.bind("DefaultFeatureParser.IdOrVersionInvalid", (new String[] { id, ver, getState(currentState)})));	//$NON-NLS-1$

+			internalError(NLS.bind(Messages.DefaultFeatureParser_IdOrVersionInvalid, (new String[] { id, ver, getState(currentState)})));

 		}

 

 		IncludedFeatureReferenceModel includedFeature = factory.createIncludedFeatureReferenceModel();

@@ -900,7 +900,7 @@
 		}

 

 		if (id == null || id.trim().equals("")) //$NON-NLS-1$

-			internalError(NLS.bind("DefaultFeatureParser.MissingId", (new String[] { getState(currentState) })));//$NON-NLS-1$

+			internalError(NLS.bind(Messages.DefaultFeatureParser_MissingId, (new String[] { getState(currentState) })));

 		else {

 			ImportModel imp = factory.createImportModel();

 			String ver = attributes.getValue("version"); //$NON-NLS-1$

@@ -973,7 +973,7 @@
 		String ver = attributes.getValue("version"); //$NON-NLS-1$

 		if (id == null || id.trim().equals("") //$NON-NLS-1$

 		|| ver == null || ver.trim().equals("")) { //$NON-NLS-1$

-			internalError(NLS.bind("DefaultFeatureParser.IdOrVersionInvalid", (new String[] { id, ver, getState(currentState)})));	//$NON-NLS-1$

+			internalError(NLS.bind(Messages.DefaultFeatureParser_IdOrVersionInvalid, (new String[] { id, ver, getState(currentState)})));

 		} else {

 			PluginEntryModel pluginEntry = factory.createPluginEntryModel();

 			pluginEntry.setPluginIdentifier(id);

@@ -1045,7 +1045,7 @@
 	private void processData(Attributes attributes) {

 		String id = attributes.getValue("id"); //$NON-NLS-1$

 		if (id == null || id.trim().equals("")) { //$NON-NLS-1$

-			internalError(NLS.bind("DefaultFeatureParser.MissingId", (new String[] { getState(currentState) })));	//$NON-NLS-1$

+			internalError(NLS.bind(Messages.DefaultFeatureParser_MissingId, (new String[] { getState(currentState) })));

 		} else {

 			NonPluginEntryModel dataEntry = factory.createNonPluginEntryModel();

 			dataEntry.setIdentifier(id);

@@ -1115,10 +1115,10 @@
 

 		String msg;

 		if (name.equals("")) { //$NON-NLS-1$

-			msg = NLS.bind("DefaultFeatureParser.ErrorParsing", (new String[] { ex.getMessage() }));//$NON-NLS-1$

+			msg = NLS.bind(Messages.DefaultFeatureParser_ErrorParsing, (new String[] { ex.getMessage() }));

 		} else {

 			String[] values = new String[] { name, Integer.toString(ex.getLineNumber()), Integer.toString(ex.getColumnNumber()), ex.getMessage()};

-			msg = NLS.bind("DefaultFeatureParser.ErrorlineColumnMessage", values);//$NON-NLS-1$

+			msg = NLS.bind(Messages.DefaultFeatureParser_ErrorlineColumnMessage, values);

 		}

 		error(new Status(IStatus.ERROR, PLUGIN_ID, Platform.PARSE_PROBLEM, msg, ex));

 	}

@@ -1147,7 +1147,7 @@
 

 	private void internalError(String message) {

         if (location != null)

-            message += " " + NLS.bind("DefaultFeatureParser.location", (new String[] { location })); //$NON-NLS-1$ $NON-NLS-2$

+            message += " " + NLS.bind(Messages.DefaultFeatureParser_location, (new String[] { location }));

 		error(new Status(IStatus.ERROR, PLUGIN_ID, Platform.PARSE_PROBLEM, message, null));

 	}

 

@@ -1203,7 +1203,7 @@
 				return "Data"; //$NON-NLS-1$

 

 			default :

-				return NLS.bind("DefaultFeatureParser.UnknownState", (new String[] { Integer.toString(state) }));//$NON-NLS-1$

+				return NLS.bind(Messages.DefaultFeatureParser_UnknownState, (new String[] { Integer.toString(state) }));

 		}

 

 	}

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
index a929cb9..f4b5839 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
@@ -135,7 +135,7 @@
 				while (iter.hasNext()) {

 					stack = stack + iter.next().toString() + "\r\n"; //$NON-NLS-1$

 				}

-				throw new SAXException(NLS.bind("DefaultSiteParser.WrongParsingStack", (new String[] { stack })));	//$NON-NLS-1$

+				throw new SAXException(NLS.bind(Messages.DefaultSiteParser_WrongParsingStack, (new String[] { stack })));

 			}

 		}

 	}

@@ -164,7 +164,7 @@
 

 		switch (currentState) {

 			case STATE_IGNORED_ELEMENT :

-				internalErrorUnknownTag(NLS.bind("DefaultSiteParser.UnknownElement", (new String[] { localName, getState(currentState) })));//$NON-NLS-1$

+				internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] { localName, getState(currentState) })));

 				break;

 			case STATE_INITIAL :

 				handleInitialState(localName, attributes);

@@ -199,7 +199,7 @@
 				break;

 

 			default :

-				internalErrorUnknownTag(NLS.bind("DefaultSiteParser.UnknownStartState", (new String[] { getState(currentState) })));//$NON-NLS-1$

+				internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownStartState, (new String[] { getState(currentState) })));

 				break;

 		}

 		int newState = ((Integer) stateStack.peek()).intValue();

@@ -280,7 +280,7 @@
 				// do not raise error as previous description may be default one

 				// when parsing site tag

 				if (DESCRIPTION_SITE_ALREADY_SEEN)

-					debug(NLS.bind("DefaultSiteParser.ElementAlreadySet", (new String[] { getState(state) })));	//$NON-NLS-1$

+					debug(NLS.bind(Messages.DefaultSiteParser_ElementAlreadySet, (new String[] { getState(state) })));

 				siteModel.setDescriptionModel(info);

 				DESCRIPTION_SITE_ALREADY_SEEN = true;

 				break;

@@ -307,13 +307,13 @@
 

 				CategoryModel category = (CategoryModel) objectStack.peek();

 				if (category.getDescriptionModel() != null)

-					internalError(NLS.bind("DefaultSiteParser.ElementAlreadySet2", (new String[] { getState(state), category.getLabel() })));//$NON-NLS-1$

+					internalError(NLS.bind(Messages.DefaultSiteParser_ElementAlreadySet, (new String[] { getState(state), category.getLabel() })));

 				else

 					category.setDescriptionModel(info);

 				break;

 

 			default :

-				internalError(NLS.bind("DefaultSiteParser.UnknownEndState", (new String[] { getState(state) })));//$NON-NLS-1$

+				internalError(NLS.bind(Messages.DefaultSiteParser_UnknownEndState, (new String[] { getState(state) })));

 				break;

 		}

 

@@ -360,7 +360,7 @@
 			stateStack.push(new Integer(STATE_SITE));

 			processSite(attributes);

 		} else {

-			internalErrorUnknownTag(NLS.bind("DefaultSiteParser.UnknownElement", (new String[] { elementName, getState(currentState) })));	//$NON-NLS-1$

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] { elementName, getState(currentState) })));

 			// what we received was not a site.xml, no need to continue

 			throw new SAXException(Messages.DefaultSiteParser_InvalidXMLStream); 

 		}

@@ -381,7 +381,7 @@
 			stateStack.push(new Integer(STATE_CATEGORY_DEF));

 			processCategoryDef(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultSiteParser.UnknownElement", (new String[] { elementName, getState(currentState) }))); //$NON-NLS-1$ 			

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] { elementName, getState(currentState) }))); 			

 	}

 

 	private void handleFeatureState(String elementName, Attributes attributes) {

@@ -401,7 +401,7 @@
 			stateStack.push(new Integer(STATE_CATEGORY));

 			processCategory(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultSiteParser.UnknownElement", (new String[] { elementName, getState(currentState) }))); //$NON-NLS-1$ 			

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] { elementName, getState(currentState) }))); 			

 	}

 

 	private void handleCategoryDefState(String elementName, Attributes attributes) {

@@ -418,7 +418,7 @@
 			stateStack.push(new Integer(STATE_DESCRIPTION_CATEGORY_DEF));

 			processInfo(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultSiteParser.UnknownElement", (new String[] { elementName, getState(currentState) })));	//$NON-NLS-1$ 			

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] { elementName, getState(currentState) }))); 			

 	}

 

 	private void handleCategoryState(String elementName, Attributes attributes) {

@@ -438,7 +438,7 @@
 			stateStack.push(new Integer(STATE_CATEGORY));

 			processCategory(attributes);

 		} else

-			internalErrorUnknownTag(NLS.bind("DefaultSiteParser.UnknownElement", (new String[] { elementName, getState(currentState) })));//$NON-NLS-1$ 			

+			internalErrorUnknownTag(NLS.bind(Messages.DefaultSiteParser_UnknownElement, (new String[] { elementName, getState(currentState) }))); 			

 	}

 

 	/* 

@@ -509,7 +509,7 @@
         // We need to have id and version, or the url, or both.

  		if (noURL) {

             if (noId || noVersion)

-                internalError(NLS.bind("DefaultSiteParser.Missing", (new String[] { "url", getState(currentState) })));	//$NON-NLS-1$  //$NON-NLS-2$

+                internalError(NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] { "url", getState(currentState) })));	//$NON-NLS-1$

             else // default url

                 urlInfo = FEATURES + id + '_' + ver; //$NON-NLS-1$ 

         }

@@ -522,7 +522,7 @@
 		// if one is null, and not the other

 		if (noId ^ noVersion) {

 			String[] values = new String[] { id, ver, getState(currentState)};

-			UpdateCore.warn(NLS.bind("DefaultFeatureParser.IdOrVersionInvalid", values));//$NON-NLS-1$

+			UpdateCore.warn(NLS.bind(Messages.DefaultFeatureParser_IdOrVersionInvalid, values));

 		} else {

 			feature.setFeatureIdentifier(id);

 			feature.setFeatureVersion(ver);

@@ -574,14 +574,14 @@
 		ArchiveReferenceModel archive = factory.createArchiveReferenceModel();

 		String id = attributes.getValue("path"); //$NON-NLS-1$

 		if (id == null || id.trim().equals("")) { //$NON-NLS-1$

-			internalError(NLS.bind("DefaultSiteParser.Missing", (new String[] { "path", getState(currentState) }))); //$NON-NLS-1$  //$NON-NLS-2$

+			internalError(NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] { "path", getState(currentState) }))); //$NON-NLS-1$

 		}

 

 		archive.setPath(id);

 

 		String url = attributes.getValue("url"); //$NON-NLS-1$

 		if (url == null || url.trim().equals("")) { //$NON-NLS-1$

-			internalError(NLS.bind("DefaultSiteParser.Missing", (new String[] { "archive", getState(currentState) })));	//$NON-NLS-1$  //$NON-NLS-2$

+			internalError(NLS.bind(Messages.DefaultSiteParser_Missing, (new String[] { "archive", getState(currentState) })));	//$NON-NLS-1$

 		} else {

 			archive.setURLString(url);

 

@@ -656,10 +656,10 @@
 

 		String msg;

 		if (name.equals("")) //$NON-NLS-1$

-			msg = NLS.bind("DefaultSiteParser.ErrorParsing", (new String[] { ex.getMessage() }));	//$NON-NLS-1$

+			msg = NLS.bind(Messages.DefaultSiteParser_ErrorParsing, (new String[] { ex.getMessage() }));

 		else {

 			String[] values = new String[] { name, Integer.toString(ex.getLineNumber()), Integer.toString(ex.getColumnNumber()), ex.getMessage()};

-			msg = NLS.bind("DefaultSiteParser.ErrorLineColumnMessage", values);//$NON-NLS-1$

+			msg = NLS.bind(Messages.DefaultSiteParser_ErrorlineColumnMessage, values);

 		}

 		error(new Status(IStatus.ERROR, PLUGIN_ID, Platform.PARSE_PROBLEM, msg, ex));

 	}

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfigurationPolicy.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfigurationPolicy.java
index 96d0da9..0a1852a 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfigurationPolicy.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfigurationPolicy.java
@@ -152,9 +152,9 @@
 				newException = t;

 			}

 			if (originalException != null) // original exception wins

-				throw Utilities.newCoreException(NLS.bind("InstallHandler.error", (new String[] { feature.getLabel() })), originalException); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InstallHandler_error, (new String[] { feature.getLabel() })), originalException);

 			if (newException != null)

-				throw Utilities.newCoreException(NLS.bind("InstallHandler.error", (new String[] { feature.getLabel() })), newException); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InstallHandler_error, (new String[] { feature.getLabel() })), newException);

 		}

 	}

 

@@ -252,9 +252,9 @@
 				newException = t;

 			}

 			if (originalException != null) // original exception wins

-				throw Utilities.newCoreException(NLS.bind("InstallHandler.error", (new String[] { feature.getLabel() })), originalException); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InstallHandler_error, (new String[] { feature.getLabel() })), originalException);

 			if (newException != null)

-				throw Utilities.newCoreException(NLS.bind("InstallHandler.error", (new String[] { feature.getLabel() })), newException); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InstallHandler_error, (new String[] { feature.getLabel() })), newException);

 		}

 

 		if (!success) {

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfiguredSite.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfiguredSite.java
index 70d720f..16afb80 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfiguredSite.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConfiguredSite.java
@@ -96,7 +96,7 @@
 
 		// ConfigSite is read only 
 		if (!isUpdatable()) {
-			String errorMessage = NLS.bind("ConfiguredSite.NonInstallableSite", (new String[] { getSite().getURL().toExternalForm() })); //$NON-NLS-1$
+			String errorMessage = NLS.bind(Messages.ConfiguredSite_NonInstallableSite, (new String[] { getSite().getURL().toExternalForm() }));
 			IStatus status = verifyUpdatableStatus();
 			if (status != null)
 				errorMessage += " " + status.getMessage(); //$NON-NLS-1$
@@ -167,7 +167,7 @@
 
 		// ConfigSite is read only
 		if (!isUpdatable()) {
-			String errorMessage = NLS.bind("ConfiguredSite.NonUninstallableSite", (new String[] { getSite().getURL().toExternalForm() })); //$NON-NLS-1$
+			String errorMessage = NLS.bind(Messages.ConfiguredSite_NonUninstallableSite, (new String[] { getSite().getURL().toExternalForm() }));
 			throw Utilities.newCoreException(errorMessage, null);
 		}
 
@@ -195,10 +195,10 @@
 				if (getConfigurationPolicy().isConfigured(referenceToRemove)) {
 					IFeature featureToRemove = ((IFeatureReference) referenceToRemove).getFeature(null);
 					String featureLabel = (featureToRemove == null) ? null : featureToRemove.getLabel();
-					throw Utilities.newCoreException(NLS.bind("ConfiguredSite.UnableToRemoveConfiguredFeature", (new String[] { featureLabel })), null);
+					throw Utilities.newCoreException(NLS.bind(Messages.ConfiguredSite_UnableToRemoveConfiguredFeature, (new String[] { featureLabel })), null);
 				}
 			} else {
-				throw Utilities.newCoreException(NLS.bind("ConfiguredSite.UnableToFindFeature", (new String[] { feature.getURL().toString() })), //$NON-NLS-1$
+				throw Utilities.newCoreException(NLS.bind(Messages.ConfiguredSite_UnableToFindFeature, (new String[] { feature.getURL().toString() })),
 				null);
 			}
 
@@ -492,7 +492,7 @@
 				String url = element.getURL().toString();
 				ISite site = element.getSite();
 				String siteString = (site != null) ? site.getURL().toExternalForm() : Messages.ConfiguredSite_NoSite; 
-				UpdateCore.warn(NLS.bind("ConfiguredSite.CannotFindFeatureToUnconfigure", (new String[] { url, siteString })), e); //$NON-NLS-1$ 
+				UpdateCore.warn(NLS.bind(Messages.ConfiguredSite_CannotFindFeatureToUnconfigure, (new String[] { url, siteString })), e); 
 			}
 		}
 		//} // end USER_EXCLUDE
@@ -517,7 +517,7 @@
 					// notify we cannot find the feature
 					UpdateCore.warn(null, e);
 					String featureString = configuredFeatures[i].getURL().toExternalForm();
-					if (!handler.reportProblem(NLS.bind("ConfiguredSite.CannotFindFeatureToConfigure", (new String[] { featureString })))) { //$NON-NLS-1$
+					if (!handler.reportProblem(NLS.bind(Messages.ConfiguredSite_CannotFindFeatureToConfigure, (new String[] { featureString })))) {
 						throw new InterruptedException();
 					}
 				}
@@ -548,7 +548,7 @@
 								UpdateCore.log(msg, new Exception());
 
 								String siteString = (site != null) ? site.getURL().toExternalForm() : Messages.ConfiguredSite_NoSite;	
-								String errorLabel = NLS.bind("ConfiguredSite.CannotFindPluginEntry", (new String[] { currentFeaturePluginEntry.getVersionedIdentifier().toString(), siteString }));	//$NON-NLS-1$ //$NON-NLS-2$
+								String errorLabel = NLS.bind(Messages.ConfiguredSite_CannotFindPluginEntry, (new String[] { currentFeaturePluginEntry.getVersionedIdentifier().toString(), siteString }));
 								if (handler == null) {
 									throw new InterruptedException(errorLabel);
 								}
@@ -693,7 +693,7 @@
 				if (id != null) {
 					values = new Object[] { id.getIdentifier(), id.getVersion()};
 				}
-				String msg1 = NLS.bind("ConfiguredSite.MissingPluginsBrokenFeature", values); //$NON-NLS-1$
+				String msg1 = NLS.bind(Messages.ConfiguredSite_MissingPluginsBrokenFeature, values);
 				UpdateCore.warn(msg1);
 				IStatus status = createStatus(IStatus.ERROR, IFeature.STATUS_UNHAPPY, msg1, null);
 				multi.add(status);
@@ -765,13 +765,13 @@
 		String productName = getProductName(file);
 		if (productName != null) {
 			if (!productName.equals(getProductIdentifier("id", getProductFile()))) { //$NON-NLS-1$
-				verifyStatus = createStatus(IStatus.ERROR, NLS.bind("ConfiguredSite.NotSameProductId", (new String[] { productName })), null); //$NON-NLS-1$
+				verifyStatus = createStatus(IStatus.ERROR, NLS.bind(Messages.ConfiguredSite_NotSameProductId, (new String[] { productName })), null);
 				return verifyStatus;
 			}
 		} else {
 			File container = getSiteContaining(file);
 			if (container != null) {
-				verifyStatus = createStatus(IStatus.ERROR, NLS.bind("ConfiguredSite.ContainedInAnotherSite", (new String[] { container.getAbsolutePath() })), null); //$NON-NLS-1$
+				verifyStatus = createStatus(IStatus.ERROR, NLS.bind(Messages.ConfiguredSite_ContainedInAnotherSite, (new String[] { container.getAbsolutePath() })), null);
 				return verifyStatus;
 			}
 		}
@@ -1078,10 +1078,10 @@
 					return true;
 			}
 		} catch (MalformedURLException e) {
-			String msg = NLS.bind("ConfiguredSite.UnableResolveURL", (new String[] { platformString })); //$NON-NLS-1$
+			String msg = NLS.bind(Messages.ConfiguredSite_UnableResolveURL, (new String[] { platformString }));
 			throw Utilities.newCoreException(msg, e);
 		} catch (IOException e) {
-			String msg = NLS.bind("ConfiguredSite.UnableToAccessSite", (new Object[] { siteURL })); //$NON-NLS-1$
+			String msg = NLS.bind(Messages.ConfiguredSite_UnableToAccessSite, (new Object[] { siteURL }));
 			throw Utilities.newCoreException(msg, e);
 		}
 
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConnectionThreadManager.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConnectionThreadManager.java
index 9a6f4bd..d9354ce 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConnectionThreadManager.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ConnectionThreadManager.java
@@ -154,7 +154,7 @@
 						IStatus.ERROR,
 						pluginId,
 						IStatus.OK,
-						NLS.bind("ConnectionThreadManager.unresponsiveURL", (new String[] { url })),
+						NLS.bind(Messages.ConnectionThreadManager_unresponsiveURL, (new String[] { url })),
 						null);
 				children.add(status);
 			}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/DefaultInstallHandler.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/DefaultInstallHandler.java
index 2ab5ed9..0623ec3 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/DefaultInstallHandler.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/DefaultInstallHandler.java
@@ -108,7 +108,7 @@
 						}
 					} catch (IOException e) {
 						throw Utilities
-							.newCoreException(NLS.bind("JarVerificationService.CancelInstall", (new String[] { id })),	//$NON-NLS-1$
+							.newCoreException(NLS.bind(Messages.JarVerificationService_CancelInstall, (new String[] { id })),
 						e);
 					}
 
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ErrorRecoveryLog.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ErrorRecoveryLog.java
index 20eb3f0..393f44a 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ErrorRecoveryLog.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/ErrorRecoveryLog.java
@@ -134,7 +134,7 @@
 			UpdateCore.warn("Start new Error/Recovery log #"+nbOfOpen+":"+logEntry);							 //$NON-NLS-1$ //$NON-NLS-2$
 		} catch (IOException e) {
 			throw Utilities.newCoreException(
-				NLS.bind("UpdateManagerUtils.UnableToLog", (new Object[] { logFile })), //$NON-NLS-1$
+				NLS.bind(Messages.UpdateManagerUtils_UnableToLog, (new Object[] { logFile })),
 				e);
 		}
 		
@@ -163,7 +163,7 @@
 			index++;
 		} catch (IOException e) {
 			throw Utilities.newCoreException(
-				NLS.bind("UpdateManagerUtils.UnableToLog", (new Object[] { logFile })), //$NON-NLS-1$
+				NLS.bind(Messages.UpdateManagerUtils_UnableToLog, (new Object[] { logFile })),
 				e);
 		}
 	}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableContentProvider.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableContentProvider.java
index eaf3852..bb5e0e4 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableContentProvider.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableContentProvider.java
@@ -48,7 +48,7 @@
 		File pluginPath = new File(result);

 		if (!pluginPath.exists())

 			throw new IOException(

-				NLS.bind("FeatureExecutableContentProvider.FileDoesNotExist", (new String[] { result })));	//$NON-NLS-1$

+				NLS.bind(Messages.FeatureExecutableContentProvider_FileDoesNotExist, (new String[] { result })));

 

 		return result;

 	}

@@ -65,7 +65,7 @@
 		File pluginDir = new File(result);

 		if (!pluginDir.exists())

 			throw new IOException(

-				NLS.bind("FeatureExecutableContentProvider.FileDoesNotExist", (new String[] { result }))); //$NON-NLS-1$

+				NLS.bind(Messages.FeatureExecutableContentProvider_FileDoesNotExist, (new String[] { result })));

 

 		return result;

 	}

@@ -79,7 +79,7 @@
 

 		if (!dir.isDirectory()) {

 			String msg =

-				NLS.bind("FeatureExecutableContentProvider.InvalidDirectory", (new String[] { dir.getAbsolutePath() }));

+				NLS.bind(Messages.FeatureExecutableContentProvider_InvalidDirectory, (new String[] { dir.getAbsolutePath() }));

 

 			throw new IOException(msg);

 

@@ -116,7 +116,7 @@
 

 		} catch (MalformedURLException e) {

 			throw Utilities.newCoreException(

-				NLS.bind("FeatureExecutableContentProvider.UnableToCreateURLFor", (new String[] { getURL().toExternalForm() + " " + Feature.FEATURE_XML })), //$NON-NLS-1$

+				NLS.bind(Messages.FeatureExecutableContentProvider_UnableToCreateURLFor, (new String[] { getURL().toExternalForm() + " " + Feature.FEATURE_XML })), //$NON-NLS-1$

 				e);

 		}

 		return result;

@@ -150,7 +150,7 @@
 			}

 		} catch (IOException e) {

 			throw Utilities.newCoreException(

-					NLS.bind("FeatureExecutableContentProvider.UnableToRetrievePluginEntry", (new String[] { pluginEntry.getVersionedIdentifier().toString() })),

+					NLS.bind(Messages.FeatureExecutableContentProvider_UnableToRetrievePluginEntry, (new String[] { pluginEntry.getVersionedIdentifier().toString() })),

 					e);

 		}

 		return result;

@@ -176,7 +176,7 @@
 		File nonPluginData = new File(fileString);

 		if (!nonPluginData.exists())

 			throw Utilities.newCoreException(

-				NLS.bind("FeatureExecutableContentProvider.FileDoesNotExist", (new String[] { fileString })), //$NON-NLS-1$

+				NLS.bind(Messages.FeatureExecutableContentProvider_FileDoesNotExist, (new String[] { fileString })), //$NON-NLS-1$

 				null); 

 

 		try {

@@ -184,7 +184,7 @@
 				new ContentReference(nonPluginEntry.getIdentifier(), nonPluginData.toURL());

 		} catch (MalformedURLException e) {

 			throw Utilities.newCoreException(

-				NLS.bind("FeatureExecutableContentProvider.UnableToRetrieveNonPluginEntry", (new String[] { nonPluginEntry.getIdentifier().toString() })),

+				NLS.bind(Messages.FeatureExecutableContentProvider_UnableToRetrieveNonPluginEntry, (new String[] { nonPluginEntry.getIdentifier().toString() })),

 				e);

 		}

 		return result;

@@ -216,7 +216,7 @@
 			}

 		} catch (IOException e) {

 			throw Utilities.newCoreException(

-				NLS.bind("FeatureExecutableContentProvider.UnableToRetrieveFeatureEntryContentRef", (new String[] { getFeature().getVersionedIdentifier().toString() })),

+				NLS.bind(Messages.FeatureExecutableContentProvider_UnableToRetrieveFeatureEntry, (new String[] { getFeature().getVersionedIdentifier().toString() })),

 				e);

 		}

 		return result;

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableFactory.java
index fdf5302..3bba535 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureExecutableFactory.java
@@ -62,7 +62,7 @@
 		} catch (CoreException e) {

 			throw e;

 		} catch (Exception e) {

-			throw Utilities.newCoreException(NLS.bind("FeatureFactory.CreatingError", (new String[] { url.toExternalForm() })), e);	//$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.FeatureFactory_CreatingError, (new String[] { url.toExternalForm() })), e);

 		} finally {

 			try {

 				if (featureStream != null)

@@ -110,7 +110,7 @@
 				String path = url.getFile() + "/"; //$NON-NLS-1$

 				url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);

 			} catch (MalformedURLException e) {

-				throw Utilities.newCoreException(NLS.bind("FeatureExecutableFactory.CannotCreateURL", (new String[] { url.toExternalForm() })), e);	//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.FeatureExecutableFactory_CannotCreateURL, (new String[] { url.toExternalForm() })), e);

 			}

 		}

 		return url;

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedContentProvider.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedContentProvider.java
index e1675d0..3bd3841 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedContentProvider.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedContentProvider.java
@@ -90,7 +90,7 @@
 

 		// the manifest has not been found

 		String[] values = new String[] { Feature.FEATURE_XML, getURL().toExternalForm()};

-		throw Utilities.newCoreException(NLS.bind("FeaturePackagedContentProvider.NoManifestFile", values), new Exception()); //$NON-NLS-1$ 

+		throw Utilities.newCoreException(NLS.bind(Messages.FeaturePackagedContentProvider_NoManifestFile, values), new Exception()); 

 

 	}

 

@@ -246,7 +246,7 @@
 		List result = new ArrayList();

 

 		if (!dir.isDirectory())

-			throw new IOException(NLS.bind("FeaturePackagedContentProvider.InvalidDirectory", (new String[] { dir.getPath() }))); //$NON-NLS-1$

+			throw new IOException(NLS.bind(Messages.FeaturePackagedContentProvider_InvalidDirectory, (new String[] { dir.getPath() })));

 

 		File[] files = dir.listFiles();

 		if (files != null) // be careful since it can be null

@@ -267,7 +267,7 @@
 

 		String[] values = new String[] { obj };

 

-		return Utilities.newCoreException(NLS.bind("FeaturePackagedContentProvider.ErrorRetrieving", values), e); //$NON-NLS-1$	 	

+		return Utilities.newCoreException(NLS.bind(Messages.FeaturePackagedContentProvider_ErrorRetrieving, values), e);	 	

 

 	}

 

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedFactory.java
index 18834d4..66552d1 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeaturePackagedFactory.java
@@ -64,7 +64,7 @@
 		}  catch (CoreException e){

 			throw e;

 		} catch (Exception e) { 

-			throw Utilities.newCoreException(NLS.bind("FeatureFactory.CreatingError", (new String[] { url.toExternalForm() })), e); //$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.FeatureFactory_CreatingError, (new String[] { url.toExternalForm() })), e);

 		}finally {

 			try {

 				if (featureStream!=null)	

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureTypeFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureTypeFactory.java
index 649704d..66c67ff 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureTypeFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/FeatureTypeFactory.java
@@ -67,7 +67,7 @@
 

 		if (elements == null || elements.length == 0) {

 			throw Utilities.newCoreException(

-					NLS.bind("FeatureTypeFactory.UnableToFindFeatureFactory", (new String[] { type })), //$NON-NLS-1$

+					NLS.bind(Messages.FeatureTypeFactory_UnableToFindFeatureFactory, (new String[] { type })),

 					null);

 		} 

 

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
index 9f2f5f2..3eb48b0 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
@@ -115,7 +115,7 @@
 		}

 		

 		if (isDuplicateSite(file))

-			throw Utilities.newCoreException(NLS.bind("InstallConfiguration.location.exists", (new String[] { file.getPath() })),null); //$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.InstallConfiguration_location_exists, (new String[] { file.getPath() })),null);

 		ISite site = InternalSiteManager.createSite(file);

 

 		//create a config site around the site

@@ -391,7 +391,7 @@
 			resetActivities();

 			return isRestartNeeded(runtimeConfiguration);

 		} catch (IOException e) {

-			CoreException exc = Utilities.newCoreException(NLS.bind("InstallConfiguration.UnableToSavePlatformConfiguration", (new String[] { runtimeConfiguration.getConfigurationLocation().toExternalForm() })), e);	//$NON-NLS-1$

+			CoreException exc = Utilities.newCoreException(NLS.bind(Messages.InstallConfiguration_UnableToSavePlatformConfiguration, (new String[] { runtimeConfiguration.getConfigurationLocation().toExternalForm() })), e);

 			UpdateCore.warn("",exc); //$NON-NLS-1$

 		}

 		return true;

@@ -417,7 +417,7 @@
 		try {

 			urlToCheck = new URL(cSite.getPlatformURLString());

 		} catch (MalformedURLException e) {

-			throw Utilities.newCoreException(NLS.bind("InstallConfiguration.UnableToCreateURL", (new String[] { cSite.getPlatformURLString() })), e); //$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.InstallConfiguration_UnableToCreateURL, (new String[] { cSite.getPlatformURLString() })), e);

 		} catch (ClassCastException e) {

 			throw Utilities.newCoreException(Messages.InstallConfiguration_UnableToCast, e);	

 		}

@@ -518,7 +518,7 @@
 			try {

 				urlToCheck = new URL(configurationSites[i].getPlatformURLString());

 			} catch (MalformedURLException e) {

-				UpdateCore.warn(NLS.bind("InstallConfiguration.UnableToCreateURL", (new String[] { configurationSites[i].getPlatformURLString() })), e); //$NON-NLS-1$

+				UpdateCore.warn(NLS.bind(Messages.InstallConfiguration_UnableToCreateURL, (new String[] { configurationSites[i].getPlatformURLString() })), e);

 			} catch (ClassCastException e) {

 				UpdateCore.warn(Messages.InstallConfiguration_UnableToCast, e);

 			}

@@ -526,7 +526,8 @@
 			// if the URL doesn't exits log it

 			IPlatformConfiguration.ISiteEntry siteEntry = runtimeConfiguration.findConfiguredSite(urlToCheck);

 			if (siteEntry == null) {

-				UpdateCore.warn(NLS.bind("Unable to find site {0} in platform configuration {1}.", (new String[] { urlToCheck.toExternalForm(), runtimeConfiguration.getConfigurationLocation().toExternalForm() }))); //$NON-NLS-1$

+                //TODO need to NL this message

+				UpdateCore.warn(NLS.bind("Unable to find site {0} in platform configuration {1}.", (new String[] { urlToCheck.toExternalForm(), runtimeConfiguration.getConfigurationLocation().toExternalForm() })));

 			}

 		}

 	}

@@ -690,7 +691,7 @@
 

 			return result;

 		} catch (IOException e) {

-			throw Utilities.newCoreException(NLS.bind("InstallConfiguration.UnableToCreateURL", (new String[] { rootString })), e);	//$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.InstallConfiguration_UnableToCreateURL, (new String[] { rootString })), e);

 		}

 	}

 

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallHandlerProxy.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallHandlerProxy.java
index 4f825fb..c6e33d2 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallHandlerProxy.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallHandlerProxy.java
@@ -139,18 +139,18 @@
 			handler.initialize(type, feature, entry, monitor);
 		} catch (ClassNotFoundException e) {
 			handleExceptionInInit(
-				NLS.bind("InstallHandler.notFound", (new String[] { feature.getLabel() })), //$NON-NLS-1$
+				NLS.bind(Messages.InstallHandler_notFound, (new String[] { feature.getLabel() })),
 				e);
 
 		} catch (ClassCastException e) {
 			handleExceptionInInit(
-				NLS.bind("InstallHandler.invalidHandler", (new String[] { feature.getLabel() })), //$NON-NLS-1$
+				NLS.bind(Messages.InstallHandler_invalidHandler, (new String[] { feature.getLabel() })),
 				e);
 		} catch (CoreException e) {
 			handleExceptionInInit(null, e);
 		} catch (Exception e) {
 			handleExceptionInInit(
-				NLS.bind("InstallHandler.unableToCreateHandler", (new String[] { feature.getLabel() })), //$NON-NLS-1$
+				NLS.bind(Messages.InstallHandler_unableToCreateHandler, (new String[] { feature.getLabel() })),
 				e);
 		}
 
@@ -446,7 +446,7 @@
 		else
 			ce =
 				Utilities.newCoreException(
-					NLS.bind("InstallHandler.callException", (new String[] { feature.getLabel() })), //$NON-NLS-1$
+					NLS.bind(Messages.InstallHandler_callException, (new String[] { feature.getLabel() })),
 					e);
 		
 		if (isUndoAction()) {
@@ -492,7 +492,7 @@
 			base = baseRef.asURL();
 		if (base == null)
 			throw Utilities.newCoreException(
-				NLS.bind("InstallHandler.unableToCreateHandler", (new String[] { this.feature.getLabel() })), //$NON-NLS-1$
+				NLS.bind(Messages.InstallHandler_unableToCreateHandler, (new String[] { this.feature.getLabel() })),
 				null);
 
 
@@ -541,7 +541,7 @@
 			reg.getConfigurationElementsFor(EXT_PLUGIN, EXT_POINT, name);
 		if (handlerExtension == null || handlerExtension.length <= 0)
 			throw Utilities.newCoreException(
-				NLS.bind("InstallHandler.unableToCreateHandler", (new String[] { this.feature.getLabel() })), //$NON-NLS-1$
+				NLS.bind(Messages.InstallHandler_unableToCreateHandler, (new String[] { this.feature.getLabel() })),
 				null);
 
 		return (IInstallHandler) handlerExtension[0].createExecutableExtension("class"); //$NON-NLS-1$
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalSiteManager.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalSiteManager.java
index 1bd1519..674a330 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalSiteManager.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InternalSiteManager.java
@@ -211,7 +211,7 @@
 					throw e;

 				site = createSite(e.getNewType(), siteURL, monitor);

 			} catch (InvalidSiteTypeException e1) {

-				throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToCreateSiteWithType", (new String[] { e.getNewType(), siteURL.toExternalForm() })), e1);	//$NON-NLS-1$ 

+				throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToCreateSiteWithType, (new String[] { e.getNewType(), siteURL.toExternalForm() })), e1); 

 			}

 		}

 

@@ -255,38 +255,38 @@
 			// or a directory, without reference			

 			if (url.getRef() != null) {

 				// 4 nothing we can do

-				throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToAccessURL", (new String[] { url.toExternalForm() })), e); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToAccessURL, (new String[] { url.toExternalForm() })), e);

 			} else if (url.getFile().endsWith("/")) { //$NON-NLS-1$

 				// 1 try to add site.xml

 				URL urlRetry;

 				try {

 					urlRetry = new URL(url, Site.SITE_XML);

 				} catch (MalformedURLException e1) {

-					throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToCreateURL", (new String[] { url.toExternalForm() + "+" + Site.SITE_XML })), e1);	//$NON-NLS-1$ //$NON-NLS-2$

+					throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToCreateURL, (new String[] { url.toExternalForm() + "+" + Site.SITE_XML })), e1);	//$NON-NLS-1$

 				}

 				try {

 					monitor.worked(1);

 					site = createSite(factory, urlRetry, monitor);

 				} catch (CoreException e1) {

-					throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToAccessURL", (new String[] { url.toExternalForm() })), url.toExternalForm(), urlRetry.toExternalForm(), e, e1);//$NON-NLS-1$

+					throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToAccessURL, (new String[] { url.toExternalForm() })), url.toExternalForm(), urlRetry.toExternalForm(), e, e1);

 				}

 			} else if (url.getFile().endsWith(Site.SITE_XML)) {

 				// 3 nothing we can do

-				throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToAccessURL", (new String[] { url.toExternalForm() })), e);//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToAccessURL, (new String[] { url.toExternalForm() })), e);

 			} else {

 				// 2 try to add /site.xml 

 				URL urlRetry;

 				try {

 					urlRetry = new URL(url.getProtocol(), url.getHost(), url.getPort(), url.getFile() + "/" + Site.SITE_XML);	//$NON-NLS-1$

 				} catch (MalformedURLException e1) {

-					throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToCreateURL", (new String[] { url.toExternalForm() + "+" + Site.SITE_XML })), e1);	//$NON-NLS-1$ //$NON-NLS-2$

+					throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToCreateURL, (new String[] { url.toExternalForm() + "+" + Site.SITE_XML })), e1);	//$NON-NLS-1$

 				}

 

 				try {

 					monitor.worked(1);

 					site = createSite(factory, urlRetry, monitor);

 				} catch (CoreException e1) {

-					throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToAccessURL", (new String[] { url.toExternalForm() })), url.toExternalForm(), urlRetry.toExternalForm(), e, e1);//$NON-NLS-1$

+					throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToAccessURL, (new String[] { url.toExternalForm() })), url.toExternalForm(), urlRetry.toExternalForm(), e, e1);

 				}

 			}

 		}

@@ -314,7 +314,7 @@
 				URL siteURL = siteLocation.toURL();

 				site = getSite(siteURL, false, null);

 			} catch (MalformedURLException e) {

-				throw Utilities.newCoreException(NLS.bind("InternalSiteManager.UnableToCreateURL", (new String[] { siteLocation.getAbsolutePath() })), e);	//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InternalSiteManager_UnableToCreateURL, (new String[] { siteLocation.getAbsolutePath() })), e);

 			}

 		}

 		return site;

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/Messages.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/Messages.java
index b1af94a..f4a15f3 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/Messages.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/Messages.java
@@ -295,6 +295,7 @@
 	public static String ErrorRecoveryLog_noFiletoRemove;
 	public static String ErrorRecoveryLog_removeFeature;
 	public static String UpdatesSearchCategory_errorSearchingForUpdates;
+    public static String UninstallCommand_featureNotInstalledByUM;
 	public static String Standalone_siteConfigured;
 	public static String Standalone_noSite;
 	public static String Standalone_noSite2;
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFile.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFile.java
index b2e2c89..2390d75 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFile.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFile.java
@@ -168,7 +168,7 @@
 			}

 

 			if (InstallRegistry.getInstance().get("feature_"+feature.getVersionedIdentifier()) == null) { //$NON-NLS-1$

-				UpdateCore.log(NLS.bind("SiteFile.featureNotRemoved", (new String[] { feature.getVersionedIdentifier().toString() })), null); //$NON-NLS-1$ //$NON-NLS-2$

+				UpdateCore.log(NLS.bind(Messages.SiteFile_featureNotRemoved, (new String[] { feature.getVersionedIdentifier().toString() })), null);

 			} else {

 				// remove the feature content

 				ContentReference[] references = feature.getFeatureContentProvider().getFeatureEntryArchiveReferences(monitor);

@@ -178,7 +178,7 @@
 						if (monitor != null)

 							monitor.worked(1);

 					} catch (IOException e) {

-						throw Utilities.newCoreException(NLS.bind("SiteFile.CannotRemoveFeature", (new String[] { feature.getVersionedIdentifier().getIdentifier(), getURL().toExternalForm() })), e);	//$NON-NLS-1$

+						throw Utilities.newCoreException(NLS.bind(Messages.SiteFile_CannotRemoveFeature, (new String[] { feature.getVersionedIdentifier().getIdentifier(), getURL().toExternalForm() })), e);

 					}

 				}

 				InstallRegistry.unregisterFeature(feature);

@@ -227,9 +227,9 @@
 				newException = t;

 			}

 			if (originalException != null) // original exception wins

-				throw Utilities.newCoreException(NLS.bind("InstallHandler.error", (new String[] { feature.getLabel() })), originalException); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InstallHandler_error, (new String[] { feature.getLabel() })), originalException);

 			if (newException != null)

-				throw Utilities.newCoreException(NLS.bind("InstallHandler.error", (new String[] { feature.getLabel() })), newException);//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.InstallHandler_error, (new String[] { feature.getLabel() })), newException);

 		}

 	}

 

@@ -357,7 +357,7 @@
 			return;

 			

 		if (InstallRegistry.getInstance().get("plugin_"+pluginEntry.getVersionedIdentifier()) == null) { //$NON-NLS-1$

-			UpdateCore.log(NLS.bind("SiteFile.pluginNotRemoved", (new String[] { pluginEntry.getVersionedIdentifier().toString() })), null); //$NON-NLS-1$ //$NON-NLS-2$

+			UpdateCore.log(NLS.bind(Messages.SiteFile_pluginNotRemoved, (new String[] { pluginEntry.getVersionedIdentifier().toString() })), null);

 			return; 

 		}

 

@@ -368,7 +368,7 @@
 				if (monitor != null)

 					monitor.worked(1);

 			} catch (IOException e) {

-				throw Utilities.newCoreException(NLS.bind("SiteFile.CannotRemovePlugin", (new String[] { pluginEntry.getVersionedIdentifier().toString(), getURL().toExternalForm() })), e);//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFile_CannotRemovePlugin, (new String[] { pluginEntry.getVersionedIdentifier().toString(), getURL().toExternalForm() })), e);

 			}

 		}

 		pluginEntries.remove(pluginEntry);

@@ -395,7 +395,7 @@
 					recoveryLog.appendPath(ErrorRecoveryLog.FEATURE_ENTRY, references[i].asFile().getAbsolutePath());

 				} catch (IOException e) {

 					String id = UpdateCore.getPlugin().getBundle().getSymbolicName();

-					throw Utilities.newCoreException(NLS.bind("SiteFile.CannotRemoveFeature", (new String[] { feature.getVersionedIdentifier().getIdentifier(), getURL().toExternalForm() })), e); //$NON-NLS-1$

+					throw Utilities.newCoreException(NLS.bind(Messages.SiteFile_CannotRemoveFeature, (new String[] { feature.getVersionedIdentifier().getIdentifier(), getURL().toExternalForm() })), e);

 				}

 			}

 			// log pluginEntry URL

@@ -406,7 +406,7 @@
 					try {

 						recoveryLog.appendPath(ErrorRecoveryLog.BUNDLE_JAR_ENTRY, references[j].asFile().getAbsolutePath());

 					} catch (IOException e) {

-						throw Utilities.newCoreException(NLS.bind("SiteFile.CannotRemovePlugin", (new String[] { pluginsToRemove[i].getVersionedIdentifier().toString(), getURL().toExternalForm() })), e); //$NON-NLS-1$

+						throw Utilities.newCoreException(NLS.bind(Messages.SiteFile_CannotRemovePlugin, (new String[] { pluginsToRemove[i].getVersionedIdentifier().toString(), getURL().toExternalForm() })), e);

 					}

 				}

 			}

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileContentConsumer.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileContentConsumer.java
index fc2e0b8..d6ffb9e 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileContentConsumer.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileContentConsumer.java
@@ -106,7 +106,7 @@
 			oldPath = featurePath.replace(File.separatorChar, '/');

 			File localFile = new File(oldPath);

 			if (localFile.exists()) {

-				throw Utilities.newCoreException(NLS.bind("UpdateManagerUtils.FileAlreadyExists", (new Object[] { localFile })), null); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.UpdateManagerUtils_FileAlreadyExists, (new Object[] { localFile })), null);

 			}

 			featurePath = ErrorRecoveryLog.getLocalRandomIdentifier(featurePath);

 			newPath = featurePath;

@@ -119,7 +119,7 @@
 			UpdateManagerUtils.checkPermissions(contentReference, featurePath); // 20305

 			installedFiles.add(featurePath);

 		} catch (IOException e) {

-			throw Utilities.newCoreException(NLS.bind("GlobalConsumer.ErrorCreatingFile", (new String[] { featurePath })), e); //$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.GlobalConsumer_ErrorCreatingFile, (new String[] { featurePath })), e);

 		} finally {

 			if (inStream != null) {

 				try {

@@ -149,7 +149,7 @@
 			file = new File(getFeaturePath());

 			ref.setURL(file.toURL());

 		} catch (MalformedURLException e) {

-			throw Utilities.newCoreException(NLS.bind("SiteFileContentConsumer.UnableToCreateURLForFile", (new String[] { file.getAbsolutePath() })), e); //$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteFileContentConsumer_UnableToCreateURLForFile, (new String[] { file.getAbsolutePath() })), e);

 		}

 

 		//rename file back 

@@ -166,7 +166,7 @@
 				sucess = fileToRename.renameTo(renamedFile);

 			}

 			if (!sucess) {

-				String msg = NLS.bind("ContentConsumer.UnableToRename", (new String[] { newPath, oldPath })); //$NON-NLS-1$

+				String msg = NLS.bind(Messages.ContentConsumer_UnableToRename, (new String[] { newPath, oldPath }));

 				throw Utilities.newCoreException(msg, new Exception(msg));

 			}

 		}

@@ -223,7 +223,8 @@
 		}

 

 		if (!sucess) {

-			String msg = NLS.bind("Unable to delete", (new String[] { oldPath })); //$NON-NLS-1$

+            //TODO need to NL this

+			String msg = NLS.bind("Unable to delete {0}", (new String[] { oldPath })); //$NON-NLS-1$

 			UpdateCore.log(msg, null);

 		} else {

 			// remove the feature files;

@@ -279,7 +280,7 @@
 	

 				String urlString = (getSite().getURL() != null) ? getSite().getURL().toExternalForm() : "";	//$NON-NLS-1$

 				urlString += Site.DEFAULT_PLUGIN_PATH + pluginEntries[i].toString();

-				throw Utilities.newCoreException(NLS.bind("SiteFile.UnableToCreateURL", (new String[] { urlString })), e);	//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFile_UnableToCreateURL, (new String[] { urlString })), e);

 			}

 		}

 		return;

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileFactory.java
index fa0e398..792c8b1 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileFactory.java
@@ -65,10 +65,10 @@
 					// do not create directory if it doesn't exist	[18318]

 					// instead hrow error					

 					if (parentDirectory != null && !parentDirectory.exists())

-						throw Utilities.newCoreException(NLS.bind("SiteFileFactory.DirectoryDoesNotExist", (new String[] { file.getAbsolutePath() })), null);	//$NON-NLS-1$

+						throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_DirectoryDoesNotExist, (new String[] { file.getAbsolutePath() })), null);

 	

 					if (parentDirectory == null || !parentDirectory.isDirectory())

-						throw Utilities.newCoreException(NLS.bind("SiteFileFactory.UnableToObtainParentDirectory", (new String[] { file.getAbsolutePath() })), null);	//$NON-NLS-1$

+						throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_UnableToObtainParentDirectory, (new String[] { file.getAbsolutePath() })), null);

 	

 					site = parseSite(parentDirectory);

 	

@@ -83,7 +83,7 @@
 			// Do not set read only as may install in it

 			//site.markReadOnly();

 		} catch (MalformedURLException e) {

-			throw Utilities.newCoreException(NLS.bind("SiteFileFactory.UnableToCreateURL", (new String[] { url == null ? "" : url.toExternalForm() })), e);	//$NON-NLS-1$ //$NON-NLS-2$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_UnableToCreateURL, (new String[] { url == null ? "" : url.toExternalForm() })), e);	//$NON-NLS-1$

 		} catch (IOException e) {

 			throw Utilities.newCoreException(Messages.SiteFileFactory_UnableToAccessSite,ISite.SITE_ACCESS_EXCEPTION, e);

 		} finally {

@@ -103,7 +103,7 @@
 		this.site = (SiteFile) createSiteMapModel();

 

 		if (!directory.exists())

-			throw Utilities.newCoreException(NLS.bind("SiteFileFactory.FileDoesNotExist", (new String[] { directory.getAbsolutePath() })), null);//$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_FileDoesNotExist, (new String[] { directory.getAbsolutePath() })), null);

 

 		File pluginPath = new File(directory, Site.DEFAULT_PLUGIN_PATH);

 

@@ -159,7 +159,7 @@
 					}

 				}

 			} catch (MalformedURLException e) {

-				throw Utilities.newCoreException(NLS.bind("SiteFileFactory.UnableToCreateURLForFile", (new String[] { newFilePath })), e);	//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_UnableToCreateURLForFile, (new String[] { newFilePath })), e);

 			}

 		}

 	}

@@ -207,7 +207,7 @@
 					}

 				}

 			} catch (MalformedURLException e) {

-				throw Utilities.newCoreException(NLS.bind("SiteFileFactory.UnableToCreateURLForFile", (new String[] { newFilePath })), e);	//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_UnableToCreateURLForFile, (new String[] { newFilePath })), e);

 			}

 		}

 	}

@@ -254,12 +254,12 @@
 				String pluginFileString = (pluginFile == null)

 						? null

 						: pluginFile.getAbsolutePath();

-				throw Utilities.newCoreException(NLS.bind("SiteFileFactory.ErrorAccessing", (new String[] { pluginFileString })), e); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_ErrorAccessing, (new String[] { pluginFileString })), e);

 			} catch (SAXException e) {

 				String pluginFileString = (pluginFile == null)

 						? null

 						: pluginFile.getAbsolutePath();

-				throw Utilities.newCoreException(NLS.bind("SiteFileFactory.ErrorParsingFile", (new String[] { pluginFileString })), //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_ErrorParsingFile, (new String[] { pluginFileString })),

 						e);

 			} finally {

 				if (in != null){

@@ -304,7 +304,7 @@
 				}

 			}

 		} catch (MalformedURLException e) {

-			throw Utilities.newCoreException(NLS.bind("SiteFileFactory.UnableToCreateURLForFile", (new String[] { location })), e);	//$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_UnableToCreateURLForFile, (new String[] { location })), e);

 		}

 	}

 

@@ -348,14 +348,14 @@
 							.toExternalForm();

 				} catch (IOException ioe) {

 				}

-				throw Utilities.newCoreException(NLS.bind("SiteFileFactory.ErrorAccessing", (new String[] { refString })), e);//$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_ErrorAccessing, (new String[] { refString })), e);

 			} catch (SAXException e) {

 				try {

 					refString = (ref == null) ? null : ref.asURL()

 							.toExternalForm();

 				} catch (IOException ioe) {

 				}

-				throw Utilities.newCoreException(NLS.bind("SiteFileFactory.ErrorParsingFile", (new String[] { refString })), e); //$NON-NLS-1$

+				throw Utilities.newCoreException(NLS.bind(Messages.SiteFileFactory_ErrorParsingFile, (new String[] { refString })), e);

 			} finally {

 				if(in != null){

 					try{

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileNonPluginContentConsumer.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileNonPluginContentConsumer.java
index 4df8594..f53e3cf 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileNonPluginContentConsumer.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFileNonPluginContentConsumer.java
@@ -49,7 +49,7 @@
 			UpdateManagerUtils.copyToLocal(inStream, featurePath, null);

 			UpdateManagerUtils.checkPermissions(contentReference, featurePath); // 20305

 		} catch (IOException e) {

-			throw Utilities.newCoreException(NLS.bind("GlobalConsumer.ErrorCreatingFile", (new String[] { featurePath })), e); //$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.GlobalConsumer_ErrorCreatingFile, (new String[] { featurePath })), e);

 		} finally {

 			if (inStream != null) {

 				try {

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePackedPluginContentConsumer.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePackedPluginContentConsumer.java
index ddb972f..048d333 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePackedPluginContentConsumer.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePackedPluginContentConsumer.java
@@ -53,7 +53,7 @@
 			jarPath = newURL.getFile().replace(File.separatorChar, '/');
 			File jarFile = new File(jarPath);
 			if (jarFile.exists()) {
-				throw Utilities.newCoreException(NLS.bind("UpdateManagerUtils.FileAlreadyExists", (new Object[] { jarFile })), null); //$NON-NLS-1$
+				throw Utilities.newCoreException(NLS.bind(Messages.UpdateManagerUtils_FileAlreadyExists, (new Object[] { jarFile })), null);
 			}
 			// error recovery
 			tempPath= ErrorRecoveryLog.getLocalRandomIdentifier(jarPath+".tmp"); //$NON-NLS-1$
@@ -61,7 +61,7 @@
 			//
 			UpdateManagerUtils.copyToLocal(inStream, tempPath, null);
 		} catch (IOException e) {
-			throw Utilities.newCoreException(NLS.bind("GlobalConsumer.ErrorCreatingFile", (new String[] { tempPath })), e); //$NON-NLS-1$
+			throw Utilities.newCoreException(NLS.bind(Messages.GlobalConsumer_ErrorCreatingFile, (new String[] { tempPath })), e);
 		} finally {
 			if (inStream != null) {
 				try {
@@ -93,7 +93,7 @@
 				sucess = fileToRename.renameTo(renamedFile);
 			}
 			if (!sucess) {
-				String msg = NLS.bind("ContentConsumer.UnableToRename", (new String[] { tempPath, jarPath })); //$NON-NLS-1$
+				String msg = NLS.bind(Messages.ContentConsumer_UnableToRename, (new String[] { tempPath, jarPath }));
 				throw Utilities.newCoreException(msg, new Exception(msg));
 			}
 		}
@@ -126,7 +126,8 @@
 		}
 
 		if (!sucess) {
-			String msg = NLS.bind("Unable to delete", (new String[] { jarPath })); //$NON-NLS-1$
+            //TODO need to translate this
+			String msg = NLS.bind("Unable to delete {0}", (new String[] { jarPath })); //$NON-NLS-1$
 			UpdateCore.log(msg, null);
 		}
 		closed = true;
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePluginContentConsumer.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePluginContentConsumer.java
index 0d2dc22..f3eab08 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePluginContentConsumer.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteFilePluginContentConsumer.java
@@ -75,7 +75,7 @@
 				String originalName = pluginPath.replace(File.separatorChar, '/');

 				File localFile = new File(originalName);

 				if (localFile.exists()) {

-					throw Utilities.newCoreException(NLS.bind("UpdateManagerUtils.FileAlreadyExists", (new Object[] { localFile })), null); //$NON-NLS-1$

+					throw Utilities.newCoreException(NLS.bind(Messages.UpdateManagerUtils_FileAlreadyExists, (new Object[] { localFile })), null);

 				}

 				pluginPath = ErrorRecoveryLog.getLocalRandomIdentifier(pluginPath);

 				renames.put(pluginPath, originalName);

@@ -86,7 +86,7 @@
 			UpdateManagerUtils.checkPermissions(contentReference, pluginPath); // 20305

 			installedFiles.add(pluginPath);

 		} catch (IOException e) {

-			throw Utilities.newCoreException(NLS.bind("GlobalConsumer.ErrorCreatingFile", (new String[] { pluginPath })), e);//$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.GlobalConsumer_ErrorCreatingFile, (new String[] { pluginPath })), e);

 		} finally {

 			if (inStream != null) {

 				try {

@@ -121,7 +121,7 @@
 				sucess = fileToRename.renameTo(renamedFile);

 			}

 			if (!sucess) {

-				String msg = NLS.bind("ContentConsumer.UnableToRename", (new String[] { temporary, original })); //$NON-NLS-1$

+				String msg = NLS.bind(Messages.ContentConsumer_UnableToRename, (new String[] { temporary, original }));

 				throw Utilities.newCoreException(msg, new Exception(msg));

 			}

 		}

@@ -152,7 +152,8 @@
 			File fileToRemove = new File(originalName);

 			if (fileToRemove.exists()) {

 				if(!fileToRemove.delete()){

-					String msg = NLS.bind("Unable to delete", (new String[] { originalName })); //$NON-NLS-1$

+                    //TODO Need to translate this

+					String msg = NLS.bind("Unable to delete {0}", (new String[] { originalName }));

 					UpdateCore.log(msg, null);	

 					success = false;

 				}

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 d964d66..d209a73 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
@@ -63,7 +63,7 @@
 			parseLocalSiteFile(currentPlatformConfiguration, localSite);

 

 		} catch (MalformedURLException exception) {

-			throw Utilities.newCoreException(NLS.bind("SiteLocal.UnableToCreateURLFor", (new String[] { localSite.getLocationURLString() + " & " + CONFIG_FILE })), exception); //$NON-NLS-1$ //$NON-NLS-2$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteLocal_UnableToCreateURLFor, (new String[] { localSite.getLocationURLString() + " & " + CONFIG_FILE })), exception); //$NON-NLS-1$

 		}

 	

 		return localSite;

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteReconciler.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteReconciler.java
index d1a88e6..dec8948 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteReconciler.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteReconciler.java
@@ -43,7 +43,7 @@
 		try {
 			resolvedURL = Platform.resolve(newSiteEntry.getURL());
 		} catch (IOException e) {
-			throw Utilities.newCoreException(NLS.bind("SiteLocal.UnableToResolve", (new String[] { newSiteEntry.getURL().toExternalForm() })), e);	//$NON-NLS-1$
+			throw Utilities.newCoreException(NLS.bind(Messages.SiteLocal_UnableToResolve, (new String[] { newSiteEntry.getURL().toExternalForm() })), e);
 		}
 		return resolvedURL;
 	}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteStatusAnalyzer.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteStatusAnalyzer.java
index 22fb55d..01f8d96 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteStatusAnalyzer.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteStatusAnalyzer.java
@@ -74,7 +74,7 @@
 		if (featureSite == null) {
 			if (UpdateCore.DEBUG && UpdateCore.DEBUG_SHOW_CONFIGURATION)
 				UpdateCore.debug("Cannot determine status of feature:" + feature.getLabel() + ". Site is NULL."); //$NON-NLS-1$ //$NON-NLS-2$
-			String msg = NLS.bind("SiteLocal.UnableToDetermineFeatureStatusSiteNull", (new Object[] { feature.getURL()})); //$NON-NLS-1$
+			String msg = NLS.bind(Messages.SiteLocal_UnableToDetermineFeatureStatusSiteNull, (new Object[] { feature.getURL()}));
 			return createStatus(IStatus.ERROR, IFeature.STATUS_AMBIGUOUS, msg, null);
 		}
 
@@ -83,7 +83,7 @@
 		if (cSite == null) {
 			if (UpdateCore.DEBUG && UpdateCore.DEBUG_SHOW_CONFIGURATION)
 				UpdateCore.warn("Cannot determine status of feature: " + feature.getLabel() + ". Configured Site is NULL."); //$NON-NLS-1$ //$NON-NLS-2$
-			String msg = NLS.bind("SiteLocal.UnableToDetermineFeatureStatusConfiguredSiteNull", (new Object[] { feature.getURL()})); //$NON-NLS-1$
+			String msg = NLS.bind(Messages.SiteLocal_UnableToDetermineFeatureStatusConfiguredSiteNull, (new Object[] { feature.getURL()}));
 			return createStatus(IStatus.ERROR, IFeature.STATUS_AMBIGUOUS, msg, null);
 		}
 
@@ -158,7 +158,7 @@
 						// Unable to find children feature, broken
 						Object featureAsPrintableObject = children[i].getURL();
 						featureAsPrintableObject = children[i].getVersionedIdentifier();
-						String msg1 = NLS.bind("SiteLocal.NestedFeatureUnavailable", (new Object[] { featureAsPrintableObject })); //$NON-NLS-1$
+						String msg1 = NLS.bind(Messages.SiteLocal_NestedFeatureUnavailable, (new Object[] { featureAsPrintableObject }));
 						multiTemp.add(createStatus(IStatus.ERROR, IFeature.STATUS_UNHAPPY, msg1, null));
 						if (IFeature.STATUS_UNHAPPY > code)
 							code = IFeature.STATUS_UNHAPPY;
@@ -169,7 +169,7 @@
 						if (childStatus.getCode() == IFeature.STATUS_DISABLED) {
 							VersionedIdentifier versionID = childFeature.getVersionedIdentifier();
 							String featureVer = (versionID == null) ? "" : versionID.getVersion().toString(); //$NON-NLS-1$
-							String msg1 = NLS.bind("SiteLocal.NestedFeatureDisable", (new String[] { childFeature.getLabel(), featureVer })); //$NON-NLS-1$
+							String msg1 = NLS.bind(Messages.SiteLocal_NestedFeatureDisable, (new String[] { childFeature.getLabel(), featureVer }));
 							multiTemp.add(createStatus(IStatus.ERROR, childStatus.getCode(), msg1, null));
 							if (IFeature.STATUS_UNHAPPY > code)
 								code = IFeature.STATUS_UNHAPPY;
@@ -177,7 +177,7 @@
 						if (childStatus.getSeverity() != IStatus.OK) {
 							VersionedIdentifier versionID = childFeature.getVersionedIdentifier();
 							String featureVer = (versionID == null) ? "" : versionID.getVersion().toString(); //$NON-NLS-1$
-							String msg1 = NLS.bind("SiteLocal.NestedFeatureUnHappy", (new String[] { childFeature.getLabel(), featureVer })); //$NON-NLS-1$
+							String msg1 = NLS.bind(Messages.SiteLocal_NestedFeatureUnHappy, (new String[] { childFeature.getLabel(), featureVer }));
 							multiTemp.add(createStatus(IStatus.ERROR, childStatus.getCode(), msg1, null));
 							if (childStatus.getCode() > code)
 								code = childStatus.getCode();
@@ -245,12 +245,12 @@
 				String msg = null;
 				if (feature == null) {
 					Object[] values = new Object[] {bundles[j].getSymbolicName(), featurePluginID.getVersion(), bundleVersion};
-					msg = NLS.bind("SiteLocal.TwoVersionSamePlugin1", values); //$NON-NLS-1$
+					msg = NLS.bind(Messages.SiteLocal_TwoVersionSamePlugin1, values);
 				} else {
 					String label = feature.getLabel();
 					String featureVersion = feature.getVersionedIdentifier().getVersion().toString();
 					Object[] values = new Object[] { bundles[j].getSymbolicName(), featurePluginID.getVersion(), bundleVersion, label, featureVersion };
-					msg = NLS.bind("SiteLocal.TwoVersionSamePlugin2", values); //$NON-NLS-1$
+					msg = NLS.bind(Messages.SiteLocal_TwoVersionSamePlugin2, values);
 				}
 
 				UpdateCore.warn("Found another version of the same plugin on the path:" + bundles[j].getSymbolicName() + " " + bundleVersion); //$NON-NLS-1$ //$NON-NLS-2$
@@ -271,7 +271,7 @@
 						newMulti.addAll(multi);
 						multi = newMulti;
 					}
-					String msg = NLS.bind("SiteLocal.NoPluginVersion", (new String[] { featurePluginID.getIdentifier() })); //$NON-NLS-1$
+					String msg = NLS.bind(Messages.SiteLocal_NoPluginVersion, (new String[] { featurePluginID.getIdentifier() }));
 					multi.add(createStatus(IStatus.ERROR, IFeature.STATUS_UNHAPPY, msg, null));
 				}
 			}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteTypeFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteTypeFactory.java
index 6fd5469..3baba5c 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteTypeFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteTypeFactory.java
@@ -68,7 +68,7 @@
 		IExtensionRegistry registry = Platform.getExtensionRegistry();

 		IConfigurationElement[] elements = registry.getConfigurationElementsFor(pluginID,SIMPLE_EXTENSION_ID,type);

 		if (elements==null || elements.length==0){

-			throw Utilities.newCoreException(NLS.bind("SiteTypeFactory.UnableToFindSiteFactory", (new String[] { type })),null); //$NON-NLS-1$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteTypeFactory_UnableToFindSiteFactory, (new String[] { type })),null);

 		} else {

 			IConfigurationElement element = elements[0];

 			result = (ISiteFactory)element.createExecutableExtension("class"); //$NON-NLS-1$

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteURLFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteURLFactory.java
index 84412a6..b10d522 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteURLFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SiteURLFactory.java
@@ -70,9 +70,9 @@
 			site.resolve(url, url);

 			site.markReadOnly();

 		} catch (MalformedURLException e) {

-			throw Utilities.newCoreException(NLS.bind("SiteURLFactory.UnableToCreateURL", (new String[] { url == null ? "" : url.toExternalForm() })), e);	//$NON-NLS-1$ //$NON-NLS-2$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteURLFactory_UnableToCreateURL, (new String[] { url == null ? "" : url.toExternalForm() })), e);

 		} catch (IOException e) {

-			throw Utilities.newCoreException(NLS.bind("SiteURLFactory.UnableToAccessSiteStream", (new String[] { url == null ? "" : url.toExternalForm() })), ISite.SITE_ACCESS_EXCEPTION, e);	//$NON-NLS-1$ //$NON-NLS-2$

+			throw Utilities.newCoreException(NLS.bind(Messages.SiteURLFactory_UnableToAccessSiteStream, (new String[] { url == null ? "" : url.toExternalForm() })), ISite.SITE_ACCESS_EXCEPTION, e);	//$NON-NLS-1$

 		} finally {

 			if (siteStream != null) {

 				try {

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/TargetFeature.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/TargetFeature.java
index abae29b..9617422 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/TargetFeature.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/TargetFeature.java
@@ -45,7 +45,7 @@
 	 */
 	public IFeatureContentConsumer getFeatureContentConsumer() throws CoreException {
 		if (this.contentConsumer == null) {
-			throw Utilities.newCoreException( NLS.bind("Feature.NoFeatureContentConsumer", (new String[] { getURL().toExternalForm() })), null); //$NON-NLS-1$
+			throw Utilities.newCoreException( NLS.bind(Messages.Feature_NoFeatureContentConsumer, (new String[] { getURL().toExternalForm() })), null);
 		}
 		return contentConsumer;
 	}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java
index 8ca7e77..2324ba5 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java
@@ -282,7 +282,7 @@
 		}

 

 		if (!file.delete()) {

-			String msg = NLS.bind("UpdateManagerUtils.UnableToRemoveFile", (new String[] { file.getAbsolutePath() }));	//$NON-NLS-1$ //$NON-NLS-2$

+			String msg = NLS.bind(Messages.UpdateManagerUtils_UnableToRemoveFile, (new String[] { file.getAbsolutePath() }));

 			UpdateCore.log(msg, new Exception());

 		}

 	}

@@ -302,7 +302,7 @@
 			}

 		}

 		if (!file.delete()) {

-			String msg = NLS.bind("UpdateManagerUtils.UnableToRemoveFile", (new String[] { file.getAbsolutePath() }));	//$NON-NLS-1$ //$NON-NLS-2$

+			String msg = NLS.bind(Messages.UpdateManagerUtils_UnableToRemoveFile, (new String[] { file.getAbsolutePath() }));

 			UpdateCore.log(msg, new Exception());

 		}

 	}

@@ -521,7 +521,7 @@
 

 			if (result != IStatusCodes.HTTP_OK) {

 				String serverMsg = response.getStatusMessage();

-				throw new IOException(NLS.bind("ContentReference.HttpNok", (new Object[] { new Integer(result), serverMsg, url }))); //$NON-NLS-1$						

+				throw new IOException(NLS.bind(Messages.ContentReference_HttpNok, (new Object[] { new Integer(result), serverMsg, url })));						

 			}

 	}

 

@@ -871,7 +871,7 @@
 			if (nextIncrement > 0 && monitor != null)

 				monitor.incrementCount(nextIncrement);

 			if(expectedLength>0 && offset!=expectedLength)

-				throw new IOException(NLS.bind("UpdateManagerUtils.inputStreamEnded", (new String[] { String.valueOf(offset), String.valueOf(expectedLength) }))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

+				throw new IOException(NLS.bind(Messages.UpdateManagerUtils_inputStreamEnded, (new String[] { String.valueOf(offset), String.valueOf(expectedLength) })));

 			return -1;

 		} catch(IOException e){

 			// Log the actual error, as this is no longer

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 8fe5536..49a6aaf 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
@@ -266,6 +266,8 @@
 InstallLogParser_errors = Errors generated while parsing installation history file.
 SiteLocal_cloneConfig=Error clonning current configuration.
 
+UninstallCommand_featureNotInstalledByUM=Feature not installed by Update Manager: {0}
+
 UpdateManagerUtils_inputStreamEnded=InputStream ended after {0} bytes (expected {1} )
 UpdateSearchRequest_loadingPolicy=Loading update policy ...
 UpdateManagerUtils_copy=UpdateManagerUtils copy() at offset:
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationModel.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationModel.java
index 5ee5837..5ae9a15 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationModel.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationModel.java
@@ -244,9 +244,9 @@
 				new InstallConfigurationParser(platformConfig, this);
 			} catch (FileNotFoundException exception) {
 				UpdateCore.warn(locationURLString + " does not exist, The local site is not in synch with the file system and is pointing to a file that doesn't exist.", exception); //$NON-NLS-1$
-				throw Utilities.newCoreException(NLS.bind("InstallConfiguration.ErrorDuringFileAccess", (new String[] { locationURLString })), exception); //$NON-NLS-1$
+				throw Utilities.newCoreException(NLS.bind(Messages.InstallConfiguration_ErrorDuringFileAccess, (new String[] { locationURLString })), exception);
 			} catch (IOException exception) {
-				throw Utilities.newCoreException(NLS.bind("InstallConfiguration.ErrorDuringFileAccess", (new String[] { locationURLString })), exception); //$NON-NLS-1$
+				throw Utilities.newCoreException(NLS.bind(Messages.InstallConfiguration_ErrorDuringFileAccess, (new String[] { locationURLString })), exception);
 			}
 			
 		} catch (CoreException e) {
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/DuplicateConflictsValidator.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/DuplicateConflictsValidator.java
index e1728aa..8b15114 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/DuplicateConflictsValidator.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/DuplicateConflictsValidator.java
@@ -16,6 +16,7 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.update.configuration.*;
 import org.eclipse.update.core.*;
+import org.eclipse.update.internal.core.Messages;
 import org.eclipse.update.operations.*;
 
 
@@ -24,9 +25,6 @@
  */
 public class DuplicateConflictsValidator  {
 
-	private static final String KEY_CONFLICT =
-		"DuplicateConflictsDialog.conflict"; //$NON-NLS-1$
-
 	public static class IdEntry {
 		IConfiguredSite csite;
 		IFeature feature;
@@ -64,7 +62,7 @@
 			String version =
 				feature.getVersionedIdentifier().getVersion().toString();
 			String location = configSite.getSite().getURL().getFile();
-			return NLS.bind(KEY_CONFLICT, (new String[] { version, location }));
+			return NLS.bind(Messages.DuplicateConflictsDialog_conflict, (new String[] { version, location }));
 		}
 	}
 
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/InstallOperation.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/InstallOperation.java
index 9f01aa2..97fdb3c 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/InstallOperation.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/InstallOperation.java
@@ -16,6 +16,7 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.update.configuration.*;
 import org.eclipse.update.core.*;
+import org.eclipse.update.internal.core.Messages;
 import org.eclipse.update.operations.*;
 
 /**
@@ -25,8 +26,6 @@
 public class InstallOperation
 	extends FeatureOperation
 	implements IInstallFeatureOperation {
-	private static final String KEY_OLD = "OperationsManager.error.old"; //$NON-NLS-1$
-
 	private IFeatureReference[] optionalFeatures;
 	private IFeature[] unconfiguredOptionalFeatures;
 	private IVerificationListener verifier;
@@ -85,7 +84,7 @@
 					if (!UpdateUtils.isNestedChild(config, oldFeature)) {
 						// "eat" the error if nested child
 						String message =
-							NLS.bind(KEY_OLD, (new String[] { oldFeature.getLabel() }));
+							NLS.bind(Messages.OperationsManager_error_old, (new String[] { oldFeature.getLabel() }));
 						IStatus status =
 							new Status(
 								IStatus.ERROR,
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/OperationValidator.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/OperationValidator.java
index 7f50843..36a4296 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/OperationValidator.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/OperationValidator.java
@@ -391,7 +391,7 @@
 		IConfiguredSite csite = feature.getSite().getCurrentConfiguredSite();
 		if (csite != null && !csite.isUpdatable())
 			status.add(createStatus(feature, FeatureStatus.CODE_OTHER,
-					NLS.bind("ActivityConstraints.readOnly", (new String[] { csite.getSite().getURL().toExternalForm() }))));
+					NLS.bind(Messages.ActivityConstraints_readOnly, (new String[] { csite.getSite().getURL().toExternalForm() }))));
 	}
 
 	/*
@@ -629,7 +629,7 @@
 		
 		// check for <includes> cycle
 		if (candidates.contains(feature)) {
-			String msg = NLS.bind("ActivityConstraints.cycle", (new String[] {feature.getLabel(), 
+			String msg = NLS.bind(Messages.ActivityConstraints_cycle, (new String[] {feature.getLabel(), 
             feature.getVersionedIdentifier().toString()}));
 			IStatus status = createStatus(feature, FeatureStatus.CODE_CYCLE, msg);
 			throw new CoreException(status);
@@ -885,30 +885,30 @@
 							? FeatureStatus.CODE_PREREQ_FEATURE
 							: FeatureStatus.CODE_PREREQ_PLUGIN;
 					String msg =
-						NLS.bind("ActivityConstraints.prereq", (new String[] { target, id }));
+						NLS.bind(Messages.ActivityConstraints_prereq, (new String[] { target, id }));
 
 					if (!ignoreVersion) {
 						if (rule == IImport.RULE_PERFECT)
 							msg =
-								NLS.bind("ActivityConstraints.prereqPerfect", (new String[] {
+								NLS.bind(Messages.ActivityConstraints_prereqPerfect, (new String[] {
                                 target,
                                 id,
                                 version.toString()}));
 						else if (rule == IImport.RULE_EQUIVALENT)
 							msg =
-								NLS.bind("ActivityConstraints.prereqEquivalent", (new String[] {
+								NLS.bind(Messages.ActivityConstraints_prereqEquivalent, (new String[] {
                                 target,
                                 id,
                                 version.toString()}));
 						else if (rule == IImport.RULE_COMPATIBLE)
 							msg =
-								NLS.bind("ActivityConstraints.prereqCompatible", (new String[] {
+								NLS.bind(Messages.ActivityConstraints_prereqCompatible, (new String[] {
                                 target,
                                 id,
                                 version.toString()}));
 						else if (rule == IImport.RULE_GREATER_OR_EQUAL)
 							msg =
-								NLS.bind("ActivityConstraints.prereqGreaterOrEqual", (new String[] {
+								NLS.bind(Messages.ActivityConstraints_prereqGreaterOrEqual, (new String[] {
                                 target,
                                 id,
                                 version.toString()}));
@@ -1123,7 +1123,7 @@
 			PluginVersionIdentifier version =
 				feature.getVersionedIdentifier().getVersion();
 			fullMessage =
-				NLS.bind("ActivityConstraints.childMessage", (new String[] {
+				NLS.bind(Messages.ActivityConstraints_childMessage, (new String[] {
                 feature.getLabel(),
                 version.toString(),
                 message }));
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/UninstallOperation.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/UninstallOperation.java
index f831f69..7b254c7 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/UninstallOperation.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/operations/UninstallOperation.java
@@ -14,6 +14,7 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.update.configuration.*;
 import org.eclipse.update.core.*;
+import org.eclipse.update.internal.core.Messages;
 import org.eclipse.update.operations.*;
 
 /**
@@ -46,13 +47,13 @@
 				if (unconfigure(feature, targetSite))
 					restartNeeded = true;
 				else
-					throw Utilities.newCoreException(NLS.bind("OperationsManager.error.uninstall", (new String[] { feature.getVersionedIdentifier().toString() })), null); //$NON-NLS-1$
+					throw Utilities.newCoreException(NLS.bind(Messages.OperationsManager_error_uninstall, (new String[] { feature.getVersionedIdentifier().toString() })), null);
 			}
 			targetSite.remove(feature, pm);
 		} else {
 			// we should do something here
 			String message =
-				NLS.bind("OperationsManager.error.uninstall", (new String[] { feature.getLabel() }));
+				NLS.bind(Messages.OperationsManager_error_uninstall, (new String[] { feature.getLabel() }));
 			IStatus status =
 				new Status(
 					IStatus.ERROR,
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatePolicy.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatePolicy.java
index 4a19a15..2b20e81 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatePolicy.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatePolicy.java
@@ -108,7 +108,7 @@
 			loaded = true;
 		} catch (IOException e) {
 			throw Utilities.newCoreException(
-				NLS.bind("SiteURLFactory.UnableToAccessSiteStream", (new String[] { mapFile == null ? "" : mapFile.toExternalForm() })), //$NON-NLS-1$
+				NLS.bind(Messages.SiteURLFactory_UnableToAccessSiteStream, (new String[] { mapFile == null ? "" : mapFile.toExternalForm() })), //$NON-NLS-1$
 				ISite.SITE_ACCESS_EXCEPTION,
 				e);
 		} catch (SAXException e) {
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerificationResult.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerificationResult.java
index d0e1820..35fe977 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerificationResult.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerificationResult.java
@@ -188,14 +188,14 @@
 		StringBuffer strb = new StringBuffer();
 		strb.append(issuerString(certIssuer.getSubjectDN()));
 		strb.append("\r\n"); //$NON-NLS-1$
-		strb.append(NLS.bind("JarVerificationResult.ValidBetween", (new String[] { dateString(certIssuer.getNotBefore()), dateString(certIssuer.getNotAfter()) }))); //$NON-NLS-1$
+		strb.append(NLS.bind(Messages.JarVerificationResult_ValidBetween, (new String[] { dateString(certIssuer.getNotBefore()), dateString(certIssuer.getNotAfter()) })));
 		strb.append(checkValidity(certIssuer));
 		signerInfo = strb.toString();
 		if (certIssuer != null && !certIssuer.equals(certRoot)) {
 			strb = new StringBuffer();	
 			strb.append(issuerString(certIssuer.getIssuerDN()));
 			strb.append("\r\n"); //$NON-NLS-1$
-			strb.append(NLS.bind("JarVerificationResult.ValidBetween", (new String[] { dateString(certRoot.getNotBefore()), dateString(certRoot.getNotAfter()) }))); //$NON-NLS-1$ 
+			strb.append(NLS.bind(Messages.JarVerificationResult_ValidBetween, (new String[] { dateString(certRoot.getNotBefore()), dateString(certRoot.getNotAfter()) }))); 
 			strb.append(checkValidity(certRoot));
 			verifierInfo = strb.toString();
 		}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerifier.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerifier.java
index 962c3e6..0273169 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerifier.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/security/JarVerifier.java
@@ -71,11 +71,11 @@
 						keystore = KeyStore.getInstance(handle.getType());
 						keystore.load(in, null); // no password
 					} catch (NoSuchAlgorithmException e) {
-						throw Utilities.newCoreException(NLS.bind("JarVerifier.UnableToFindEncryption", (new String[] { handle.getLocation().toExternalForm() })), e); //$NON-NLS-1$
+						throw Utilities.newCoreException(NLS.bind(Messages.JarVerifier_UnableToFindEncryption, (new String[] { handle.getLocation().toExternalForm() })), e);
 					} catch (CertificateException e) {
-						throw Utilities.newCoreException(NLS.bind("JarVerifier.UnableToLoadCertificate", (new String[] { handle.getLocation().toExternalForm() })), e); //$NON-NLS-1$
+						throw Utilities.newCoreException(NLS.bind(Messages.JarVerifier_UnableToLoadCertificate, (new String[] { handle.getLocation().toExternalForm() })), e);
 					} catch (KeyStoreException e) {
-						throw Utilities.newCoreException(NLS.bind("JarVerifier.UnableToFindProviderForKeystore", (new String[] { handle.getType() })), e); //$NON-NLS-1$
+						throw Utilities.newCoreException(NLS.bind(Messages.JarVerifier_UnableToFindProviderForKeystore, (new String[] { handle.getType() })), e);
 					} finally {
 						if (in != null) {
 							try {
@@ -131,9 +131,9 @@
 					}
 				}
 			} catch (ZipException e){
-				throw Utilities.newCoreException(NLS.bind("JarVerifier.InvalidJar", (new String[] { jarReference.toString() })), e); //$NON-NLS-1$				
+				throw Utilities.newCoreException(NLS.bind(Messages.JarVerifier_InvalidJar, (new String[] { jarReference.toString() })), e);				
 			} catch (IOException e) {
-				throw Utilities.newCoreException(NLS.bind("JarVerifier.UnableToAccessJar", (new String[] { jarReference.toString() })), e); //$NON-NLS-1$
+				throw Utilities.newCoreException(NLS.bind(Messages.JarVerifier_UnableToAccessJar, (new String[] { jarReference.toString() })), e);
 			}
 		}
 
@@ -177,7 +177,7 @@
 		JarEntry currentEntry = null;
 		InputStream in = null;
 		if (monitor != null)
-			monitor.setTaskName(NLS.bind("JarVerifier.Verify", (new String[] { identifier == null ? jarFile.getName(): identifier }))); //$NON-NLS-1$ 
+			monitor.setTaskName(NLS.bind(Messages.JarVerifier_Verify, (new String[] { identifier == null ? jarFile.getName(): identifier }))); 
 
 		try {
 			while (entries.hasMoreElements()) {
@@ -356,7 +356,7 @@
 				else
 					result.setVerificationCode(IVerificationResult.TYPE_ENTRY_NOT_SIGNED);
 			} else {
-				Exception e = new Exception(NLS.bind("JarVerifier.InvalidFile", (new String[] { file }))); //$NON-NLS-1$
+				Exception e = new Exception(NLS.bind(Messages.JarVerifier_InvalidFile, (new String[] { file })));
 				result.setResultException(e);
 				result.setVerificationCode(IVerificationResult.TYPE_ENTRY_NOT_SIGNED);
 				UpdateCore.warn(null,e);
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java
index d1ae121..58cadc8 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/DisableCommand.java
@@ -71,7 +71,7 @@
 			IFeature[] features =
 				UpdateUtils.searchSite(featureId, targetSite, true);
 			if (features == null || features.length == 0) {
-				throw new Exception(NLS.bind("Standalone.noFeatures3", (new String[] { featureId }))); //$NON-NLS-1$
+				throw new Exception(NLS.bind(Messages.Standalone_noFeatures3, (new String[] { featureId })));
 			}
 			if (version == null || version.trim().length() == 0)
 				feature = features[0]; // pick the first feature
@@ -87,7 +87,7 @@
 					}
 				}
 			if (feature == null) {
-				throw new Exception(NLS.bind("Standalone.noFeatures4", (new String[] { featureId, version }))); //$NON-NLS-1$
+				throw new Exception(NLS.bind(Messages.Standalone_noFeatures4, (new String[] { featureId, version })));
 			}
 
 		} catch (MalformedURLException e) {
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java
index f0318e7..5aabf4b 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/EnableCommand.java
@@ -71,7 +71,7 @@
 			IFeature[] features =
 				UpdateUtils.searchSite(featureId, targetSite, false);
 			if (features == null || features.length == 0) {
-				throw new Exception(NLS.bind("Standalone.noFeatures1", (new String[] { featureId }))); //$NON-NLS-1$
+				throw new Exception(NLS.bind(Messages.Standalone_noFeatures1, (new String[] { featureId })));
 			}
 			if (version == null || version.trim().length() == 0)
 				feature = features[0]; // pick the first feature
@@ -88,7 +88,7 @@
 					}
 				}
 			if (feature == null) {
-				throw new Exception(NLS.bind("Standalone.noFeatures2", (new String[] { featureId, version }))); //$NON-NLS-1$
+				throw new Exception(NLS.bind(Messages.Standalone_noFeatures2, (new String[] { featureId, version })));
 			}
 
 		} catch (MalformedURLException e) {
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java
index 94c9197..310014b 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/StandaloneUpdateApplication.java
@@ -40,21 +40,21 @@
 			CmdLineArgs cmdLineArgs = new CmdLineArgs(params);
 			ScriptedCommand cmd = cmdLineArgs.getCommand();
 			if (cmd == null) {
-				System.out.println(NLS.bind("Standalone.cmdFailed", (new String[] { Platform.getLogFileLocation().toOSString() }))); //$NON-NLS-1$
+				System.out.println(NLS.bind(Messages.Standalone_cmdFailed, (new String[] { Platform.getLogFileLocation().toOSString() })));
 				return EXIT_ERROR;
 			}
 			loggedException = false;
 			boolean result = cmd.run();
 			if (result) {
 				if (loggedException) {
-					System.out.println(NLS.bind("Standalone.cmdCompleteWithErrors", (new String[] { Platform.getLogFileLocation().toOSString() })));//$NON-NLS-1$
+					System.out.println(NLS.bind(Messages.Standalone_cmdCompleteWithErrors, (new String[] { Platform.getLogFileLocation().toOSString() })));
 				} else {
 					System.out.println(Messages.Standalone_cmdOK); 
 				}
 				return IPlatformRunnable.EXIT_OK;
 			} else {
 				if (loggedException) {
-					System.out.println(NLS.bind("Standalone.cmdFailed", (new String[] { Platform.getLogFileLocation().toOSString() }))); //$NON-NLS-1$
+					System.out.println(NLS.bind(Messages.Standalone_cmdFailed, (new String[] { Platform.getLogFileLocation().toOSString() })));
 				} else {
 					System.out.println(Messages.Standalone_cmdFailedNoLog);
 				}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java
index bf25ebc..00b7ec5 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UninstallCommand.java
@@ -71,7 +71,7 @@
 			IFeature[] features =
 				UpdateUtils.searchSite(featureId, targetSite, false);
 			if (features == null || features.length == 0) {
-				throw new Exception(NLS.bind("Standalone.noFeatures1", (new String[] { featureId }))); //$NON-NLS-1$
+				throw new Exception(NLS.bind(Messages.Standalone_noFeatures1, (new String[] { featureId })));
 			}
 			if (version == null || version.trim().length() == 0)
 				feature = features[0]; // pick the first feature
@@ -88,7 +88,7 @@
 					}
 				}
 			if (feature == null) {
-				throw new Exception(NLS.bind("Standalone.noFeatures2", (new String[] { featureId, version }))); //$NON-NLS-1$
+				throw new Exception(NLS.bind(Messages.Standalone_noFeatures2, (new String[] { featureId, version })));
 			}
 
 		} catch (MalformedURLException e) {
@@ -109,7 +109,7 @@
 		}
 		if (InstallRegistry.getInstance().get("feature_"+ feature.getVersionedIdentifier()) == null) { //$NON-NLS-1$
 			StandaloneUpdateApplication.exceptionLogged();
-			UpdateCore.log(Utilities.newCoreException(NLS.bind("UninstallCommand.featureNotInstalledByUM", (new String[] { feature.toString() })),null)); //$NON-NLS-1$ //$NON-NLS-2$
+			UpdateCore.log(Utilities.newCoreException(NLS.bind(Messages.UninstallCommand_featureNotInstalledByUM, (new String[] { feature.toString() })),null));
 			return false;
 		}
 							
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java
index cdcd540..174cba3 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/standalone/UpdateCommand.java
@@ -72,12 +72,12 @@
 						getConfiguration(),
 						featureId);
 				if (targetSite == null) {
-					throw new Exception(NLS.bind("Standalone.noConfigSiteForFeature", (new String[] { featureId }))); //$NON-NLS-1$
+					throw new Exception(NLS.bind(Messages.Standalone_noConfigSiteForFeature, (new String[] { featureId })));
 				}
 				IFeature[] currentFeatures =
 					UpdateUtils.searchSite(featureId, targetSite, true);
 				if (currentFeatures == null || currentFeatures.length == 0) {
-					throw new Exception(NLS.bind("Standalone.noFeatures3", (new String[] { featureId }))); //$NON-NLS-1$
+					throw new Exception(NLS.bind(Messages.Standalone_noFeatures3, (new String[] { featureId })));
 				}
 				this.currentFeature = currentFeatures[0];
 			} else {
@@ -129,7 +129,7 @@
 			IInstallFeatureOperation[] operations = collector.getOperations();
 			if (operations == null || operations.length == 0) {
 				StandaloneUpdateApplication.exceptionLogged();
-				UpdateCore.log(Utilities.newCoreException(NLS.bind("Standalone.noUpdate", (new String[] { featureId })),	null));  //$NON-NLS-1$
+				UpdateCore.log(Utilities.newCoreException(NLS.bind(Messages.Standalone_noUpdate, (new String[] { featureId })),	null));
 				return false;
 			}
 
@@ -169,7 +169,7 @@
 				StandaloneUpdateApplication.exceptionLogged();
 				UpdateCore.log(
 					Utilities.newCoreException(
-							NLS.bind("Standalone.noUpdate", (new String[] { featureId })),  //$NON-NLS-1$
+							NLS.bind(Messages.Standalone_noUpdate, (new String[] { featureId })),
 						e));
 				return false;
 			}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java
index ab5c762..38d4671 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java
@@ -134,7 +134,7 @@
 		try {

 			if (monitor==null) monitor = new NullProgressMonitor();

 			monitor.beginTask("", 2); //$NON-NLS-1$

-			monitor.subTask(NLS.bind("SiteBookmark.connecting", url.toString())); //$NON-NLS-1$

+			monitor.subTask(NLS.bind(UpdateUIMessages.SiteBookmark_connecting, url.toString()));

 			site = SiteManager.getSite(url, useCache, new SubProgressMonitor(monitor, 1));

 			if (site!=null) {

 				createCatalog(new SubProgressMonitor(monitor, 1));

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java
index e6d47b1..017ccf7 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java
@@ -216,7 +216,7 @@
 				try {
 					IFeature feature = ((IFeatureAdapter) obj).getFeature(null);
 					if (feature instanceof MissingFeature) {
-						return NLS.bind("ConfigurationView.missingFeature", feature.getLabel());
+						return NLS.bind(UpdateUIMessages.ConfigurationView_missingFeature, feature.getLabel());
 					}
 					String version =
 						feature
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/SiteStateAction.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/SiteStateAction.java
index 4872ea4..bf5f006 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/SiteStateAction.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/SiteStateAction.java
@@ -68,8 +68,8 @@
 
 	private boolean confirm(boolean newState) {
 		String name = site.getSite().getURL().toString();
-		String enableMessage = NLS.bind("SiteStateAction.enableMessage", name); //$NON-NLS-1$ //$NON-NLS-2$
-		String disableMessage = NLS.bind("SiteStateAction.disableMessage", name); //$NON-NLS-1$ //$NON-NLS-2$
+		String enableMessage = NLS.bind(UpdateUIMessages.SiteStateAction_enableMessage, name);
+		String disableMessage = NLS.bind(UpdateUIMessages.SiteStateAction_disableMessage, name);
 
 		String message = newState ? enableMessage : disableMessage;
 		return MessageDialog.openConfirm(shell, UpdateUIMessages.SiteStateAction_dialogTitle, message); 
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java
index 0f398e9..9943224 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java
@@ -73,7 +73,7 @@
 		data = new GridData(GridData.FILL_HORIZONTAL);
 		data.horizontalSpan = 2;
 		text.setLayoutData(data);
-		text.setText(NLS.bind("MirrorsDialog.text", siteName));
+		text.setText(NLS.bind(UpdateUIMessages.MirrorsDialog_text, siteName));
 		text.setBackground(parent.getBackground());
 		text.setEditable(false);
 		// the text should not receive focus
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java
index 5420f7f..fb485e6 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java
@@ -9,35 +9,77 @@
  *     IBM Corporation - initial API and implementation

  *******************************************************************************/

 package org.eclipse.update.internal.ui.wizards;

-import java.lang.reflect.*;

-import java.net.*;

-import java.util.*;

+import java.lang.reflect.InvocationTargetException;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashSet;

 

-import org.eclipse.core.runtime.*;

-import org.eclipse.jface.action.*;

-import org.eclipse.jface.dialogs.*;

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.core.runtime.IProgressMonitor;

+import org.eclipse.core.runtime.IStatus;

+import org.eclipse.jface.action.Action;

+import org.eclipse.jface.action.IMenuManager;

 import org.eclipse.jface.dialogs.Dialog;

-import org.eclipse.jface.operation.*;

-import org.eclipse.jface.viewers.*;

+import org.eclipse.jface.dialogs.ErrorDialog;

+import org.eclipse.jface.dialogs.IDialogConstants;

+import org.eclipse.jface.dialogs.IMessageProvider;

+import org.eclipse.jface.operation.IRunnableWithProgress;

+import org.eclipse.jface.viewers.CheckStateChangedEvent;

+import org.eclipse.jface.viewers.ICheckStateListener;

+import org.eclipse.jface.viewers.ISelectionChangedListener;

+import org.eclipse.jface.viewers.ISelectionProvider;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.viewers.ITreeContentProvider;

+import org.eclipse.jface.viewers.SelectionChangedEvent;

+import org.eclipse.jface.viewers.StructuredSelection;

+import org.eclipse.jface.viewers.Viewer;

+import org.eclipse.jface.viewers.ViewerFilter;

 import org.eclipse.osgi.util.NLS;

-import org.eclipse.swt.*;

-import org.eclipse.swt.custom.*;

-import org.eclipse.swt.events.*;

-import org.eclipse.swt.graphics.*;

-import org.eclipse.swt.layout.*;

-import org.eclipse.swt.widgets.*;

-import org.eclipse.ui.*;

-import org.eclipse.ui.dialogs.*;

-import org.eclipse.ui.forms.*;

-import org.eclipse.ui.forms.widgets.*;

-import org.eclipse.update.core.*;

-import org.eclipse.update.internal.core.*;

-import org.eclipse.update.internal.operations.*;

-import org.eclipse.update.internal.ui.*;

-import org.eclipse.update.internal.ui.model.*;

-import org.eclipse.update.internal.ui.parts.*;

-import org.eclipse.update.operations.*;

-import org.eclipse.update.search.*;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.custom.BusyIndicator;

+import org.eclipse.swt.custom.SashForm;

+import org.eclipse.swt.events.SelectionAdapter;

+import org.eclipse.swt.events.SelectionEvent;

+import org.eclipse.swt.graphics.Image;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.Button;

+import org.eclipse.swt.widgets.Composite;

+import org.eclipse.swt.widgets.Control;

+import org.eclipse.swt.widgets.Label;

+import org.eclipse.swt.widgets.Shell;

+import org.eclipse.swt.widgets.TreeItem;

+import org.eclipse.ui.PlatformUI;

+import org.eclipse.ui.dialogs.PropertyDialogAction;

+import org.eclipse.ui.forms.HyperlinkSettings;

+import org.eclipse.ui.forms.widgets.ScrolledFormText;

+import org.eclipse.update.core.ICategory;

+import org.eclipse.update.core.IFeature;

+import org.eclipse.update.core.IFeatureReference;

+import org.eclipse.update.core.ISiteFeatureReference;

+import org.eclipse.update.core.IURLEntry;

+import org.eclipse.update.core.Utilities;

+import org.eclipse.update.core.VersionedIdentifier;

+import org.eclipse.update.internal.core.UpdateCore;

+import org.eclipse.update.internal.core.UpdateManagerUtils;

+import org.eclipse.update.internal.operations.FeatureStatus;

+import org.eclipse.update.internal.operations.UpdateUtils;

+import org.eclipse.update.internal.ui.UpdateUI;

+import org.eclipse.update.internal.ui.UpdateUIImages;

+import org.eclipse.update.internal.ui.UpdateUIMessages;

+import org.eclipse.update.internal.ui.model.FeatureReferenceAdapter;

+import org.eclipse.update.internal.ui.model.SimpleFeatureAdapter;

+import org.eclipse.update.internal.ui.model.SiteBookmark;

+import org.eclipse.update.internal.ui.model.SiteCategory;

+import org.eclipse.update.internal.ui.parts.DefaultContentProvider;

+import org.eclipse.update.internal.ui.parts.SWTUtil;

+import org.eclipse.update.internal.ui.parts.SharedLabelProvider;

+import org.eclipse.update.operations.IInstallFeatureOperation;

+import org.eclipse.update.operations.IUpdateModelChangedListener;

+import org.eclipse.update.operations.OperationsManager;

+import org.eclipse.update.search.IUpdateSearchSite;

+import org.eclipse.update.search.UpdateSearchRequest;

 

 public class ReviewPage	extends BannerPage {

 

@@ -283,7 +325,7 @@
 				if (cycleCandidates == null)

 					cycleCandidates = new ArrayList();

 				if (cycleCandidates.contains(feature))

-					throw Utilities.newCoreException(NLS.bind("InstallWizard.ReviewPage.cycle", feature.getVersionedIdentifier().toString()), null); //$NON-NLS-1$

+					throw Utilities.newCoreException(NLS.bind(UpdateUIMessages.InstallWizard_ReviewPage_cycle, feature.getVersionedIdentifier().toString()), null);

 				else

 					cycleCandidates.add(feature);

 				IFeatureReference[] irefs =

@@ -792,8 +834,8 @@
 		String total = "" + totalCount; //$NON-NLS-1$

 		String selected = "" + checkedCount; //$NON-NLS-1$

 		counterLabel.setText(

-			NLS.bind("InstallWizard.ReviewPage.counter", (new String[] { selected, total })));

-		counterLabel.getParent().layout();

+			NLS.bind(UpdateUIMessages.InstallWizard_ReviewPage_counter, (new String[] { selected, total })));	

+        counterLabel.getParent().layout();

 	}

 

 //	private void handleSelectAll(boolean select) {

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java
index b6b5ccf..d13b465 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java
@@ -254,13 +254,13 @@
 			requiredSpaceLabel.setText(UpdateUIMessages.InstallWizard_TargetPage_unknownSize); 

 		else

 			requiredSpaceLabel.setText(

-				NLS.bind("InstallWizard.TargetPage.size", "" + required)); //$NON-NLS-1$ //$NON-NLS-2$

+				NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_size, "" + required)); //$NON-NLS-1$

 

 		if (available == LocalSystemInfo.SIZE_UNKNOWN)

 			availableSpaceLabel.setText(UpdateUIMessages.InstallWizard_TargetPage_unknownSize); 

 		else

 			availableSpaceLabel.setText(

-				NLS.bind("InstallWizard.TargetPage.size", "" + available)); //$NON-NLS-1$ //$NON-NLS-2$

+				NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_size, "" + available)); //$NON-NLS-1$

 	}

 

 	private long computeRequiredSizeFor(IConfiguredSite site) {

@@ -294,7 +294,7 @@
 				if (patchedFeatureJob != null

 					&& patchedFeatureJob.getTargetSite() != null

 					&& !jobs[i].getTargetSite().equals(patchedFeatureJob.getTargetSite())) {

-					String msg = NLS.bind("InstallWizard.TargetPage.patchError", (new String[] {

+					String msg = NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_patchError, (new String[] {

                     feature.getLabel(),

                     patchedFeatureJob.getFeature().getLabel()}));

 					setErrorMessage(msg);

@@ -305,7 +305,7 @@
 				IFeature patchedFeature = UpdateUtils.getPatchedFeature(feature);

 				if (patchedFeature != null  

 					&& !jobs[i].getTargetSite().equals(patchedFeature.getSite().getCurrentConfiguredSite())) {

-					String msg = NLS.bind("InstallWizard.TargetPage.patchError2", (new String[] {

+					String msg = NLS.bind(UpdateUIMessages.InstallWizard_TargetPage_patchError2, (new String[] {

                     feature.getLabel(),

                     patchedFeature.getLabel(),

                     patchedFeature.getSite().getCurrentConfiguredSite().getSite().getURL().getFile()}));