diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java
index 9c2255b..3b7f818 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java
@@ -40,7 +40,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.action.ActionDSLFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='action' modelName='ActionDSL' prefix='ActionDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0 \n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n\n SPDX-License-Identifier: EPL-2.0\n \n Contributors:                                                      \n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n \n generated from ActionDSL.xcore\n\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='action' modelName='ActionDSL' prefix='ActionDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License 2.0 \r\n which accompanies this distribution, and is available at\r\n https://www.eclipse.org/legal/epl-2.0/\r\n\r\n SPDX-License-Identifier: EPL-2.0\r\n \r\n Contributors:                                                      \r\n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\r\n \r\n generated from ActionDSL.xcore\r\n\r\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='actiondsl'"
  * @generated
  */
@@ -222,7 +222,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_PACKAGE___ERESOLVE_PROXY__OBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int ACTION_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Action Package</em>' class.
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend
index 63b2fa8..cd35b13 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend
@@ -666,15 +666,15 @@
 	
 	def List<LEntityFeature> getRefAttributes(ReferenceFilter filter){
 		var results = <LEntityFeature>newArrayList
-		if(filter !== null && filter.refEntity !== null){
+		if(filter !== null && filter.ref !== null){
 			if(filter instanceof ReferenceFilterWithAttr){
 				if(filter.refProperty !== null) {
 					results.add(filter.refProperty)					
 				}
 			}
 			else if(filter instanceof ReferenceFilterWithOutAttr){
-				if(filter.refEntity !== null) {
-					results.add(filter.refEntity)					
+				if(filter.ref !== null) {
+					results.add(filter.ref)					
 				}
 			}
 			if(filter.subCondition !== null){
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java
index 51d2aba..732e57d 100644
--- a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java
@@ -1356,7 +1356,7 @@
   
   public List<LEntityFeature> getRefAttributes(final ReferenceFilter filter) {
     ArrayList<LEntityFeature> results = CollectionLiterals.<LEntityFeature>newArrayList();
-    if (((filter != null) && (filter.getRefEntity() != null))) {
+    if (((filter != null) && (filter.getRef() != null))) {
       if ((filter instanceof ReferenceFilterWithAttr)) {
         LEntityAttribute _refProperty = ((ReferenceFilterWithAttr)filter).getRefProperty();
         boolean _tripleNotEquals = (_refProperty != null);
@@ -1365,10 +1365,10 @@
         }
       } else {
         if ((filter instanceof ReferenceFilterWithOutAttr)) {
-          LEntityReference _refEntity = ((ReferenceFilterWithOutAttr)filter).getRefEntity();
-          boolean _tripleNotEquals_1 = (_refEntity != null);
+          LEntityReference _ref = ((ReferenceFilterWithOutAttr)filter).getRef();
+          boolean _tripleNotEquals_1 = (_ref != null);
           if (_tripleNotEquals_1) {
-            results.add(((ReferenceFilterWithOutAttr)filter).getRefEntity());
+            results.add(((ReferenceFilterWithOutAttr)filter).getRef());
           }
         }
       }
