diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalCpuConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalCpuConstraint0.java
index c0c001e..568f167 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalCpuConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalCpuConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.AvailableGreaterThanTotalCpuQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private AvailableGreaterThanTotalCpuQuerySpecification querySpecification;
 
-    public AvailableGreaterThanTotalCpuConstraint0() throws ViatraQueryException {
+    public AvailableGreaterThanTotalCpuConstraint0() {
         querySpecification = AvailableGreaterThanTotalCpuQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalHddConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalHddConstraint0.java
index 9de0874..9373fa9 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalHddConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalHddConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.AvailableGreaterThanTotalHddQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private AvailableGreaterThanTotalHddQuerySpecification querySpecification;
 
-    public AvailableGreaterThanTotalHddConstraint0() throws ViatraQueryException {
+    public AvailableGreaterThanTotalHddConstraint0() {
         querySpecification = AvailableGreaterThanTotalHddQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalRamConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalRamConstraint0.java
index acdaec3..f36eba5 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalRamConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/AvailableGreaterThanTotalRamConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.AvailableGreaterThanTotalRamQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private AvailableGreaterThanTotalRamQuerySpecification querySpecification;
 
-    public AvailableGreaterThanTotalRamConstraint0() throws ViatraQueryException {
+    public AvailableGreaterThanTotalRamConstraint0() {
         querySpecification = AvailableGreaterThanTotalRamQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdContainsWhitespaceConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdContainsWhitespaceConstraint0.java
index 8b7e0a1..ad282f2 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdContainsWhitespaceConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdContainsWhitespaceConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.IdContainsWhitespaceQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private IdContainsWhitespaceQuerySpecification querySpecification;
 
-    public IdContainsWhitespaceConstraint0() throws ViatraQueryException {
+    public IdContainsWhitespaceConstraint0() {
         querySpecification = IdContainsWhitespaceQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdIsNotUniqueConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdIsNotUniqueConstraint0.java
index 48204df..95daaf8 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdIsNotUniqueConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/IdIsNotUniqueConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.IdIsNotUniqueQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private IdIsNotUniqueQuerySpecification querySpecification;
 
-    public IdIsNotUniqueConstraint0() throws ViatraQueryException {
+    public IdIsNotUniqueConstraint0() {
         querySpecification = IdIsNotUniqueQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/InitialStateNotContainedByStateMachineConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/InitialStateNotContainedByStateMachineConstraint0.java
index 5cb22b5..8abf25b 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/InitialStateNotContainedByStateMachineConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/InitialStateNotContainedByStateMachineConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.InitialStateNotContainedByStateMachineQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private InitialStateNotContainedByStateMachineQuerySpecification querySpecification;
 
-    public InitialStateNotContainedByStateMachineConstraint0() throws ViatraQueryException {
+    public InitialStateNotContainedByStateMachineConstraint0() {
         querySpecification = InitialStateNotContainedByStateMachineQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleApplicationInstanceInCommunicationGroupConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleApplicationInstanceInCommunicationGroupConstraint0.java
index fff4cc7..638a902 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleApplicationInstanceInCommunicationGroupConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleApplicationInstanceInCommunicationGroupConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.MultipleApplicationInstanceInCommunicationGroupQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private MultipleApplicationInstanceInCommunicationGroupQuerySpecification querySpecification;
 
-    public MultipleApplicationInstanceInCommunicationGroupConstraint0() throws ViatraQueryException {
+    public MultipleApplicationInstanceInCommunicationGroupConstraint0() {
         querySpecification = MultipleApplicationInstanceInCommunicationGroupQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleTransitionsWithSameActionConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleTransitionsWithSameActionConstraint0.java
index cfb7292..38f82c0 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleTransitionsWithSameActionConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/MultipleTransitionsWithSameActionConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.MultipleTransitionsWithSameActionQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private MultipleTransitionsWithSameActionQuerySpecification querySpecification;
 
-    public MultipleTransitionsWithSameActionConstraint0() throws ViatraQueryException {
+    public MultipleTransitionsWithSameActionConstraint0() {
         querySpecification = MultipleTransitionsWithSameActionQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NodeIpIsNotUniqueConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NodeIpIsNotUniqueConstraint0.java
index 8f467a2..9f3e629 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NodeIpIsNotUniqueConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NodeIpIsNotUniqueConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.NodeIpIsNotUniqueQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private NodeIpIsNotUniqueQuerySpecification querySpecification;
 
-    public NodeIpIsNotUniqueConstraint0() throws ViatraQueryException {
+    public NodeIpIsNotUniqueConstraint0() {
         querySpecification = NodeIpIsNotUniqueQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NotAllocatedButRunningConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NotAllocatedButRunningConstraint0.java
index eca123c..b4dc5d9 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NotAllocatedButRunningConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/NotAllocatedButRunningConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.NotAllocatedButRunningQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private NotAllocatedButRunningQuerySpecification querySpecification;
 
-    public NotAllocatedButRunningConstraint0() throws ViatraQueryException {
+    public NotAllocatedButRunningConstraint0() {
         querySpecification = NotAllocatedButRunningQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TargetStateNotContainedBySameStateMachineConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TargetStateNotContainedBySameStateMachineConstraint0.java
index bc7cba9..ad72700 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TargetStateNotContainedBySameStateMachineConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TargetStateNotContainedBySameStateMachineConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.TargetStateNotContainedBySameStateMachineQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private TargetStateNotContainedBySameStateMachineQuerySpecification querySpecification;
 
-    public TargetStateNotContainedBySameStateMachineConstraint0() throws ViatraQueryException {
+    public TargetStateNotContainedBySameStateMachineConstraint0() {
         querySpecification = TargetStateNotContainedBySameStateMachineQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TransitionWithoutTargetStateConstraint0.java b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TransitionWithoutTargetStateConstraint0.java
index e3a5d1e..b16b7cb 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TransitionWithoutTargetStateConstraint0.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.queries.validation/src-gen/org/eclipse/viatra/examples/cps/model/validation/TransitionWithoutTargetStateConstraint0.java
@@ -23,7 +23,6 @@
 import org.eclipse.viatra.query.runtime.api.IPatternMatch;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import org.eclipse.viatra.examples.cps.model.validation.util.TransitionWithoutTargetStateQuerySpecification;
 
@@ -31,7 +30,7 @@
 
     private TransitionWithoutTargetStateQuerySpecification querySpecification;
 
-    public TransitionWithoutTargetStateConstraint0() throws ViatraQueryException {
+    public TransitionWithoutTargetStateConstraint0() {
         querySpecification = TransitionWithoutTargetStateQuerySpecification.instance();
     }
 
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/AbstractCpsViewPart.java b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/AbstractCpsViewPart.java
index ac94435..88aad61 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/AbstractCpsViewPart.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/AbstractCpsViewPart.java
@@ -33,7 +33,7 @@
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
 import org.eclipse.viatra.query.runtime.emf.EMFScope;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
+import org.eclipse.viatra.query.runtime.matchers.ViatraQueryRuntimeException;
 
 import com.google.common.collect.ImmutableSet;
 
@@ -53,7 +53,7 @@
 			return engine;
 		}
 		
-		protected abstract Collection<IQuerySpecification<?>> getSpecifications() throws ViatraQueryException;
+		protected abstract Collection<IQuerySpecification<?>> getSpecifications();
 		
 		@Override
 		public void createPartControl(Composite parent) {
@@ -72,7 +72,7 @@
 						ImmutableSet.of(ViewerStateFeature.EDGE, ViewerStateFeature.CONTAINMENT));
 				ViatraGraphViewers.bind(viewer, state, true);
 				viewer.setLayoutAlgorithm(getLayout());
-			} catch (ViatraQueryException e) {
+			} catch (ViatraQueryRuntimeException e) {
 				e.printStackTrace();
 			}
 		}
@@ -93,7 +93,7 @@
 				
 	            try {
 					engine = ViatraQueryEngine.on(new EMFScope(resourceSet));
-				} catch (ViatraQueryException e) {
+				} catch (ViatraQueryRuntimeException e) {
 					e.printStackTrace();
 				} 
 	            
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsAllocationViewPart.java b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsAllocationViewPart.java
index b17366a..c678aae 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsAllocationViewPart.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsAllocationViewPart.java
@@ -17,14 +17,13 @@
 import org.eclipse.viatra.examples.cps.model.viewer.util.AppInstancesWithAllocationQuerySpecification;
 import org.eclipse.viatra.examples.cps.model.viewer.util.ConnectAppAndHostQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import com.google.common.collect.ImmutableSet;
 
 public class CpsAllocationViewPart extends AbstractCpsViewPart {
 
 	@Override
-	protected Collection<IQuerySpecification<?>> getSpecifications() throws ViatraQueryException {
+	protected Collection<IQuerySpecification<?>> getSpecifications() {
 		return ImmutableSet.<IQuerySpecification<?>>of(
 				AppInstancesNoAllocationQuerySpecification.instance(),
 				AppInstancesWithAllocationQuerySpecification.instance(),
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsHardwareViewPart.java b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsHardwareViewPart.java
index 71dbb0f..3dca0ee 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsHardwareViewPart.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsHardwareViewPart.java
@@ -16,15 +16,13 @@
 import org.eclipse.viatra.examples.cps.model.viewer.util.ConnectTypesAndInstancesHostQuerySpecification;
 import org.eclipse.viatra.examples.cps.model.viewer.util.HostTypesQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import com.google.common.collect.ImmutableSet;
 
 public class CpsHardwareViewPart extends AbstractCpsViewPart {
 
 	@Override
-	protected Collection<IQuerySpecification<?>> getSpecifications()
-			throws ViatraQueryException {
+	protected Collection<IQuerySpecification<?>> getSpecifications() {
 		return ImmutableSet.<IQuerySpecification<?>>of(
 				//CommunicationsQuerySpecification.instance(),
 				ConnectTypesAndInstancesHostQuerySpecification.instance(),
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsRequirementViewPart.java b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsRequirementViewPart.java
index 1cb6aea..3f38ed7 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsRequirementViewPart.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsRequirementViewPart.java
@@ -17,15 +17,13 @@
 import org.eclipse.viatra.examples.cps.model.viewer.util.ConnectAppQuerySpecification;
 import org.eclipse.viatra.examples.cps.model.viewer.util.RequestsQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import com.google.common.collect.ImmutableSet;
 
 public class CpsRequirementViewPart extends AbstractCpsViewPart {
 
 	@Override
-	protected Collection<IQuerySpecification<?>> getSpecifications()
-			throws ViatraQueryException {
+	protected Collection<IQuerySpecification<?>> getSpecifications() {
 		return ImmutableSet.<IQuerySpecification<?>>of(
 				AppInstancesNoAllocationQuerySpecification.instance(),
 				AppInstancesWithAllocationQuerySpecification.instance(),
diff --git a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsSoftwareViewPart.java b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsSoftwareViewPart.java
index 4229d22..5e08512 100644
--- a/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsSoftwareViewPart.java
+++ b/cps/addons/org.eclipse.viatra.examples.cps.view/src/org/eclipse/viatra/examples/cps/view/CpsSoftwareViewPart.java
@@ -17,15 +17,13 @@
 import org.eclipse.viatra.examples.cps.model.viewer.util.ApplicationTypesQuerySpecification;
 import org.eclipse.viatra.examples.cps.model.viewer.util.ConnectTypesAndInstancesAppQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 
 import com.google.common.collect.ImmutableSet;
 
 public class CpsSoftwareViewPart extends AbstractCpsViewPart {
 
 	@Override
-	protected Collection<IQuerySpecification<?>> getSpecifications()
-			throws ViatraQueryException {
+	protected Collection<IQuerySpecification<?>> getSpecifications() {
 		return ImmutableSet.<IQuerySpecification<?>>of(
 				AppInstancesNoAllocationQuerySpecification.instance(),
 				AppInstancesWithAllocationQuerySpecification.instance(),
diff --git a/cps/tests/org.eclipse.viatra.examples.cps.m2t.proto.distributed.tests/src/org/eclipse/viatra/examples/cps/m2t/proto/distributed/tests/GeneratorTest.java b/cps/tests/org.eclipse.viatra.examples.cps.m2t.proto.distributed.tests/src/org/eclipse/viatra/examples/cps/m2t/proto/distributed/tests/GeneratorTest.java
index bceee92..1b07dd1 100644
--- a/cps/tests/org.eclipse.viatra.examples.cps.m2t.proto.distributed.tests/src/org/eclipse/viatra/examples/cps/m2t/proto/distributed/tests/GeneratorTest.java
+++ b/cps/tests/org.eclipse.viatra.examples.cps.m2t.proto.distributed.tests/src/org/eclipse/viatra/examples/cps/m2t/proto/distributed/tests/GeneratorTest.java
@@ -35,7 +35,6 @@
 import org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
 import org.eclipse.viatra.query.runtime.emf.EMFScope;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -47,7 +46,7 @@
 	
 //	@Ignore
 	@Test
-	public void testSmall() throws ViatraQueryException{
+	public void testSmall() {
 		logger.info("Start Generating...");
 		
 		Deployment model = loadModel("C:\\Eclipses\\CPSDemonstrator\\git\\incquery-examples-cps\\models\\org.eclipse.viatra.examples.cps.instances\\example.deployment");
@@ -59,7 +58,7 @@
 	
 	@Ignore
 	@Test
-	public void test64ClientServer() throws ViatraQueryException{
+	public void test64ClientServer() {
 		logger.info("Start Generating...");
 		
 		Logger.getLogger("cps.proto.generator").setLevel(Level.OFF);
@@ -75,7 +74,7 @@
 		assertTrue(true);
 	}
 
-	private void generateCode(Deployment model) throws ViatraQueryException {
+	private void generateCode(Deployment model) {
 		ViatraQueryEngine engine = AdvancedViatraQueryEngine.on(new EMFScope(model));
 		DeploymentQueries.instance().prepare(engine);
 		
diff --git a/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/AbstractDeploymentChangeMonitor.java b/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/AbstractDeploymentChangeMonitor.java
index ee8aa6f..65aec7f 100644
--- a/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/AbstractDeploymentChangeMonitor.java
+++ b/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/AbstractDeploymentChangeMonitor.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.viatra.examples.cps.deployment.Deployment;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
+import org.eclipse.viatra.query.runtime.matchers.ViatraQueryRuntimeException;
 
 public abstract class AbstractDeploymentChangeMonitor {
 
@@ -29,9 +29,9 @@
 	 * Sets the model whose changes are observed. Also creates an initial checkpoint with no changes registered.
 	 * @param deployment the deployment model
 	 * @param engine engine associated with the 
-	 * @throws IncQueryException 
+	 * @throws ViatraQueryRuntimeException 
 	 */
-	public abstract void startMonitoring() throws ViatraQueryException;
+	public abstract void startMonitoring();
 	
 	/**
 	 * Creates a checkpoint which means:
diff --git a/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/DeploymentChangeMonitor.java b/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/DeploymentChangeMonitor.java
index f874820..2cd2281 100644
--- a/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/DeploymentChangeMonitor.java
+++ b/cps/transformations/org.eclipse.viatra.examples.cps.xform.m2t/src/org/eclipse/viatra/examples/cps/xform/m2t/monitor/DeploymentChangeMonitor.java
@@ -35,7 +35,6 @@
 import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
 import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 import org.eclipse.viatra.transformation.evm.api.ExecutionSchema;
 import org.eclipse.viatra.transformation.evm.api.Job;
 import org.eclipse.viatra.transformation.evm.api.RuleSpecification;
@@ -145,7 +144,7 @@
 	}
 
 	@Override
-	public void startMonitoring() throws ViatraQueryException {
+	public void startMonitoring() {
 	    ModelChangeListenerQueries.instance().prepare(engine);
 		Set<Job<?>> allJobs = Sets.newHashSet();
 
@@ -221,8 +220,7 @@
 		executionSchema.addRule(applicationRules);
 	}
 
-	private Map<IQuerySpecification<? extends ViatraQueryMatcher<IPatternMatch>>, Set<Job<IPatternMatch>>> getDeploymentElementChangeQuerySpecifications()
-			throws ViatraQueryException {
+	private Map<IQuerySpecification<? extends ViatraQueryMatcher<IPatternMatch>>, Set<Job<IPatternMatch>>> getDeploymentElementChangeQuerySpecifications() {
 		Map<IQuerySpecification<? extends ViatraQueryMatcher<IPatternMatch>>, Set<Job<IPatternMatch>>> querySpecifications = Maps
 				.newHashMap();
 		querySpecifications
diff --git a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/dse/BpmnExamples.java b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/dse/BpmnExamples.java
index 0cbb92d..ecd4d3c 100644
--- a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/dse/BpmnExamples.java
+++ b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/dse/BpmnExamples.java
@@ -37,7 +37,6 @@
 import org.eclipse.viatra.dse.objectives.impl.ModelQueriesGlobalConstraint;
 import org.eclipse.viatra.dse.objectives.impl.TrajectoryCostSoftObjective;
 import org.eclipse.viatra.dse.solutionstore.SolutionStore;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 import org.eclipse.viatra.transformation.evm.specific.ConflictResolvers;
 import org.eclipse.viatra.transformation.evm.specific.resolver.FixedPriorityConflictResolver;
 import org.junit.After;
@@ -85,7 +84,7 @@
      * Configuration of the VIATRA-DSE framework
      */
     @Before
-    public void setUp() throws ViatraQueryException {
+    public void setUp() {
 
         dse = new DesignSpaceExplorer();
 
@@ -148,7 +147,7 @@
      * Things you can do after the exploration
      */
     @After
-    public void tearDown() throws ViatraQueryException {
+    public void tearDown() {
         // Get an arbitrary solution trajectory
         SolutionTrajectory solutionTrajectory = dse.getArbitrarySolution();
         if (solutionTrajectory != null) {
@@ -170,7 +169,7 @@
     }
 
     @Test
-    public void fixedPrioritySearch() throws ViatraQueryException {
+    public void fixedPrioritySearch() {
         fixedPriorityStrategy = new FixedPriorityStrategy()
             .withDepthLimit(10)
             .withRulePriority(ruleProvider.allocateRule, 10)
@@ -182,7 +181,7 @@
     }
 
     @Test
-    public void DfsWithFixedPriorityConflictResolver() throws ViatraQueryException {
+    public void DfsWithFixedPriorityConflictResolver() {
         FixedPriorityConflictResolver conflictResolver = ConflictResolvers.createFixedPriorityResolver();
         conflictResolver.setPriority(ruleProvider.allocateRule.getRuleSpecification(), 1);
         conflictResolver.setPriority(ruleProvider.createResourceRule.getRuleSpecification(), 5);
@@ -193,17 +192,17 @@
     }
 
     @Test
-    public void DFS() throws ViatraQueryException {
+    public void DFS() {
         dse.startExploration(Strategies.createDfsStrategy(12).continueIfHardObjectivesFulfilled());
     }
 
     @Test
-    public void BFS() throws ViatraQueryException {
+    public void BFS() {
         dse.startExploration(Strategies.createBfsStrategy(7));
     }
 
     @Test
-    public void hillClimbing() throws ViatraQueryException {
+    public void hillClimbing() {
         dse.startExploration(Strategies.creatHillClimbingStrategy());
     }
 
diff --git a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/genetic/BpmnEvolutionaryExample.java b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/genetic/BpmnEvolutionaryExample.java
index 718ad03..2828ba0 100644
--- a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/genetic/BpmnEvolutionaryExample.java
+++ b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/genetic/BpmnEvolutionaryExample.java
@@ -31,13 +31,12 @@
 import org.eclipse.viatra.dse.objectives.impl.ConstraintsObjective;
 import org.eclipse.viatra.dse.objectives.impl.ModelQueriesGlobalConstraint;
 import org.eclipse.viatra.dse.objectives.impl.TrajectoryCostSoftObjective;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 import org.junit.Test;
 
 public class BpmnEvolutionaryExample {
 
     @Test
-    public void test() throws ViatraQueryException {
+    public void test() {
 
         Logger.getRootLogger().setLevel(Level.WARN);
 
diff --git a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.test/src/org/eclipse/viatra/dse/examples/bpmn/test/BpmnExamplesTest.java b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.test/src/org/eclipse/viatra/dse/examples/bpmn/test/BpmnExamplesTest.java
index bb6fd71..e4a1323 100644
--- a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.test/src/org/eclipse/viatra/dse/examples/bpmn/test/BpmnExamplesTest.java
+++ b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.test/src/org/eclipse/viatra/dse/examples/bpmn/test/BpmnExamplesTest.java
@@ -33,7 +33,6 @@
 import org.eclipse.viatra.dse.objectives.impl.ModelQueriesGlobalConstraint;
 import org.eclipse.viatra.dse.objectives.impl.TrajectoryCostSoftObjective;
 import org.eclipse.viatra.dse.solutionstore.SolutionStore;
-import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
 import org.eclipse.viatra.transformation.evm.specific.ConflictResolvers;
 import org.eclipse.viatra.transformation.evm.specific.resolver.FixedPriorityConflictResolver;
 import org.junit.Assert;
@@ -68,7 +67,7 @@
      * Configuration of the VIATRA-DSE framework
      */
     @Before
-    public void setUp() throws ViatraQueryException {
+    public void setUp() {
 
         dse = new DesignSpaceExplorer();
 
@@ -126,7 +125,7 @@
     }
 
     @Test
-    public void fixedPrioritySearch() throws ViatraQueryException {
+    public void fixedPrioritySearch() {
         fixedPriorityStrategy = new FixedPriorityStrategy()
             .withDepthLimit(10)
             .withRulePriority(ruleProvider.allocateRule, 10)
@@ -139,7 +138,7 @@
     }
 
     @Test
-    public void DfsWithFixedPriorityConflictResolver() throws ViatraQueryException {
+    public void DfsWithFixedPriorityConflictResolver() {
         FixedPriorityConflictResolver conflictResolver = ConflictResolvers.createFixedPriorityResolver();
         conflictResolver.setPriority(ruleProvider.allocateRule.getRuleSpecification(), 1);
         conflictResolver.setPriority(ruleProvider.createResourceRule.getRuleSpecification(), 5);
@@ -151,18 +150,18 @@
     }
 
     @Test
-    public void DFS() throws ViatraQueryException {
+    public void DFS() {
         dse.startExploration(Strategies.createDfsStrategy(12).continueIfHardObjectivesFulfilled());
         assertFoundAnySolution();
     }
 
     @Test
-    public void BFS() throws ViatraQueryException {
+    public void BFS() {
         dse.startExploration(Strategies.createBfsStrategy(7));
     }
 
     @Test
-    public void hillClimbing() throws ViatraQueryException {
+    public void hillClimbing() {
         dse.startExploration(Strategies.creatHillClimbingStrategy());
         assertFoundAnySolution();
     }
