*** empty log message ***
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
index 07edd17..4b2c986 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
@@ -239,12 +239,12 @@
 BaseNewWizardPage.invalid = Container path is invalid

 

 NewFolderWizardPage.title = Create New Folder

-NewFolderWizardPage.desc = Create a new folder to organize your bookmarks. You can \

+NewFolderWizardPage.desc = You can \

 choose an existing folder as a container or create a new root folder.

 

 NewSearchWizardPage.title = New Feature Search

 NewSearchWizardPage.desc = Create a new search for features. Use folders to organize \

-your search objects

+your search objects.

 NewSearchWizardPage.category = &Category:

 

 NewSiteBookmarkWizardPage.title = New Update Site Bookmark

@@ -407,8 +407,8 @@
 JarVerificationDialog.MayChooseToInstall=You may choose to install the feature or cancel its installation.

 JarVerificationDialog.MayChooseToContinue=You may choose to continue to install the feature or cancel its installation.

 JarVerificationDialog.Install=Install Feature

-JarVerificationDialog.Continue=Continue Installing Feature

-JarVerificationDialog.Cancel=Cancel Feature Installation

+JarVerificationDialog.Continue=Continue

+JarVerificationDialog.Cancel=Cancel

 JarVerificationDialog.KnownCertificate=One of the certificates used to authenticate this {0} was recognized.

 JarVerificationDialog.ProviderKnown=The provider of this {0} has been validated by a trusted third party.

 JarVerificationDialog.Caution=\r\nCaution: \"{0}\" asserts that the content of this feature is safe. \r\nYou should only install this feature if you trust \"{0}\" to make that assertion

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java
index 12bb6cf..55d149a 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java
@@ -38,12 +38,20 @@
 	}
 	public IFeatureAdapter[] getIncludedFeatures() {
 		try {
-			IFeatureReference[] included = getFeature().getIncludedFeatureReferences();
+			IFeatureReference[] included =
+				getFeature().getIncludedFeatureReferences();
 			ConfiguredFeatureAdapter[] result =
 				new ConfiguredFeatureAdapter[included.length];
 			for (int i = 0; i < included.length; i++) {
+				IFeature feature;
+				try {
+					feature = included[i].getFeature();
+				} catch (CoreException e) {
+					feature = new MissingFeature(getSite(), getURL());
+				}
+
 				result[i] =
-					new ConfiguredFeatureAdapter(adapter, included[i].getFeature(), configured);
+					new ConfiguredFeatureAdapter(adapter, feature, configured);
 				result[i].setIncluded(true);
 			}
 			return result;
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 3f45a83..54028af 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
@@ -221,20 +221,21 @@
 		}
 
 		private Object[] getConfiguredFeatures(IConfiguredSiteAdapter adapter) {
-			try {
-				IConfiguredSite csite = adapter.getConfigurationSite();
-				IFeatureReference[] refs = csite.getConfiguredFeatures();
-				ArrayList result = new ArrayList();
-				for (int i = 0; i < refs.length; i++) {
-					IFeature feature = refs[i].getFeature();
-					result.add(
-						new ConfiguredFeatureAdapter(adapter, feature, true));
+			IConfiguredSite csite = adapter.getConfigurationSite();
+			IFeatureReference[] refs = csite.getConfiguredFeatures();
+			ArrayList result = new ArrayList();
+			for (int i = 0; i < refs.length; i++) {
+				IFeatureReference ref = refs[i];
+				IFeature feature;
+				try {
+					feature = ref.getFeature();
+				} catch (CoreException e) {
+					feature = new MissingFeature(ref.getSite(), ref.getURL());
 				}
-				return getRootFeatures(result);
-			} catch (CoreException e) {
-				UpdateUIPlugin.logException(e);
-				return new Object[0];
+				result.add(
+					new ConfiguredFeatureAdapter(adapter, feature, true));
 			}
+			return getRootFeatures(result);
 		}
 
 		private Object[] getAllFeatures(IConfiguredSiteAdapter adapter) {
@@ -289,7 +290,15 @@
 				IFeatureReference[] included =
 					feature.getIncludedFeatureReferences();
 				for (int i = 0; i < included.length; i++) {
-					IFeature childFeature = included[i].getFeature();
+					IFeature childFeature;
+					try {
+						childFeature = included[i].getFeature();
+					} catch (CoreException e) {
+						childFeature =
+							new MissingFeature(
+								included[i].getSite(),
+								included[i].getURL());
+					}
 					children.add(childFeature);
 				}
 			} catch (CoreException e) {
@@ -306,23 +315,17 @@
 					return true;
 			}
 			return false;
-		} /**
-																																	 * @see ITreeContentProvider#getParent(Object)
-																																	 */
+		}
 		public Object getParent(Object child) {
 			return null;
-		} /**
-																																	 * @see ITreeContentProvider#hasChildren(Object)
-																																	 */
+		}
 		public boolean hasChildren(Object parent) {
 			if (parent instanceof ConfiguredFeatureAdapter) {
 				return ((ConfiguredFeatureAdapter) parent)
 					.hasIncludedFeatures();
 			}
 			return true;
-		} /**
-																																	 * @see IStructuredContentProvider#getElements(Object)
-																																	 */
+		}
 		public Object[] getElements(Object input) {
 			return getChildren(input);
 		}
