cleanup
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 f09aa36..e40d0bc 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
@@ -382,7 +382,7 @@
 					pluginConsumer.store(references[j], subMonitor);

 				}

 

-				InstallRegistry.register("plugin_"+pluginsToInstall[i].getVersionedIdentifier());

+				InstallRegistry.registerPlugin(pluginsToInstall[i]);

 				if (monitor.isCanceled())

 						abort();

 			}

@@ -403,7 +403,7 @@
 					setMonitorTaskName(subMonitor, msg + " " + references[i].getIdentifier());

 					consumer.store(references[i], subMonitor);

 				}

-				InstallRegistry.register("feature_"+getVersionedIdentifier());

+				InstallRegistry.registerFeature(this);

 			} else {

 				monitor.worked(1);

 			}

@@ -490,7 +490,7 @@
 		if (all!=null){

 			for (int i = 0; i < all.length; i++) {
 				if (UpdateManagerUtils.isValidEnvironment(all[i]))

-					list.add((IPluginEntry)all[i]);
+					list.add(all[i]);
 			}

 		}

 		

@@ -955,7 +955,7 @@
 		if (all!=null){

 			for (int i = 0; i < all.length; i++) {

 				if (UpdateManagerUtils.isValidEnvironment(all[i]))

-					list.add((INonPluginEntry)all[i]);

+					list.add(all[i]);

 			}

 		}

 		

@@ -992,7 +992,7 @@
 		if (all!=null){

 			for (int i = 0; i < all.length; i++) {

 				if (UpdateManagerUtils.isValidEnvironment(all[i]))

-					list.add((IImport)all[i]);

+					list.add(all[i]);

 			}

 		}

 		

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java
index 144aefb..c7d371a 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/SiteModelFactory.java
@@ -77,12 +77,9 @@
 				throw new CoreException(status);

 			}

 		} catch (SAXException e) {

-			if (e instanceof SAXException) {

-				SAXException exception = (SAXException) e;

-				// invalid Site type

-				if (exception.getException() instanceof InvalidSiteTypeException) {

-					throw (InvalidSiteTypeException) exception.getException();

-				}

+			// invalid Site type

+			if (e.getException() instanceof InvalidSiteTypeException) {

+				throw (InvalidSiteTypeException) e.getException();

 			}

 

 			throw Utilities.newCoreException(Policy.bind("SiteModelObject.ErrorParsingSiteStream"),e); //$NON-NLS-1$

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 a6e672a..4ab397d 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
@@ -102,7 +102,7 @@
 

 			// obtain the list of plugins

 			IPlatformConfiguration runtimeConfiguration = BootLoader.getCurrentPlatformConfiguration();

-			ConfigurationPolicy configurationPolicy = (ConfigurationPolicy) configSite.getConfigurationPolicy();

+			ConfigurationPolicy configurationPolicy = configSite.getConfigurationPolicy();

 			String[] pluginPath = new String[0];

 			if (configurationPolicy.getPolicy() == IPlatformConfiguration.ISitePolicy.USER_INCLUDE)

 				pluginPath = configurationPolicy.getPluginPath(site, null);

@@ -148,7 +148,7 @@
 

 			// obtain the list of plugins

 			IPlatformConfiguration runtimeConfiguration = BootLoader.getCurrentPlatformConfiguration();

-			ConfigurationPolicy configurationPolicy = (ConfigurationPolicy) configSite.getConfigurationPolicy();

+			ConfigurationPolicy configurationPolicy = configSite.getConfigurationPolicy();

 			String[] pluginPath = new String[0];

 			if (configurationPolicy.getPolicy() == IPlatformConfiguration.ISitePolicy.USER_INCLUDE)

 				pluginPath = configurationPolicy.getPluginPath(site, null);

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallRegistry.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallRegistry.java
index 1d7fc12..47051aa 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallRegistry.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallRegistry.java
@@ -14,9 +14,15 @@
 import java.util.*;
 
 import org.eclipse.core.boot.*;
+import org.eclipse.update.core.*;
 
 /**
- * Keeps track of all the features and plugins installed by Update mgr.
+ * Keeps track of all the features and plugins installed by Update mgr
+ * so they can be uninstalled later.
+ * The info is persisted in the .config/registry file and each entry has a key=key where
+ * for feature this key is feature_<id>_<version> and for plugins
+ * key is plugin_<id>_<version>. Normally, getVersionedIdentifier() will
+ * return <id>_<version>. Eg: feature_org.eclipse.platform_3.0.0
  */
 public class InstallRegistry extends Properties {
 	private File file = null;
@@ -99,26 +105,48 @@
 		}
 		return ret;
 	}
-
+	
 	/**
-	 * Registers an installed feature or plugin so it can be uninstalled later.
-	 * @param name: For feature this is feature_<id>_<version> and for plugins
-	 * it is plugin_<id>_<version>. Normally, getVersionedIdentifier() will
-	 * return <id>_<version>. Eg: feature_org.eclipse.platform_3.0.0
+	 * Registers an installed feature so it can be uninstalled later.
+	 * @param feature feature to register.
 	 */
-	public static synchronized void register(String name) {
+	public static synchronized void registerFeature(IFeature feature) {
+		String name = "feature_"+feature.getVersionedIdentifier();
 		if (InstallRegistry.getInstance().get(name) == null) {
 			InstallRegistry.getInstance().put(name, name);
 			// we save after each registration
 			InstallRegistry.getInstance().save();
 		}
 	}
-
+	
 	/**
-	 * Removes specified name from registry
+	 * Registers an installed feature so it can be uninstalled later.
+	 * @param feature feature to register.
+	 */
+	public static synchronized void registerPlugin(IPluginEntry pluginEntry) {
+		String name = "plugin_"+pluginEntry.getVersionedIdentifier();
+		if (InstallRegistry.getInstance().get(name) == null) {
+			InstallRegistry.getInstance().put(name, name);
+			// we save after each registration
+			InstallRegistry.getInstance().save();
+		}
+	}
+	
+	/**
+	 * Removes specified feature from registry
 	 *
 	 */
-	public static synchronized void unregister(String name) {
+	public static synchronized void unregisterFeature(IFeature feature) {
+		String name = "feature_"+feature.getVersionedIdentifier();
+		InstallRegistry.getInstance().remove(name);
+	}
+	
+	/**
+	 * Removes specified plugin from registry
+	 *
+	 */
+	public static synchronized void unregisterPlugin(IPluginEntry pluginEntry) {
+		String name = "plugin_"+pluginEntry.getVersionedIdentifier();
 		InstallRegistry.getInstance().remove(name);
 	}
 }
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 18395a4..8c8d918 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
@@ -193,11 +193,10 @@
 				//$NON-NLS-1$ //$NON-NLS-2$

 			}

 

-			InvalidSiteTypeException exception = (InvalidSiteTypeException) e;

 			try {

-				if (exception.getNewType() == null)

+				if (e.getNewType() == null)

 					throw e;

-				site = createSite(exception.getNewType(), siteURL, monitor);

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

 			} catch (InvalidSiteTypeException e1) {

 				throw Utilities.newCoreException(Policy.bind("InternalSiteManager.UnableToCreateSiteWithType", e.getNewType(), siteURL.toExternalForm()), e1);

 				//$NON-NLS-1$ //$NON-NLS-2$

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SessionDelta.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SessionDelta.java
index 1e8753d..3e44b56 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SessionDelta.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/SessionDelta.java
@@ -248,7 +248,7 @@
 				IConfiguredSite configSite = null;
 				IFeature featureToConfigure = null;
 				for (int i = 0; i < selected.length; i++) {
-					ref = (IFeatureReference) selected[i];
+					ref = selected[i];
 
 					try {
 						featureToConfigure = ref.getFeature(null);
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 54990fd..d64851f 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
@@ -182,7 +182,7 @@
 						//$NON-NLS-1$

 					}

 				}

-				InstallRegistry.unregister("feature_"+feature.getVersionedIdentifier());

+				InstallRegistry.unregisterFeature(feature);

 			}

 

 			//finds the contentReferences for an IPluginEntry

@@ -381,7 +381,7 @@
 				//$NON-NLS-1$

 			}

 		}

