diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.hstm2fstm/model/HierarchicalStateMachine2FlatStateMachine.qvtr b/examples/org.eclipse.qvtd.examples.qvtrelation.hstm2fstm/model/HierarchicalStateMachine2FlatStateMachine.qvtr
index 008e8d7..77bacfa 100644
--- a/examples/org.eclipse.qvtd.examples.qvtrelation.hstm2fstm/model/HierarchicalStateMachine2FlatStateMachine.qvtr
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.hstm2fstm/model/HierarchicalStateMachine2FlatStateMachine.qvtr
@@ -27,7 +27,7 @@
 	 * Return the leafStates of a given hierarchicalState.
 	 */
 	query getLeafStates(hierarchicalState : hierMM::State[1]) : Set(hierMM::State) {
-		hierarchicalState->closure(nestedStates)->select(nestedStates->isEmpty())
+		hierarchicalState->closure(nestedStates)?->select(nestedStates->isEmpty())
 	}
 
 	/**
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtbase/src/org/eclipse/qvtd/pivot/qvtbase/utilities/QVTbaseEnvironmentFactory.java b/plugins/org.eclipse.qvtd.pivot.qvtbase/src/org/eclipse/qvtd/pivot/qvtbase/utilities/QVTbaseEnvironmentFactory.java
index 7af457e..5f776ef 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtbase/src/org/eclipse/qvtd/pivot/qvtbase/utilities/QVTbaseEnvironmentFactory.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtbase/src/org/eclipse/qvtd/pivot/qvtbase/utilities/QVTbaseEnvironmentFactory.java
@@ -15,11 +15,11 @@
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.ocl.pivot.Type;
 import org.eclipse.ocl.pivot.internal.manager.TemplateParameterSubstitutionVisitor;
-import org.eclipse.ocl.pivot.internal.utilities.PivotEnvironmentFactory;
 import org.eclipse.ocl.pivot.resource.ProjectManager;
+import org.eclipse.ocl.pivot.utilities.AbstractEnvironmentFactory;
 import org.eclipse.qvtd.pivot.qvtbase.model.QVTbaseLibrary;
 
-public class QVTbaseEnvironmentFactory extends PivotEnvironmentFactory
+public class QVTbaseEnvironmentFactory extends AbstractEnvironmentFactory
 {
 	public static abstract class CreateStrategy
 	{
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.qvtr b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.qvtr
index c15116f..d48cb01 100644
--- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.qvtr
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.qvtr
@@ -28,7 +28,7 @@
 		 * Return the leafStates of a given hierarchicalState.
 		 */
 		query getLeafStates(hierarchicalState : hierMM::State[1]) : Set(hierMM::State) {
-			hierarchicalState->closure(nestedStates)->select(nestedStates->isEmpty())
+			hierarchicalState->closure(nestedStates)?->select(nestedStates->isEmpty())
 		}
 
 		/**
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/mitosi/MiToSiSimple.qvtr b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/mitosi/MiToSiSimple.qvtr
index d2744b5..af1a3d0 100644
--- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/mitosi/MiToSiSimple.qvtr
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/mitosi/MiToSiSimple.qvtr
@@ -26,7 +26,7 @@
 	 * Return true if this class or a transitive super-class is marked as DomainRoot. 
 	 */
 	 query isClass(c : umlmmmi::Class) : Boolean {
-		c.oclAsSet()->closure(supers)->exists(v : umlmmmi::Class[1] | v.type = 'DomainRoot')		
+		c->closure(supers)->exists(type = 'DomainRoot')		
 	}
 
 	/**
