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(),
