*** empty log message ***
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java
index 57d8521..2baae70 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java
@@ -26,14 +26,8 @@
 	}
 	
 	public boolean execute(IProgressMonitor pm) throws CoreException {
-		PendingOperation op =
-			new PendingOperation(
-				getInstallConfiguration(),
-				getTargetSite(),
-				getFeature(),
-				PendingOperation.CONFIGURE);
 
-		IStatus status = UpdateManager.getValidator().validatePendingChange(op);
+		IStatus status = UpdateManager.getValidator().validatePendingConfig(feature);
 		if (status != null) {
 			throw new CoreException(status);
 		}
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java
index 2bc052f..2fcc121 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java
@@ -20,11 +20,23 @@
 public interface IOperationValidator {
 
 	/**
+	 * Called before performing install.
+	 * Returns null when status cannot be reported.
+	 */
+	public IStatus validatePendingInstall(IFeature oldFeature, IFeature newFeature);
+
+	/**
 	 * Called before performing operation.
 	 * Returns null when status cannot be reported.
 	 */
-	public IStatus validatePendingChange(PendingOperation job);
-
+	public IStatus validatePendingConfig(IFeature feature);
+	
+	/**
+	 * Called before performing operation.
+	 * Returns null when status cannot be reported.
+	 */
+	public IStatus validatePendingUnconfig(IFeature feature);
+	
 	/**
 	 * Called before processing a delta.
 	 * Returns null when status cannot be reported.
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java
index ebb345c..0fa0db3 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java
@@ -67,33 +67,49 @@
 	/*
 	 * Called by UI before performing operation
 	 */
-	public IStatus validatePendingChange(PendingOperation job) {
+	public IStatus validatePendingInstall(IFeature oldFeature, IFeature newFeature) {
 		// check initial state
 		ArrayList beforeStatus = new ArrayList();
 		validateInitialState(beforeStatus);
 
 		// check proposed change
 		ArrayList status = new ArrayList();
-		switch (job.getJobType()) {
-			case PendingOperation.UNCONFIGURE :
-				validateUnconfigure(job.getFeature(), status);
-				break;
-			case PendingOperation.CONFIGURE :
-				validateConfigure(job.getFeature(), status);
-				break;
-			case PendingOperation.INSTALL :
-				validateInstall(job.getOldFeature(), job.getFeature(), status);
-				break;
-		}
+		validateInstall(oldFeature, newFeature, status);
 
 		// report status
-		if (status.size() > 0) {
-			if (beforeStatus.size() > 0)
-				return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
-			else
-				return createMultiStatus(KEY_ROOT_MESSAGE, status);
-		}
-		return null;
+		return createReportStatus(beforeStatus, status);
+	}
+	
+	/*
+	 * Called by UI before performing operation
+	 */
+	public IStatus validatePendingUnconfig(IFeature feature) {
+		// check initial state
+		ArrayList beforeStatus = new ArrayList();
+		validateInitialState(beforeStatus);
+
+		// check proposed change
+		ArrayList status = new ArrayList();
+		validateUnconfigure(feature, status);
+
+		// report status
+		return createReportStatus(beforeStatus, status);
+	}
+	
+	/*
+	 * Called by UI before performing operation
+	 */
+	public IStatus validatePendingConfig(IFeature feature) {
+		// check initial state
+		ArrayList beforeStatus = new ArrayList();
+		validateInitialState(beforeStatus);
+
+		// check proposed change
+		ArrayList status = new ArrayList();
+		validateConfigure(feature, status);
+
+		// report status
+		return createReportStatus(beforeStatus, status);
 	}
 
 	/*
@@ -115,13 +131,7 @@
 		}
 
 		// report status
-		if (status.size() > 0) {
-			if (beforeStatus.size() > 0)
-				return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
-			else
-				return createMultiStatus(KEY_ROOT_MESSAGE, status);
-		}
-		return null;
+		return createReportStatus(beforeStatus, status);
 	}
 
 	/*
@@ -137,13 +147,7 @@
 		validateRevert(config, status);
 
 		// report status
-		if (status.size() > 0) {
-			if (beforeStatus.size() > 0)
-				return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
-			else
-				return createMultiStatus(KEY_ROOT_MESSAGE, status);
-		}
-		return null;
+		return createReportStatus(beforeStatus, status);
 	}
 
 	/*
@@ -160,6 +164,10 @@
 		validatePendingChanges(jobs, status);
 
 		// report status
+		return createReportStatus(beforeStatus, status);
+	}
+	private IStatus createReportStatus(ArrayList beforeStatus, ArrayList status) {
+		// report status
 		if (status.size() > 0) {
 			if (beforeStatus.size() > 0)
 				return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java
index fff392f..635b03e 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java
@@ -26,13 +26,8 @@
 	}
 	
 	public boolean execute(IProgressMonitor pm) throws CoreException {
-		PendingOperation op =
-			new PendingOperation(
-				getInstallConfiguration(),
-				getTargetSite(),
-				getFeature(),
-				PendingOperation.UNCONFIGURE);
-		IStatus status = UpdateManager.getValidator().validatePendingChange(op);
+
+		IStatus status = UpdateManager.getValidator().validatePendingUnconfig(feature);
 		if (status != null) {
 			throw new CoreException(status);
 		}
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java
index 60e6ec5..e5652ed 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java
@@ -311,7 +311,7 @@
 			// do not accept updates without a license
 			if (!UpdateManager.hasLicense(job))
 				continue;
-			IStatus status = UpdateManager.getValidator().validatePendingChange(job);
+			IStatus status = UpdateManager.getValidator().validatePendingInstall(job.getOldFeature(), job.getFeature());
 			if (status == null) {
 				if (hit.isPatch()) {
 					IFeature patch = job.getFeature();
diff --git a/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java b/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java
index 0c5cbb9..b11b510 100644
--- a/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java
+++ b/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java
@@ -180,7 +180,7 @@
 		final PendingOperation job,
 		final boolean needLicensePage) {
 		
-		IStatus validationStatus = UpdateManager.getValidator().validatePendingChange(job);
+		IStatus validationStatus = UpdateManager.getValidator().validatePendingInstall(job.getOldFeature(), job.getFeature());
 		if (validationStatus != null) {
 			ErrorDialog.openError(
 				UpdateUI.getActiveWorkbenchShell(),