diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java
index 9c79101..a74e639 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java
@@ -232,12 +232,15 @@
 	}
 	
 	public static IFeature[] getInstalledFeatures(IFeature feature, boolean onlyConfigured) {
+		return getInstalledFeatures(feature.getVersionedIdentifier(), onlyConfigured);
+	}
+	
+	public static IFeature[] getInstalledFeatures(VersionedIdentifier vid, boolean onlyConfigured) {
 		Vector features = new Vector();
 		try {
 			ILocalSite localSite = SiteManager.getLocalSite();
 			IInstallConfiguration config = localSite.getCurrentConfiguration();
 			IConfiguredSite[] isites = config.getConfiguredSites();
-			VersionedIdentifier vid = feature.getVersionedIdentifier();
 			String id = vid.getIdentifier();
 
 			for (int i = 0; i < isites.length; i++) {
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java
index 26bc805..cf7084a 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java
@@ -15,6 +15,7 @@
 import org.eclipse.update.internal.ui.model.*;
 import org.eclipse.update.internal.ui.parts.*;
 import org.eclipse.update.internal.ui.preferences.MainPreferencePage;
+import org.eclipse.update.internal.ui.wizards.FeatureHierarchyElement;
 import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
 
 public class UpdatesSearchCategory extends SearchCategory {
@@ -234,7 +235,7 @@
 						// otherwise it is a broken feature that we 
 						// do not care about.
 						if (ref.isOptional()) {
-							return true;
+							return FeatureHierarchyElement.hasOlderVersion(ref);
 						}
 					}
 				}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/FeatureHierarchyElement.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/FeatureHierarchyElement.java
index 50b255e..15588bd 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/FeatureHierarchyElement.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/FeatureHierarchyElement.java
@@ -328,15 +328,14 @@
 		return null;
 	}
 	
-	private static boolean hasOlderVersion(IFeatureReference newRef) {
+	public static boolean hasOlderVersion(IFeatureReference newRef) {
 		try {
-			IFeature feature = newRef.getFeature();
-			VersionedIdentifier vid = feature.getVersionedIdentifier();
+			VersionedIdentifier vid = newRef.getVersionedIdentifier();
 			PluginVersionIdentifier version = vid.getVersion();
 			String mode = MainPreferencePage.getUpdateVersionsMode();
 
 			IFeature[] allInstalled =
-				UpdateUIPlugin.getInstalledFeatures(feature, false);
+				UpdateUIPlugin.getInstalledFeatures(vid, false);
 			for (int i = 0; i < allInstalled.length; i++) {
 				IFeature candidate = allInstalled[i];
 				PluginVersionIdentifier cversion =