-		InstallRegistry.unregister("plugin_"+pluginEntry.getVersionedIdentifier());

+		InstallRegistry.unregisterPlugin(pluginEntry);

 	}

 

 	/*

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 1acc12b..cfaad17 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
@@ -31,7 +31,7 @@
 	

 		Site site = null;

 		InputStream siteStream = null;

-		SiteModelFactory factory = (SiteModelFactory) this;

+		SiteModelFactory factory = this;

 	

 		try {

 			// if url points to a directory

@@ -123,7 +123,7 @@
 

 		parseInstalledPlugin(pluginPath);

 

-		return (Site) site;

+		return site;

 

 	}

 

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 252ad44..14e3cda 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
@@ -445,7 +445,7 @@
 			((InstallConfiguration) newConfiguration).saveConfigurationFile(isTransient());

 

 			// add to the list			

-			addPreservedInstallConfigurationModel((InstallConfigurationModel) newConfiguration);

+			addPreservedInstallConfigurationModel(newConfiguration);

 		}

 		return newConfiguration;

 	}

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 e0b9f88..20ba2d3 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
@@ -57,7 +57,7 @@
 			// the stream can be null if the user cancels the connection

 			if (siteStream==null) return null;

 

-			SiteModelFactory factory = (SiteModelFactory) this;

+			SiteModelFactory factory = this;

 			site = (Site) factory.parseSite(siteStream);

 	

 			site.setSiteContentProvider(contentProvider);

diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationParser.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationParser.java
index c465fcf..01b4e0a 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationParser.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/model/InstallConfigurationParser.java
@@ -53,8 +53,7 @@
 		parser.setContentHandler(this);
 
 		this.siteStream = siteStream;
-		Assert.isTrue(config instanceof InstallConfigurationModel);
-		this.config = (InstallConfigurationModel) config;
+		this.config = config;
 
 		// DEBUG:		
 		if (UpdateCore.DEBUG && UpdateCore.DEBUG_SHOW_PARSING) {
@@ -181,11 +180,9 @@
 			ref.setURL(url);
 			if (ref != null)
 				if (configured) {
-					(configSite.getConfigurationPolicyModel()).addConfiguredFeatureReference(
-						(FeatureReferenceModel) ref);
+					(configSite.getConfigurationPolicyModel()).addConfiguredFeatureReference(ref);
 				} else
-					(configSite.getConfigurationPolicyModel()).addUnconfiguredFeatureReference(
-						(FeatureReferenceModel) ref);
+					(configSite.getConfigurationPolicyModel()).addUnconfiguredFeatureReference(ref);
 
 			//updateURL
 			String updateURLString = attributes.getValue("updateURL"); //$NON-NLS-1$
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatesSearchCategory.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatesSearchCategory.java
index 1cf6ccf..32b1d66 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatesSearchCategory.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/search/UpdatesSearchCategory.java
@@ -137,7 +137,7 @@
 		public IInstallFeatureOperation getJob() {
 			try {
 				IFeature feature = ref.getFeature(null);
-				return (IInstallFeatureOperation)OperationsManager.getOperationFactory().createInstallOperation(null, null, feature, null, null, null);
+				return OperationsManager.getOperationFactory().createInstallOperation(null, null, feature, null, null, null);
 			} catch (CoreException e) {
 				return null;
 			}
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 9a27a2e..c4dd477 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
@@ -174,9 +174,9 @@
 			CertificatePair[] certs = getRootCertificates();
 			if (certs.length == 0)
 				return;
-			trustedCertificate = (CertificatePair) certs[0];
+			trustedCertificate = certs[0];
 		} else {
-			trustedCertificate = (CertificatePair) getFoundCertificate();
+			trustedCertificate = getFoundCertificate();
 		}
 		certRoot = (X509Certificate) trustedCertificate.getRoot();
 		certIssuer = (X509Certificate) trustedCertificate.getIssuer();
diff --git a/update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/AutomaticUpdatesJob.java b/update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/AutomaticUpdatesJob.java
index 35dd83c..cc92373 100644
--- a/update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/AutomaticUpdatesJob.java
+++ b/update/org.eclipse.update.scheduler/src/org/eclipse/update/internal/scheduler/AutomaticUpdatesJob.java
@@ -51,7 +51,7 @@
 
 	public void accept(IFeature feature) {
 		IInstallFeatureOperation operation =
-			(IInstallFeatureOperation) OperationsManager
+			OperationsManager
 				.getOperationFactory()
 				.createInstallOperation(null, null, feature, null, null, null);
 		updates.add(operation);
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java
index e3ef178..ee6c76e 100644
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java
+++ b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java
@@ -223,7 +223,7 @@
 		FormLabel.paintWrapText(gc, size, getHeadingText(), HMARGIN, VMARGIN);

 		if (headingUnderlineImage != null) {

 			int y =

-				getHeadingHeight((Composite) control)

+				getHeadingHeight(control)

 					- headingUnderlineImage.getBounds().height;

 			gc.drawImage(headingUnderlineImage, 0, y);

 		}

diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/RevertConfigurationWizardPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/RevertConfigurationWizardPage.java
index 5558b8b..1b4b1c5 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/RevertConfigurationWizardPage.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/RevertConfigurationWizardPage.java
@@ -112,8 +112,7 @@
 			public void selectionChanged(SelectionChangedEvent e) {
 				IStructuredSelection ssel =
 					(IStructuredSelection) e.getSelection();
-				activitiesViewer.setInput(
-					((IInstallConfiguration) ssel.getFirstElement()));
+				activitiesViewer.setInput(( ssel.getFirstElement()));
 			}
 		});
 
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 3c675a0..cd78241 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
@@ -459,7 +459,7 @@
 	public void accept(final IFeature feature) {
 		getShell().getDisplay().syncExec(new Runnable() {
 			public void run() {
-				IInstallFeatureOperation job = (IInstallFeatureOperation)OperationsManager.getOperationFactory().createInstallOperation(null, null, feature,null, null, null);
+				IInstallFeatureOperation job = OperationsManager.getOperationFactory().createInstallOperation(null, null, feature,null, null, null);
 				ViewerFilter[] filters = tableViewer.getFilters();
 				boolean visible = true;