diff --git a/examples/org.eclipse.ocl.examples.xtext.base/META-INF/MANIFEST.MF b/examples/org.eclipse.ocl.examples.xtext.base/META-INF/MANIFEST.MF
index 037cfa3..0e4b171 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ocl.examples.xtext.base/META-INF/MANIFEST.MF
@@ -21,9 +21,10 @@
  org.eclipse.ocl.examples.xtext.base.utilities
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.emf.ecore;visibility:=reexport,
- org.eclipse.ocl.examples.pivot;visibility:=reexport;bundle-version="[3.3.0,4.0.0)",
- org.eclipse.xtext;visibility:=reexport;bundle-version="[2.4.2,3.0.0)",
- org.eclipse.xtext.common.types;visibility:=reexport;bundle-version="[2.4.0,3.0.0)",
- org.eclipse.emf.codegen;bundle-version="[2.6.0,3.0.0)"
+ org.eclipse.ocl.examples.pivot;bundle-version="[3.3.0,4.0.0)";visibility:=reexport,
+ org.eclipse.xtext;bundle-version="[2.4.2,3.0.0)";visibility:=reexport,
+ org.eclipse.xtext.common.types;bundle-version="[2.4.0,3.0.0)";visibility:=reexport,
+ org.eclipse.emf.codegen;bundle-version="[2.6.0,3.0.0)",
+ com.google.inject.assitedinject;bundle-version="3.0.0";visibility:=reexport
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.ocl.examples.xtext.base.utilities.BasePlugin$Implementation
diff --git a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASFactory.java b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASFactory.java
index 739c99f..750f20d 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASFactory.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASFactory.java
@@ -5,7 +5,8 @@
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 
-public class BaseCS2ASFactory implements ICS2ASFactory {
+public class BaseCS2ASFactory // implements ICS2ASFactory 
+{
 	
 	private final InjectorProvider injectorProvider;
 	
diff --git a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASRuntimeModule.java b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASRuntimeModule.java
index 2b64614..edad635 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASRuntimeModule.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCS2ASRuntimeModule.java
@@ -1,7 +1,12 @@
 package org.eclipse.ocl.examples.xtext.base.cs2as;
 
+import org.eclipse.ocl.examples.xtext.base.basecs.util.BaseCSVisitor;
 import org.eclipse.xtext.service.AbstractGenericModule;
 
+import com.google.inject.Binder;
+import com.google.inject.assistedinject.FactoryModuleBuilder;
+import com.google.inject.name.Names;
+
 
 /**
  * Google Guice runtime module to define the bindings for the CS2AS framework
@@ -10,7 +15,19 @@
  */
 public abstract class BaseCS2ASRuntimeModule extends AbstractGenericModule{
 
-	public Class<? extends Continuations> bindContinuations() {
-		return Continuations.class;
+//	public Class<? extends Continuations> bindContinuations() {
+//		return Continuations.class;
+//	}
+	
+	
+	public void configureFactory(Binder binder) {
+		
+		binder.install(new FactoryModuleBuilder()
+				.implement(Continuations.class, Continuations.class)
+//				.implement(BaseCSVisitor.class, Names.named("ContainmentVisitor"), BaseCSContainmentVisitor.class)
+				.implement(BaseCSVisitor.class, Names.named("PreOrderVisitor"), BaseCSPreOrderVisitor.class)
+//				.implement(BaseCSVisitor.class, Names.named("PostOrderVisitor"), BaseCSPostOrderVisitor.class)
+//				.implement(BaseCSVisitor.class, Names.named("Left2RightVisitor"), BaseCSLeft2RightVisitor.class)				
+				.build(ICS2ASFactory.class));
 	}
 }
diff --git a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCSPreOrderVisitor.java b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCSPreOrderVisitor.java
index 5bebe40..0509344 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCSPreOrderVisitor.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/BaseCSPreOrderVisitor.java
@@ -68,12 +68,13 @@
 import org.eclipse.ocl.examples.xtext.base.utilities.ElementUtil;
 
 import com.google.inject.Inject;
-import com.google.inject.Injector;
+import com.google.inject.assistedinject.Assisted;
+import com.google.inject.assistedinject.AssistedInject;
 
 public class BaseCSPreOrderVisitor extends AbstractExtendingBaseCSVisitor<Continuation<?>, CS2PivotConversion>
 {
 	@Inject
-	ICS2ASFactory cs2asFactory;
+	private ICS2ASFactory cs2asFactory;
 	
 	protected static class ClassSupersContinuation extends SingleContinuation<ClassCS>
 	{
@@ -382,17 +383,18 @@
 		}
 	}
 
-	public BaseCSPreOrderVisitor(@NonNull CS2PivotConversion context) {
+	@AssistedInject
+	public BaseCSPreOrderVisitor(@Assisted @NonNull CS2PivotConversion context) {
 		super(context);	
-		getInjector().injectMembers(this); // FIXME workaround since this class is not injected by Guice yet.
+		// getInjector().injectMembers(this); // FIXME workaround since this class is not injected by Guice yet.
 	}
 	
 	
 	// FIXME workaround since this class is not injected by guice yet
-	protected Injector getInjector() {
-		// overriden by derived classes
-		return null;
-	}
+//	protected Injector getInjector() {
+//		// overriden by derived classes
+//		return null;
+//	}
 	
 
 	public Continuation<?> visiting(@NonNull VisitableCS visitable) {
diff --git a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/CS2PivotConversion.java b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/CS2PivotConversion.java
index 7e0a917..09c2dc1 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/CS2PivotConversion.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/CS2PivotConversion.java
@@ -108,6 +108,8 @@
 import org.eclipse.xtext.nodemodel.INode;
 import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
 
+import com.google.inject.Inject;
+
 public class CS2PivotConversion extends AbstractBase2PivotConversion
 {	
 	private static final Logger logger = Logger.getLogger(CS2PivotConversion.class);
@@ -128,6 +130,9 @@
 	protected final @NonNull CS2Pivot converter;
 	protected final @NonNull Collection<? extends Resource> csResources;
 	
+	@Inject
+	private ICS2ASFactory cs2asFactory;
+	
 	/**
 	 * The Visitors
 	 */
@@ -135,7 +140,7 @@
 	private final @NonNull BaseCSVisitor<Element> left2RightVisitor;
 	private final @NonNull BaseCSVisitor<Continuation<?>> postOrderVisitor;
 	private final @NonNull BaseCSVisitor<Continuation<?>> preOrderVisitor;
-
+	
 	private @NonNull InterDependency<TemplateSignatureContinuation> typesHaveSignatures = new InterDependency<TemplateSignatureContinuation>("All unspecialized signatures defined", null);
 
 	/**
@@ -161,7 +166,7 @@
 		this.containmentVisitor = converter.createContainmentVisitor(this);
 		this.left2RightVisitor = converter.createLeft2RightVisitor(this);
 		this.postOrderVisitor = converter.createPostOrderVisitor(this);
-		this.preOrderVisitor = converter.createPreOrderVisitor(this);
+		this.preOrderVisitor = cs2asFactory.createPreOrderVisitor(this);
 		List<Resource> mappedResources = new ArrayList<Resource>();
 		for (Resource csResource : csResources) {
 			if (csResource != null) {
diff --git a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/ICS2ASFactory.java b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/ICS2ASFactory.java
index ce2dfae..d8ea226 100644
--- a/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/ICS2ASFactory.java
+++ b/examples/org.eclipse.ocl.examples.xtext.base/src/org/eclipse/ocl/examples/xtext/base/cs2as/ICS2ASFactory.java
@@ -1,5 +1,11 @@
 package org.eclipse.ocl.examples.xtext.base.cs2as;
 
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.ocl.examples.xtext.base.basecs.util.BaseCSVisitor;
+
+import com.google.inject.name.Named;
+
+
 
 
 /**
@@ -8,7 +14,19 @@
  * @author asbh
  */
 public interface ICS2ASFactory {
-		
+
+	
+	// PivotDependency createPivotDependency(PivotableElementCS pivotableCSElement);
+	
+	// PreVisitor 
 	Continuations createContinuations();
 
+	
+	
+	// **** CS2PivotConversion visitors ****
+//	@NonNull @Named("ContainmentVisitor") BaseCSVisitor<Continuation<?>> createContainmentVisitor(CS2PivotConversion conversion);
+	@NonNull @Named("PreOrderVisitor") BaseCSVisitor<Continuation<?>> createPreOrderVisitor(CS2PivotConversion conversion);
+//	@NonNull @Named("PostOrderVisitor") BaseCSVisitor<Continuation<?>> createPostOrderVisitor(CS2PivotConversion conversion);
+//	@NonNull @Named("Left2RightVisitor") BaseCSVisitor<Element> createLeft2RightVisitor(CS2PivotConversion conversion);
+	
 }
diff --git a/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCS2ASRuntimeModule.java b/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCS2ASRuntimeModule.java
index 483929f..542b5a3 100644
--- a/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCS2ASRuntimeModule.java
+++ b/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCS2ASRuntimeModule.java
@@ -1,12 +1,33 @@
 package org.eclipse.ocl.examples.xtext.completeocl.cs2as;
 
+import org.eclipse.ocl.examples.xtext.base.basecs.util.BaseCSVisitor;
 import org.eclipse.ocl.examples.xtext.base.cs2as.BaseCS2ASRuntimeModule;
+import org.eclipse.ocl.examples.xtext.base.cs2as.Continuation;
+import org.eclipse.ocl.examples.xtext.base.cs2as.Continuations;
 import org.eclipse.ocl.examples.xtext.base.cs2as.ICS2ASFactory;
 
+import com.google.inject.Binder;
+import com.google.inject.TypeLiteral;
+import com.google.inject.assistedinject.FactoryModuleBuilder;
+import com.google.inject.name.Names;
+
 
 public class CompleteOCLCS2ASRuntimeModule extends BaseCS2ASRuntimeModule {
 		 
-	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
-		return CompleteOCLCS2ASFactory.class;
+//	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
+//		return CompleteOCLCS2ASFactory.class;
+//	}
+	
+	@Override
+	public void configureFactory(Binder binder) {
+		
+		binder.install(new FactoryModuleBuilder()
+				.implement(Continuations.class, Continuations.class)
+//				.implement(BaseCSVisitor.class, Names.named("ContainmentVisitor"), CompleteOCLCSContainmentVisitor.class)
+				.implement(new TypeLiteral<BaseCSVisitor<? extends Continuation<?>>>() {}, Names.named("PreOrderVisitor"), CompleteOCLCSPreOrderVisitor.class)
+				
+//				.implement(BaseCSVisitor.class, Names.named("PostOrderVisitor"), CompleteOCLCSPostOrderVisitor.class)
+//				.implement(BaseCSVisitor.class, Names.named("Left2RightVisitor"), CompleteOCLCSLeft2RightVisitor.class)
+				.build(ICS2ASFactory.class));
 	}
 }
\ No newline at end of file
diff --git a/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCSPreOrderVisitor.java b/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCSPreOrderVisitor.java
index 7ac838a..22e530f 100644
--- a/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCSPreOrderVisitor.java
+++ b/examples/org.eclipse.ocl.examples.xtext.completeocl/src/org/eclipse/ocl/examples/xtext/completeocl/cs2as/CompleteOCLCSPreOrderVisitor.java
@@ -26,9 +26,13 @@
 import org.eclipse.ocl.examples.xtext.completeocl.completeoclcs.PropertyContextDeclCS;
 import org.eclipse.ocl.examples.xtext.completeocl.completeoclcs.util.AbstractCompleteOCLCSPreOrderVisitor;
 
+import com.google.inject.assistedinject.Assisted;
+import com.google.inject.assistedinject.AssistedInject;
+
 public class CompleteOCLCSPreOrderVisitor extends AbstractCompleteOCLCSPreOrderVisitor
 {	
-	public CompleteOCLCSPreOrderVisitor(@NonNull CS2PivotConversion context) {
+	@AssistedInject
+	public CompleteOCLCSPreOrderVisitor(@Assisted @NonNull CS2PivotConversion context) {
 		super(context);
 	}
 
diff --git a/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCS2ASRuntimeModule.java b/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCS2ASRuntimeModule.java
index 2c669aa..8d48241 100644
--- a/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCS2ASRuntimeModule.java
+++ b/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCS2ASRuntimeModule.java
@@ -1,15 +1,33 @@
 package org.eclipse.ocl.examples.xtext.essentialocl.cs2as;
 
+import org.eclipse.ocl.examples.xtext.base.basecs.util.BaseCSVisitor;
 import org.eclipse.ocl.examples.xtext.base.cs2as.BaseCS2ASRuntimeModule;
+import org.eclipse.ocl.examples.xtext.base.cs2as.Continuation;
+import org.eclipse.ocl.examples.xtext.base.cs2as.Continuations;
 import org.eclipse.ocl.examples.xtext.base.cs2as.ICS2ASFactory;
 
+import com.google.inject.Binder;
+import com.google.inject.TypeLiteral;
+import com.google.inject.assistedinject.FactoryModuleBuilder;
+import com.google.inject.name.Names;
+
 
 public class EssentialOCLCS2ASRuntimeModule extends BaseCS2ASRuntimeModule {
+	
+//	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
+//		return EssentialOCLCS2ASFactory.class;
+//	}
+	
+	@Override
+	public void configureFactory(Binder binder) {
 		
-	/**
-	 * @return 
-	 */ 
-	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
-		return EssentialOCLCS2ASFactory.class;
+		binder.install(new FactoryModuleBuilder()
+				.implement(Continuations.class, Continuations.class)
+//				.implement(BaseCSVisitor.class, Names.named("ContainmentVisitor"), EssentialOCLCSContainmentVisitor.class)
+				.implement(new TypeLiteral<BaseCSVisitor<? extends Continuation<?>>>() {}, Names.named("PreOrderVisitor"), EssentialOCLCSPreOrderVisitor.class)
+				
+//				.implement(BaseCSVisitor.class, Names.named("PostOrderVisitor"), EssentialOCLCSPostOrderVisitor.class)
+//				.implement(BaseCSVisitor.class, Names.named("Left2RightVisitor"), EssentialOCLCSLeft2RightVisitor.class)				
+				.build(ICS2ASFactory.class));
 	}
 }
\ No newline at end of file
diff --git a/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java b/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java
index 5c28de8..f79f634 100644
--- a/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java
+++ b/examples/org.eclipse.ocl.examples.xtext.essentialocl/src/org/eclipse/ocl/examples/xtext/essentialocl/cs2as/EssentialOCLCSPreOrderVisitor.java
@@ -53,6 +53,8 @@
 import org.eclipse.ocl.examples.xtext.essentialocl.essentialoclcs.util.AbstractEssentialOCLCSPreOrderVisitor;
 
 import com.google.inject.Injector;
+import com.google.inject.assistedinject.Assisted;
+import com.google.inject.assistedinject.AssistedInject;
 
 public class EssentialOCLCSPreOrderVisitor extends AbstractEssentialOCLCSPreOrderVisitor
 {
@@ -138,7 +140,8 @@
 		}
 	}
 
-	public EssentialOCLCSPreOrderVisitor(@NonNull CS2PivotConversion context) {
+	@AssistedInject
+	public EssentialOCLCSPreOrderVisitor(@Assisted @NonNull CS2PivotConversion context) {
 		super(context);
 	}
 
@@ -214,8 +217,8 @@
 		return null;
 	}
 	
-	@Override
-	protected Injector getInjector() {
-		return EssentialOCLStandaloneSetup.getInjector();
-	}	
+//	@Override
+//	protected Injector getInjector() {
+//		return EssentialOCLStandaloneSetup.getInjector();
+//	}	
 }
\ No newline at end of file
diff --git a/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCS2ASRuntimeModule.java b/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCS2ASRuntimeModule.java
index 25d6d9b..a0d83d9 100644
--- a/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCS2ASRuntimeModule.java
+++ b/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCS2ASRuntimeModule.java
@@ -1,11 +1,32 @@
 package org.eclipse.ocl.examples.xtext.oclinecore.cs2as;
 
-import org.eclipse.ocl.examples.xtext.base.cs2as.BaseCS2ASRuntimeModule;
+import org.eclipse.ocl.examples.xtext.base.basecs.util.BaseCSVisitor;
+import org.eclipse.ocl.examples.xtext.base.cs2as.Continuation;
+import org.eclipse.ocl.examples.xtext.base.cs2as.Continuations;
 import org.eclipse.ocl.examples.xtext.base.cs2as.ICS2ASFactory;
+import org.eclipse.ocl.examples.xtext.essentialocl.cs2as.EssentialOCLCS2ASRuntimeModule;
 
-public class OCLinEcoreCS2ASRuntimeModule extends BaseCS2ASRuntimeModule {
+import com.google.inject.Binder;
+import com.google.inject.assistedinject.FactoryModuleBuilder;
+import com.google.inject.name.Names;
+import com.google.inject.TypeLiteral;
 
-	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
-		return OCLinEcoreCS2ASFactory.class;
+
+public class OCLinEcoreCS2ASRuntimeModule extends EssentialOCLCS2ASRuntimeModule {
+
+//	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
+//		return OCLinEcoreCS2ASFactory.class;
+//	}
+	
+	@Override
+	public void configureFactory(Binder binder) {
+		
+		binder.install(new FactoryModuleBuilder()
+				.implement(Continuations.class, Continuations.class)
+//				.implement(BaseCSVisitor.class, Names.named("ContainmentVisitor"), OCLinEcoreCSContainmentVisitor.class)
+				.implement(new TypeLiteral<BaseCSVisitor<? extends Continuation<?>>>() {}, Names.named("PreOrderVisitor"), OCLinEcoreCSPreOrderVisitor.class)
+//				.implement(BaseCSVisitor.class, Names.named("PostOrderVisitor"), OCLinEcoreCSPostOrderVisitor.class)
+//				.implement(BaseCSVisitor.class, Names.named("Left2RightVisitor"), OCLinEcoreCSLeft2RightVisitor.class)				
+				.build(ICS2ASFactory.class));
 	}
 }
\ No newline at end of file
diff --git a/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCSPreOrderVisitor.java b/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCSPreOrderVisitor.java
index 428d93b..3620fa2 100644
--- a/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCSPreOrderVisitor.java
+++ b/examples/org.eclipse.ocl.examples.xtext.oclinecore/src/org/eclipse/ocl/examples/xtext/oclinecore/cs2as/OCLinEcoreCSPreOrderVisitor.java
@@ -20,9 +20,13 @@
 import org.eclipse.ocl.examples.xtext.base.cs2as.CS2PivotConversion;
 import org.eclipse.ocl.examples.xtext.oclinecore.oclinecorecs.util.AbstractOCLinEcoreCSPreOrderVisitor;
 
+import com.google.inject.assistedinject.Assisted;
+import com.google.inject.assistedinject.AssistedInject;
+
 public class OCLinEcoreCSPreOrderVisitor extends AbstractOCLinEcoreCSPreOrderVisitor
 {
-	public OCLinEcoreCSPreOrderVisitor(@NonNull CS2PivotConversion context) {
+	@AssistedInject
+	public OCLinEcoreCSPreOrderVisitor(@Assisted @NonNull CS2PivotConversion context) {
 		super(context);
 	}
 }
\ No newline at end of file
diff --git a/examples/org.eclipse.ocl.examples.xtext.oclstdlib/src/org/eclipse/ocl/examples/xtext/oclstdlib/cs2as/OCLstdlibCS2ASRuntimeModule.java b/examples/org.eclipse.ocl.examples.xtext.oclstdlib/src/org/eclipse/ocl/examples/xtext/oclstdlib/cs2as/OCLstdlibCS2ASRuntimeModule.java
index 18252ad..85e913a 100644
--- a/examples/org.eclipse.ocl.examples.xtext.oclstdlib/src/org/eclipse/ocl/examples/xtext/oclstdlib/cs2as/OCLstdlibCS2ASRuntimeModule.java
+++ b/examples/org.eclipse.ocl.examples.xtext.oclstdlib/src/org/eclipse/ocl/examples/xtext/oclstdlib/cs2as/OCLstdlibCS2ASRuntimeModule.java
@@ -1,12 +1,11 @@
 package org.eclipse.ocl.examples.xtext.oclstdlib.cs2as;
 
-import org.eclipse.ocl.examples.xtext.base.cs2as.ICS2ASFactory;
 import org.eclipse.xtext.service.AbstractGenericModule;
 
 
 public class OCLstdlibCS2ASRuntimeModule extends AbstractGenericModule {
 	
-	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
-		return OCLstdlibCS2ASFactory.class;
-	}
+//	public Class<? extends ICS2ASFactory> bindICS2ASFactory() {
+//		return OCLstdlibCS2ASFactory.class;
+//	}
 }
\ No newline at end of file
