diff --git a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/view/IDEValidityManager.java b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/view/IDEValidityManager.java
index 29b3284..6493f23 100644
--- a/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/view/IDEValidityManager.java
+++ b/examples/org.eclipse.ocl.examples.emf.validation.validity.ui/src/org/eclipse/ocl/examples/emf/validation/validity/ui/view/IDEValidityManager.java
@@ -275,33 +275,6 @@
 		}
 	}
 
-	protected @Nullable List<Result> installResultSet(@NonNull ResultSet resultSet, @NonNull IProgressMonitor monitor) {
-		lastResultSet = resultSet;
-		resultsMap.clear();
-		RootNode rootNode = getRootNode();
-		if (rootNode == null) {
-			return null;
-		}
-		resetResults(rootNode.getValidatableNodes());
-		resetResults(rootNode.getConstrainingNodes());
-		List<Result> results = resultSet.getResults();
-		for (Result result : results) {
-			ResultValidatableNode resultValidatableNode = result.getResultValidatableNode();
-			resultsMap.put(resultValidatableNode, result);
-			if (monitor.isCanceled()) {
-				return null;
-			}
-		}
-		return results;
-	}
-
-	private void resetResults(@NonNull List<? extends AbstractNode> nodes) {
-		for (AbstractNode node : nodes) {
-			resetResults(node.getChildren());
-			node.setWorstResult(null);
-		}	
-	}
-
 	public void runValidation(@NonNull ValidityView validityView) {
 		Job validationJob = new ValidityViewJob(validityView);
 		synchronized (validityJobs) {
diff --git a/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java b/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java
index 9945b31..99c7c08 100644
--- a/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java
+++ b/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java
@@ -45,6 +45,7 @@
 import org.eclipse.ocl.examples.common.label.ILabelGenerator;
 import org.eclipse.ocl.examples.common.utils.EcoreUtils;
 import org.eclipse.ocl.examples.common.utils.TracingOption;
+import org.eclipse.ocl.examples.emf.validation.validity.AbstractNode;
 import org.eclipse.ocl.examples.emf.validation.validity.ConstrainingNode;
 import org.eclipse.ocl.examples.emf.validation.validity.Result;
 import org.eclipse.ocl.examples.emf.validation.validity.ResultConstrainingNode;
@@ -470,6 +471,26 @@
 		
 	} */
 
+	protected @Nullable List<Result> installResultSet(@NonNull ResultSet resultSet, @NonNull IProgressMonitor monitor) {
+		lastResultSet = resultSet;
+		resultsMap.clear();
+		RootNode rootNode = getRootNode();
+		if (rootNode == null) {
+			return null;
+		}
+		resetResults(rootNode.getValidatableNodes());
+		resetResults(rootNode.getConstrainingNodes());
+		List<Result> results = resultSet.getResults();
+		for (Result result : results) {
+			ResultValidatableNode resultValidatableNode = result.getResultValidatableNode();
+			resultsMap.put(resultValidatableNode, result);
+			if (monitor.isCanceled()) {
+				return null;
+			}
+		}
+		return results;
+	}
+
 	public void removeConstrainingFilter(@NonNull IVisibilityFilter filter) {
 		ValidityModel model2 = model;
 		if (model2 != null) {
@@ -491,6 +512,13 @@
 		}
 	}
 
+	private void resetResults(@NonNull List<? extends AbstractNode> nodes) {
+		for (AbstractNode node : nodes) {
+			resetResults(node.getChildren());
+			node.setWorstResult(null);
+		}	
+	}
+
 	public void setInput(Object newInput) {
 		setInput(newInput, new BasicMonitor());
 	}
diff --git a/examples/org.eclipse.ocl.examples.standalone/META-INF/MANIFEST.MF b/examples/org.eclipse.ocl.examples.standalone/META-INF/MANIFEST.MF
index 769f6ba..306f4b2 100644
--- a/examples/org.eclipse.ocl.examples.standalone/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ocl.examples.standalone/META-INF/MANIFEST.MF
@@ -9,9 +9,7 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ocl.examples.xtext.completeocl.ui;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.ocl.examples.validity;bundle-version="[1.0.0,2.0.0)",
- org.eclipse.ocl.examples.emf.validation.validity;bundle-version="[1.0.0,2.0.0)",
- org.eclipse.ocl.examples.emf.validation.validity.ui;bundle-version="[1.0.0,2.0.0)"
+ org.eclipse.ocl.examples.validity;bundle-version="[1.0.0,2.0.0)"
 Import-Package: org.apache.log4j
 Export-Package: org.eclipse.ocl.examples.standalone,
  org.eclipse.ocl.examples.standalone.validity;x-friends:="org.eclipse.ocl.examples.xtext.tests"
diff --git a/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/StandaloneValidityManager.java b/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/StandaloneValidityManager.java
index d4c50f6..e563975 100644
--- a/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/StandaloneValidityManager.java
+++ b/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/StandaloneValidityManager.java
@@ -32,23 +32,18 @@
 import org.eclipse.ocl.examples.emf.validation.validity.locator.EClassConstraintLocator;
 import org.eclipse.ocl.examples.emf.validation.validity.locator.EClassifierConstraintLocator;
 import org.eclipse.ocl.examples.emf.validation.validity.locator.EValidatorConstraintLocator;
+import org.eclipse.ocl.examples.emf.validation.validity.manager.ValidityManager;
 import org.eclipse.ocl.examples.emf.validation.validity.manager.ValidityModel;
-import org.eclipse.ocl.examples.emf.validation.validity.ui.view.IDEValidityManager;
-import org.eclipse.ocl.examples.emf.validation.validity.ui.view.ValidityView;
-import org.eclipse.ocl.examples.emf.validation.validity.ui.view.ValidityViewRefreshJob;
 import org.eclipse.ocl.examples.validity.locator.PivotConstraintLocator;
 import org.eclipse.ocl.examples.validity.locator.UMLConstraintLocator;
 
-public class StandaloneValidityManager extends IDEValidityManager
+public class StandaloneValidityManager extends ValidityManager
 {
 	private boolean runOCLConstraints = false;
 	private boolean runJavaConstraints = false;
 	private boolean runUMLConstraints = false;
 
-	public StandaloneValidityManager(ValidityViewRefreshJob refreshJob) {
-		super(refreshJob);
-	}
-
+	public StandaloneValidityManager() {}
 
 	/*
 	 * (non-Javadoc)
@@ -96,11 +91,9 @@
 		return list;
 	}
 
-	@Override
-	public void runValidation(@NonNull ValidityView validityView) {
+	public void runValidation() {
 		final ResultSet resultSet = createResultSet(new NullProgressMonitor());
-		List<Result> results = installResultSet(resultSet,
-				new NullProgressMonitor());
+		List<Result> results = installResultSet(resultSet, new NullProgressMonitor());
 		for (Result result : results) {
 			try {
 				ValidatableNode validatable = result.getValidatableNode();
diff --git a/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/ValidateCommand.java b/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/ValidateCommand.java
index 17f13e4..2af4057 100644
--- a/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/ValidateCommand.java
+++ b/examples/org.eclipse.ocl.examples.standalone/src/org/eclipse/ocl/examples/standalone/validity/ValidateCommand.java
@@ -41,8 +41,6 @@
 import org.eclipse.ocl.examples.emf.validation.validity.export.IValidityExporter;
 import org.eclipse.ocl.examples.emf.validation.validity.export.IValidityExporterDescriptor;
 import org.eclipse.ocl.examples.emf.validation.validity.export.ValidityExporterRegistry;
-import org.eclipse.ocl.examples.emf.validation.validity.ui.view.ValidityView;
-import org.eclipse.ocl.examples.emf.validation.validity.ui.view.ValidityViewRefreshJob;
 import org.eclipse.ocl.examples.pivot.validation.PivotEObjectValidator.ValidationAdapter;
 import org.eclipse.ocl.examples.standalone.StandaloneApplication;
 import org.eclipse.ocl.examples.standalone.StandaloneCommand;
@@ -635,7 +633,7 @@
 	 *            the resource set.
 	 */
 	private @NonNull StandaloneValidityManager initiateValidityManager(@NonNull ResourceSet resourceSet, @NonNull Map<CommandToken, List<String>> token2strings) {
-		StandaloneValidityManager validityManager = new StandaloneValidityManager(new ValidityViewRefreshJob());
+		StandaloneValidityManager validityManager = new StandaloneValidityManager();
 		validityManager.setRunJavaConstraints(usingToken.doRunJavaConstraints(token2strings));
 		validityManager.setRunOCLConstraints(usingToken.doRunOCLConstraints(token2strings));
 		validityManager.setRunUMLConstraints(usingToken.doRunUMLConstraints(token2strings));
@@ -706,7 +704,7 @@
 	 */
 	private void validate(@NonNull StandaloneValidityManager validityManager) {
 //		logger.info(StandaloneMessages.OCLValidatorApplication_ValidationStarting);
-		validityManager.runValidation(new ValidityView());
+		validityManager.runValidation();
 //		logger.info(StandaloneMessages.OCLValidatorApplication_ValidationComplete);
 	}
 }
diff --git a/examples/org.eclipse.ocl.examples.validity/META-INF/MANIFEST.MF b/examples/org.eclipse.ocl.examples.validity/META-INF/MANIFEST.MF
index 6996999..941612e 100644
--- a/examples/org.eclipse.ocl.examples.validity/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ocl.examples.validity/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.uml2.uml;bundle-version="[4.0.0,6.0.0)",
- org.eclipse.ocl.examples.emf.validation.validity,
+ org.eclipse.ocl.examples.emf.validation.validity;visibility:=reexport,
  org.eclipse.ocl.examples.xtext.base
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