@@ -402,8 +405,11 @@
 			}
 			ILocalSite localSite = getLocalSite();
 			try {
+				IFeature feature = adapter.getFeature();
+				if (feature instanceof MissingFeature)
+					return errorFeatureImage;
 				IStatus status =
-					localSite.getFeatureStatus(adapter.getFeature());
+					localSite.getFeatureStatus(feature);
 				int code = status.getCode();
 				if (configured) {
 					switch (code) {
@@ -862,28 +868,28 @@
 			UpdateUIPlugin.logException(e);
 		}
 	} /**
-																 * @see IInstallConfigurationChangedListener#installSiteAdded(ISite)
-																 */
+																						 * @see IInstallConfigurationChangedListener#installSiteAdded(ISite)
+																						 */
 	public void installSiteAdded(IConfiguredSite csite) {
 		asyncRefresh();
 	} /**
-																 * @see IInstallConfigurationChangedListener#installSiteRemoved(ISite)
-																 */
+																						 * @see IInstallConfigurationChangedListener#installSiteRemoved(ISite)
+																						 */
 	public void installSiteRemoved(IConfiguredSite site) {
 		asyncRefresh();
 	} /**
-																 * @see IConfiguredSiteChangedListener#featureInstalled(IFeature)
-																 */
+																						 * @see IConfiguredSiteChangedListener#featureInstalled(IFeature)
+																						 */
 	public void featureInstalled(IFeature feature) {
 		asyncRefresh();
 	} /**
-																 * @see IConfiguredSiteChangedListener#featureUninstalled(IFeature)
-																 */
+																						 * @see IConfiguredSiteChangedListener#featureUninstalled(IFeature)
+																						 */
 	public void featureRemoved(IFeature feature) {
 		asyncRefresh();
 	} /**
-																 * @see IConfiguredSiteChangedListener#featureUConfigured(IFeature)
-																 */
+																						 * @see IConfiguredSiteChangedListener#featureUConfigured(IFeature)
+																						 */
 	public void featureConfigured(IFeature feature) {
 	};
 	/**
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
index 0c03b06..959dc02 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
@@ -724,17 +724,12 @@
 	}
 
 	private Object[] getSiteCatalog(final SiteBookmark bookmark) {
-		if (!bookmark.isSiteConnected()) {
-			Object[] result = getSiteCatalogWithIndicator(bookmark, true);
-			if (result != null)
-				return result;
-		}
-		if (bookmark.getSite() != null) {
-			Object[] result = getSiteCatalogWithIndicator(bookmark, false);
-			if (result != null)
-				return result;
-		}
-		return new Object[0];
+		Object[] result =
+			getSiteCatalogWithIndicator(bookmark, !bookmark.isSiteConnected());
+		if (result != null)
+			return result;
+		else
+			return new Object[0];
 	}
 
 	private Object[] getSiteCatalogWithIndicator(