catch up with dev
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0d39d2f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,40 @@
+**/bin/
+**/target/
+**/VAADIN/gwt-unitCache/
+**/VAADIN/widgetsets/
+**._trace
+**.log.properties
+**git.properties
+**/target/
+**/.metadata/
+
+**/emf-gen/**/.gitignore
+**/src-gen/**/.gitignore
+**/git.properties
+**/*.java._trace
+**/*.log
+**/*.log.properties
+
+**/bin/
+**/build/
+*.class
+*.ctrl
+**/Debug/
+.DS_Store
+*.ear
+*.war
+
+**/*.actionbin
+**/*.blipbin
+**/*.chartbin
+**/*.cubebin
+**/*.datatypebin
+**/*.dtobin
+**/*.entitybin
+**/*.servicebin
+**/*.tablebin
+**/*.uibin
+**/*.uisemanticbin
+**/*.xtendbin
+**/*.xtextbin
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index 095bde4..0ffdd04 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -17,9 +17,8 @@
         <jenkins.build.dependencies>	
                 <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ecview.addons</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.persistence</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.preferences</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.oxtype</jenkins.build.dependency>
         </jenkins.build.dependencies>
 </jenkins>
diff --git a/org.eclipse.osbp.utils.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.utils.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.utils.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.utils.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.utils.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.utils.feature/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.utils.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.utils.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..f6a7c78
--- /dev/null
+++ b/org.eclipse.osbp.utils.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.utils.feature/feature.xml b/org.eclipse.osbp.utils.feature/feature.xml
index ffe6b41..43acdb9 100644
--- a/org.eclipse.osbp.utils.feature/feature.xml
+++ b/org.eclipse.osbp.utils.feature/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.utils.feature"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.utils">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.utils/.classpath b/org.eclipse.osbp.utils/.classpath
new file mode 100644
index 0000000..12b082f
--- /dev/null
+++ b/org.eclipse.osbp.utils/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="src" path="test/"/>
+	<classpathentry kind="src" path="xtend-gen/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.utils/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.utils/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..724dece
--- /dev/null
+++ b/org.eclipse.osbp.utils/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,3 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.7"]
+com.vaadin.integration.eclipse.previousCompileAction=widgetset
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.utils/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.utils/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.utils/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.utils/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.utils/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8e3baab
--- /dev/null
+++ b/org.eclipse.osbp.utils/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
diff --git a/org.eclipse.osbp.utils/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.utils/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.utils/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.utils/.settings/org.eclipse.pde.core.prefs b/org.eclipse.osbp.utils/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..f29e940
--- /dev/null
+++ b/org.eclipse.osbp.utils/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/org.eclipse.osbp.utils/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.utils/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..bac9b82
--- /dev/null
+++ b/org.eclipse.osbp.utils/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,13 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.iban4j.org-src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.jfairy.org-resources.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.jfairy.org-src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.utils/META-INF/MANIFEST.MF b/org.eclipse.osbp.utils/META-INF/MANIFEST.MF
index aff8bce..449acfb 100644
--- a/org.eclipse.osbp.utils/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.utils/META-INF/MANIFEST.MF
@@ -4,37 +4,34 @@
 Bundle-SymbolicName: org.eclipse.osbp.utils;singleton:=true
 Bundle-Version: 0.9.0.qualifier
 Bundle-Activator: org.eclipse.osbp.utils.Activator
-Import-Package: com.google.gwt.json.client;version="7.3.7",
- javax.inject,
+Import-Package: javax.inject,
  javax.servlet;version="2.6.0",
  org.apache.log4j;version="1.2.15",
  org.eclipse.osbp.ui.api.datamart;version="0.9.0",
  org.osgi.service.event;version="1.3.0"
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
- com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
  org.apache.commons.codec,
  org.apache.commons.lang;bundle-version="2.6.0",
  org.apache.commons.lang3;bundle-version="3.1.0",
  org.eclipse.core.runtime;bundle-version="3.9.0",
- org.eclipse.xtend.lib;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtend.lib;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.emf.ecore.xcore,
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.junit;bundle-version="4.11.0",
  org.joda.convert;bundle-version="1.7.0",
  org.joda.money;bundle-version="0.10.0",
  joda-time;bundle-version="2.7.0",
- org.eclipse.osbp.preferences;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.eventbroker;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.datatype.lib;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.ecview.dsl;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.persistence;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.dsl.dto.lib;bundle-version="0.9.0"
+ org.eclipse.osbp.xtext.oxtype;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.preferences;bundle-version="[0.9.0,0.10.0)"
 Bundle-ClassPath: .
 Export-Package: org.eclipse.osbp.utils;version="0.9.0",
  org.eclipse.osbp.utils.annotation;version="0.9.0",
@@ -44,13 +41,7 @@
  org.eclipse.osbp.utils.currency;version="0.9.0",
  org.eclipse.osbp.utils.currency.test;version="0.9.0",
  org.eclipse.osbp.utils.entityhelper;version="0.9.0",
- org.eclipse.osbp.utils.entitymock;version="0.9.0",
- org.eclipse.osbp.utils.fillertext;version="0.9.0",
- org.eclipse.osbp.utils.fillertext.provider;version="0.9.0",
- org.eclipse.osbp.utils.fillertext.test;version="0.9.0",
- org.eclipse.osbp.utils.session;version="0.9.0",
- org.eclipse.osbp.utils.theme;version="0.9.0",
- org.eclipse.osbp.utils.xtext;version="0.9.0"
+ org.eclipse.osbp.utils.session;version="0.9.0"
 Bundle-Vendor: Eclipse OSBP
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Service-Component: OSGI-INF/eobjectloader.xml
diff --git a/org.eclipse.osbp.utils/pom.xml b/org.eclipse.osbp.utils/pom.xml
index d05f218..c3184d0 100644
--- a/org.eclipse.osbp.utils/pom.xml
+++ b/org.eclipse.osbp.utils/pom.xml
@@ -20,5 +20,13 @@
 	</parent>
 	<artifactId>org.eclipse.osbp.utils</artifactId>
 	<packaging>eclipse-plugin</packaging>
-
+    <dependencies>
+		<dependency>
+	        <groupId>org.eclipse.osbp.ui.api</groupId>
+			<artifactId>org.eclipse.osbp.ui.api</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+            <type>eclipse-plugin</type>
+		</dependency>
+    </dependencies>
+	
 </project>
diff --git a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/Activator.java b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/Activator.java
index 61b427d..003974a 100644
--- a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/Activator.java
+++ b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/Activator.java
@@ -16,8 +16,6 @@
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
-import org.eclipse.osbp.preferences.ProductConfiguration;
-
 public class Activator implements BundleActivator {
 
 	private static BundleContext context;
@@ -34,7 +32,6 @@
 		Loginfo li = new Loginfo();
 		li.print( Activator.class.getCanonicalName(), Activator.class.getClassLoader());
 		Activator.context = bundleContext;
-		ProductConfiguration.getLanguages();
 	}
 
 	/*
diff --git a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/EntityUtils.xtend b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/EntityUtils.xtend
index bf5deb2..1ec22ff 100644
--- a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/EntityUtils.xtend
+++ b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/EntityUtils.xtend
@@ -26,8 +26,8 @@
 import org.eclipse.osbp.dsl.semantic.dto.util.NamingConventionsUtil
 import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage
 import org.eclipse.emf.ecore.EObject
-import org.eclipse.osbp.dsl.semantic.common.types.LPackage
 import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.emf.ecore.resource.ResourceSet
 
 class EntityUtils {
 
@@ -39,7 +39,7 @@
 			val objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, searchName)
 			if (objectDescs.iterator.hasNext) {
 				val eobjectDesc = objectDescs.iterator.next
-				if (resourceSet != null) {
+				if (resourceSet !== null) {
 
 					//var dto = resourceSet.getEObject(eobjectDesc.EObjectURI, true) as LDto
 					return eobjectDesc.name.toString
@@ -51,6 +51,26 @@
 		return null
 	}
 
+	def static LDto getDtoForEntity(JvmType type) {
+		return getDtoForEntity(type.qualifiedName, type.eResource.resourceSet)
+	}
+	
+	def static LDto getDtoForEntity(String qualifiedEntityName, ResourceSet resourceSet) {
+		try {
+			var searchName = qualifiedEntityName.getQualifiedDtoNameForQualifiedEntityName;
+			val objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, searchName)
+			if (objectDescs.iterator.hasNext) {
+				val eobjectDesc = objectDescs.iterator.next
+				if (resourceSet !== null) {
+					return resourceSet.getEObject(eobjectDesc.EObjectURI, true) as LDto
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace
+		}
+		return null
+	}
+
 	/**
      * get the full qualified dto name for a LEnum
      * <br>
@@ -58,7 +78,7 @@
      */
 	def static String getDtoFQNForLEnum(LEnum lenum) {
 		var container = lenum as EObject
-		while	((container != null) && !(container instanceof LTypedPackage)) {
+		while	((container !== null) && !(container instanceof LTypedPackage)) {
 			container = container.eContainer
 		}
 		return applyDtoPackageNameFromEntityPackageNameForEnum(
@@ -98,7 +118,7 @@
 	}
 
 	/**
-     * get the full qualified dto name for a LEntity!
+     * get the full qualified dto name for a full qualified entity name!
      * <br>
      * <b>The DTO for an LEntity <u>always</u> ends with the postfix <code>Dto</code>!</b> 
      */
@@ -106,6 +126,15 @@
 		return NamingConventionsUtil.toDtoQualifiedName(qualifiedEntityName);
 	}
 
+	/**
+     * get the full qualified dto name for a full qualified entity name!
+     * <br>
+     * <b>The DTO for an LEntity <u>always</u> ends with the postfix <code>Dto</code>!</b> 
+     */
+	public def static String getQualifiedEntityNameForQualifiedDtoName(String qualifiedDtoName) {
+		return NamingConventionsUtil.toFqnEntityName(qualifiedDtoName);
+	}
+
 	private final static String DTOS_PACKAGE_TOKEN = ".dtos."
 
 	/**
@@ -139,15 +168,15 @@
 			val objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, qualifiedDtoName)
 			if (objectDescs.iterator.hasNext) {
 				val eobjectDesc = objectDescs.iterator.next
-				if (resourceSet != null) {
+				if (resourceSet !== null) {
 					var dto = resourceSet.getEObject(eobjectDesc.EObjectURI, true) as LDto
-					if (dto != null && dto.wrappedType != null) {
+					if (dto !== null && dto.wrappedType !== null) {
 						if (dto.wrappedType.eIsProxy) {
 							val entityDescs = ServiceListener.getEObjectDescriptions(OSBPEntityPackage.Literals.LENTITY,
 								qualifiedDtoName.replace(".dtos.", ".entities.").replace("Dto", ""))
 							if (entityDescs.iterator.hasNext) {
 								val entityObjectDesc = entityDescs.iterator.next
-								if (resourceSet != null) {
+								if (resourceSet !== null) {
 									entity = resourceSet.getEObject(entityObjectDesc.EObjectURI, true) as LEntity
 								}
 							}
@@ -166,7 +195,7 @@
 
 	def static LEntity getEntityFromDto(LDto dto) {
 		var LEntity entity = null
-		if (dto != null && dto.wrappedType != null) {
+		if (dto !== null && dto.wrappedType !== null) {
 			if (dto.wrappedType.eIsProxy) {
 				throw new IllegalStateException
 			} else {
@@ -184,7 +213,7 @@
 			val objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, qualifiedDtoName)
 			if (objectDescs.iterator.hasNext) {
 				val eobjectDesc = objectDescs.iterator.next
-				if (resourceSet != null) {
+				if (resourceSet !== null) {
 					return resourceSet.getEObject(eobjectDesc.EObjectURI, true) as LDto
 				}
 			}
diff --git a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/SystemInformation.java b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/SystemInformation.java
index 7a74c7d..3a6c7c6 100644
--- a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/SystemInformation.java
+++ b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/common/SystemInformation.java
@@ -13,18 +13,22 @@
 package org.eclipse.osbp.utils.common;
 
 public class SystemInformation {
-	
-	private static String OS = System.getProperty("os.name").toLowerCase();
+
+	private static String operatingSystem = System.getProperty("os.name").toLowerCase();
+
+	private SystemInformation() {
+	}
 
 	public static boolean isWindowsOS() {
-		return (OS.indexOf("win") >= 0);
+		return operatingSystem.indexOf("win") >= 0;
 	}
 
 	public static boolean isMacOS() {
-		return (OS.indexOf("mac") >= 0);
+		return operatingSystem.indexOf("mac") >= 0;
 	}
 
 	public static boolean isUnixOS() {
-		return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 );
+		return operatingSystem.indexOf("nix") >= 0 || operatingSystem.indexOf("nux") >= 0
+				|| operatingSystem.indexOf("aix") >= 0;
 	}
 }
\ No newline at end of file
diff --git a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/entityhelper/DataType.xtend b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/entityhelper/DataType.xtend
index 37257c6..7c8491c 100644
--- a/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/entityhelper/DataType.xtend
+++ b/org.eclipse.osbp.utils/src/org/eclipse/osbp/utils/entityhelper/DataType.xtend
@@ -12,41 +12,46 @@
  * 
  * 
  *  This copyright notice shows up in the generated Java code
- *
+ * 
  */
- 
+
 package org.eclipse.osbp.utils.entityhelper
 
 import com.google.inject.Inject
 import java.util.Date
 import org.eclipse.emf.ecore.resource.ResourceSet
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
 import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage
 import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
 import org.eclipse.osbp.ecview.dsl.extensions.TypeHelper
+import org.eclipse.osbp.ui.api.datamart.IDataMart.EType
 import org.eclipse.xtext.common.types.JvmEnumerationType
 import org.eclipse.xtext.common.types.JvmType
 import org.eclipse.xtext.common.types.access.IJvmTypeProvider
-import org.eclipse.osbp.ui.api.datamart.IDataMart.EType
 
 public class DataType {
-        
-  	@Inject
-  	@Extension
-  	private TypeHelper typeHelper;
-  	
-  	@Inject
-  	IJvmTypeProvider.Factory typeProviderFactory
-  
-    def public LDataType getLDataType(LEntityAttribute attributeRef) {
-        var type = attributeRef.type
-        var lDataType = null as LDataType
-        if  (type instanceof LDataType) {
-            lDataType = type as LDataType
-        }
-        return lDataType
-    }
-    
-   def public JvmType getJvmType(LEntityAttribute attributeRef) {
+
+	@Inject
+	@Extension
+	private TypeHelper typeHelper;
+
+	@Inject ModelExtensions entityExtensions
+
+	@Inject
+	IJvmTypeProvider.Factory typeProviderFactory
+
+	def public LDataType getLDataType(LEntityAttribute attributeRef) {
+		var type = attributeRef.type
+		var lDataType = null as LDataType
+		if (type instanceof LDataType) {
+			lDataType = type as LDataType
+		}
+		return lDataType
+	}
+
+	def public JvmType getJvmType(LEntityAttribute attributeRef) {
 		var type = attributeRef.type
 		var lDataType = null as LDataType
 		var ltype = null as JvmType
@@ -61,12 +66,16 @@
 			} else {
 				var jvmTypeReference = lDataType.jvmTypeReference
 				ltype = jvmTypeReference.type
-				if (ltype != null) {
+				if (ltype !== null) {
 					return ltype;
 				}
 			}
+		} else if (type instanceof LEnum) {
+			var LPackage pkg = type.eContainer as LPackage
+			val typeProvider = getTypeProvider(attributeRef.eResource.resourceSet)
+			return typeProvider.findTypeByName(pkg.name + "." + type.name)
 		}
-		var typeJvm = attributeRef.typeJvm
+		var typeJvm = entityExtensions.toTypeReference(attributeRef)
 		var typeJvmType = typeJvm.type
 		return typeJvmType
 	}
@@ -75,102 +84,113 @@
 		typeProviderFactory.findOrCreateTypeProvider(rs)
 	}
 
-    def public EType getBasicType(String typeIdentifier) {
-    	if (typeIdentifier != null){
-	        var identifier = typeIdentifier
-	        if  (typeIdentifier.startsWith("java.lang.")) {
-	            identifier = typeIdentifier.substring("java.lang.".length).toLowerCase
-	        }
-	        switch (identifier) {
-	            /**
-	             * Date, String, int, boolean, Time 
-	             */
-	            case "boolean": return EType.BOOLEAN
-	            case "byte": return EType.BYTE
-	            case "short": return EType.SHORT
-	            case "int": return EType.INTEGER
-	            case "integer": return EType.INTEGER
-	            case "long": return EType.LONG
-	            case "double": return EType.DOUBLE
-	            case "float": return EType.FLOAT
-	            case "BigDecimal": return EType.DOUBLE
-	            case "java.math.BigDecimal": return EType.DOUBLE
-	            case "string": return EType.STRING
-	            case "java.util.Date": return EType.DATE
-	        }
-        }
-        return EType.none
-    }
-
-
-    def public EType getBasicType(JvmType type) {
-    	if	(type.boolean) {
-    		return EType.BOOLEAN
+	def public EType getBasicType(String typeIdentifier) {
+		if (typeIdentifier !== null) {
+			var identifier = typeIdentifier
+			if (typeIdentifier.startsWith("java.lang.")) {
+				identifier = typeIdentifier.substring("java.lang.".length).toLowerCase
+			}
+			switch (identifier) {
+				/**
+				 * Date, String, int, boolean, Time 
+				 */
+				case "boolean": return EType.BOOLEAN
+				case "byte": return EType.BYTE
+				case "short": return EType.SHORT
+				case "int": return EType.INTEGER
+				case "integer": return EType.INTEGER
+				case "long": return EType.LONG
+				case "double": return EType.DOUBLE
+				case "float": return EType.FLOAT
+				case "BigDecimal": return EType.DOUBLE
+				case "java.math.BigDecimal": return EType.DOUBLE
+				case "string": return EType.STRING
+				case "java.util.Date": return EType.DATE
+			}
 		}
-		else if (type.numberWithDigits) {
+		return EType.NONE
+	}
+
+	def public EType getBasicType(JvmType type) {
+		if (type.boolean) {
+			return EType.BOOLEAN
+		} else if (type.numberWithDigits) {
 			val retcode = getBasicType(type.identifier)
-			if	(retcode != EType.none) {
+			if (retcode !== EType.NONE) {
 				return retcode
 			}
 			return EType.DOUBLE
-		}
-		else if (type.numberWithoutDigits) {
+		} else if (type.numberWithoutDigits) {
 			val retcode = getBasicType(type.identifier)
-			if	(retcode != EType.none) {
+			if (retcode !== EType.NONE) {
 				return retcode
 			}
 			return EType.INTEGER
-		}
-		else if (type.string) {
+		} else if (type.string) {
 			return EType.STRING
-		}
-		else if (type.date) {
+		} else if (type.date) {
 			return EType.DATE
-    	}
-    	else if (type instanceof JvmEnumerationType) {
-    		return EType.LENUM;
-    	}
-        return getBasicType(type.identifier)
-    }
+		} else if (type instanceof JvmEnumerationType) {
+			return EType.LENUM;
+		}
+		return getBasicType(type.identifier)
+	}
 
-    def public EType getBasicType(LEntityAttribute attribute) {
-    	var lDataType = getLDataType(attribute)
-    	if	(lDataType != null) {
-	    	if	(lDataType.date) {
-    			return EType.DATE
-    		}
-    		if	("blobMapping".equals(lDataType.name)) {
-    			return EType.BLOPMAPPING
-    		}
-    	}
-        return getBasicType(getJvmType(attribute))
-    }
+	def public EType getBasicType(LEntityAttribute attribute) {
+		var lDataType = getLDataType(attribute)
+		if (lDataType !== null) {
+			if (lDataType.date) {
+				return EType.DATE
+			}
+			// data type is defined as Blob
+			if (!lDataType.properties.isNullOrEmpty) {
+				if (lDataType.properties.exists[it.key.toLowerCase.equals("blob")]){
+					return EType.BLOPMAPPING
+				}
+			}
+			// Otherwise entity attribute is defined as Blob
+			if (!attribute.properties.isNullOrEmpty) {
+				if (lDataType.properties.exists[it.key.toLowerCase.equals("blob")]){
+					return EType.BLOPMAPPING
+				}
+			}
+			if ("blobMapping".equalsIgnoreCase(lDataType.name)) {
+				return EType.BLOPMAPPING
+			}
+			
+		}
+		return getBasicType(getJvmType(attribute))
+	}
+	
+	def public EType getBasicType(Class<?> typeClass) {
+		return getBasicType(typeClass.canonicalName)
+	}
 
-    def public EType getBasicType(Class<?> typeClass) {
-        return getBasicType(typeClass.canonicalName)
-    }
+	def public boolean canBeCastFrom(LEntityAttribute targetAttribute, Class<?> sourceClass) {
+		return canBeCastFrom(targetAttribute, getBasicType(sourceClass))
+	}
 
-    def public boolean canBeCastFrom(LEntityAttribute targetAttribute, Class<?> sourceClass) {
-        return canBeCastFrom(targetAttribute, getBasicType(sourceClass))
-    }
+	def public boolean canBeCastFrom(LEntityAttribute targetAttribute, EType sourceType) {
+		var targetType = getBasicType(targetAttribute)
 
-    def public boolean canBeCastFrom(LEntityAttribute targetAttribute, EType sourceType) {
-        var targetType = getBasicType(targetAttribute)
-        
-        switch (targetType) {
-            case BOOLEAN: return (sourceType == EType.BOOLEAN)
-            case BYTE: return (sourceType == EType.BYTE)
-            case DATE: return (sourceType == EType.DATE)
-            case FLOAT: return (sourceType == EType.FLOAT || sourceType == EType.LONG || sourceType == EType.INTEGER || sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
-            case DOUBLE: return (sourceType == EType.FLOAT || sourceType == EType.DOUBLE || sourceType == EType.LONG || sourceType == EType.INTEGER || sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
-            case SHORT: return (sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
-            case INTEGER: return (sourceType == EType.INTEGER || sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
-            case LONG: return (sourceType == EType.LONG || sourceType == EType.INTEGER || sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
-            case STRING: return true
-            case TIME: return (sourceType == EType.TIME)
-            case LENUM: return (sourceType == EType.INTEGER || sourceType == EType.BOOLEAN)
-            case none: return false
-        }
-        return false
-    }
+		switch (targetType) {
+			case BOOLEAN: return (sourceType == EType.BOOLEAN)
+			case BYTE: return (sourceType == EType.BYTE)
+			case DATE: return (sourceType == EType.DATE)
+			case FLOAT: return (sourceType == EType.FLOAT || sourceType == EType.LONG || sourceType == EType.INTEGER ||
+				sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
+			case DOUBLE: return (sourceType == EType.FLOAT || sourceType == EType.DOUBLE || sourceType == EType.LONG ||
+				sourceType == EType.INTEGER || sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
+			case SHORT: return (sourceType == EType.SHORT || sourceType == EType.BOOLEAN)
+			case INTEGER: return (sourceType == EType.INTEGER || sourceType == EType.SHORT ||
+				sourceType == EType.BOOLEAN)
+			case LONG: return (sourceType == EType.LONG || sourceType == EType.INTEGER || sourceType == EType.SHORT ||
+				sourceType == EType.BOOLEAN)
+			case STRING: return true
+			case TIME: return (sourceType == EType.TIME)
+			case LENUM: return (sourceType == EType.INTEGER || sourceType == EType.BOOLEAN)
+			case NONE: return false
+		}
+		return false
+	}
 }
diff --git a/org.eclipse.osbp.utils/xtend-gen/.gitignore b/org.eclipse.osbp.utils/xtend-gen/.gitignore
new file mode 100644
index 0000000..2dee463
--- /dev/null
+++ b/org.eclipse.osbp.utils/xtend-gen/.gitignore
@@ -0,0 +1,6 @@
+/.CommonUtils.xtendbin
+/.DataType.xtendbin
+/.EntityUtils.xtendbin
+/.GeneratorConstants.xtendbin
+/.GenericFormatter.xtendbin
+/.PathConstants.xtendbin
diff --git a/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/annotation/CommonUtils.java b/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/annotation/CommonUtils.java
index f0ee58b..e2582b3 100644
--- a/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/annotation/CommonUtils.java
+++ b/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/annotation/CommonUtils.java
@@ -113,8 +113,7 @@
         op.setSimpleName(name);
         value.setOperation(op);
         final JvmEnumerationLiteral literal = this.typesFactory.createJvmEnumerationLiteral();
-        String _name = enumxx.name();
-        literal.setSimpleName(_name);
+        literal.setSimpleName(enumxx.name());
         EList<JvmEnumerationLiteral> _values = value.getValues();
         _values.add(literal);
       }
diff --git a/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/common/EntityUtils.java b/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/common/EntityUtils.java
index 19920b1..c745a54 100644
--- a/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/common/EntityUtils.java
+++ b/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/common/EntityUtils.java
@@ -14,11 +14,7 @@
  */
 package org.eclipse.osbp.utils.common;
 
-import com.google.common.base.Objects;
-import java.util.Iterator;
-import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
 import org.eclipse.osbp.dsl.semantic.common.types.LType;
@@ -32,7 +28,6 @@
 import org.eclipse.osbp.utils.common.ServiceListener;
 import org.eclipse.xtend2.lib.StringConcatenation;
 import org.eclipse.xtext.common.types.JvmType;
-import org.eclipse.xtext.naming.QualifiedName;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.xbase.lib.Exceptions;
 
@@ -41,19 +36,41 @@
   public static String getQualifiedDtoNameForEntity(final JvmType type) {
     try {
       String qualifiedEntityName = type.getQualifiedName();
-      Resource _eResource = type.eResource();
-      ResourceSet resourceSet = _eResource.getResourceSet();
+      ResourceSet resourceSet = type.eResource().getResourceSet();
       String searchName = EntityUtils.getQualifiedDtoNameForQualifiedEntityName(qualifiedEntityName);
       final Iterable<IEObjectDescription> objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, searchName);
-      Iterator<IEObjectDescription> _iterator = objectDescs.iterator();
-      boolean _hasNext = _iterator.hasNext();
+      boolean _hasNext = objectDescs.iterator().hasNext();
       if (_hasNext) {
-        Iterator<IEObjectDescription> _iterator_1 = objectDescs.iterator();
-        final IEObjectDescription eobjectDesc = _iterator_1.next();
-        boolean _notEquals = (!Objects.equal(resourceSet, null));
-        if (_notEquals) {
-          QualifiedName _name = eobjectDesc.getName();
-          return _name.toString();
+        final IEObjectDescription eobjectDesc = objectDescs.iterator().next();
+        if ((resourceSet != null)) {
+          return eobjectDesc.getName().toString();
+        }
+      }
+    } catch (final Throwable _t) {
+      if (_t instanceof Exception) {
+        final Exception e = (Exception)_t;
+        e.printStackTrace();
+      } else {
+        throw Exceptions.sneakyThrow(_t);
+      }
+    }
+    return null;
+  }
+  
+  public static LDto getDtoForEntity(final JvmType type) {
+    return EntityUtils.getDtoForEntity(type.getQualifiedName(), type.eResource().getResourceSet());
+  }
+  
+  public static LDto getDtoForEntity(final String qualifiedEntityName, final ResourceSet resourceSet) {
+    try {
+      String searchName = EntityUtils.getQualifiedDtoNameForQualifiedEntityName(qualifiedEntityName);
+      final Iterable<IEObjectDescription> objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, searchName);
+      boolean _hasNext = objectDescs.iterator().hasNext();
+      if (_hasNext) {
+        final IEObjectDescription eobjectDesc = objectDescs.iterator().next();
+        if ((resourceSet != null)) {
+          EObject _eObject = resourceSet.getEObject(eobjectDesc.getEObjectURI(), true);
+          return ((LDto) _eObject);
         }
       }
     } catch (final Throwable _t) {
@@ -74,16 +91,15 @@
    */
   public static String getDtoFQNForLEnum(final LEnum lenum) {
     EObject container = ((EObject) lenum);
-    while (((!Objects.equal(container, null)) && (!(container instanceof LTypedPackage)))) {
-      EObject _eContainer = container.eContainer();
-      container = _eContainer;
+    while (((container != null) && (!(container instanceof LTypedPackage)))) {
+      container = container.eContainer();
     }
     StringConcatenation _builder = new StringConcatenation();
     String _name = ((LTypedPackage) container).getName();
-    _builder.append(_name, "");
+    _builder.append(_name);
     _builder.append(".");
     String _name_1 = lenum.getName();
-    _builder.append(_name_1, "");
+    _builder.append(_name_1);
     return EntityUtils.applyDtoPackageNameFromEntityPackageNameForEnum(_builder.toString());
   }
   
@@ -93,8 +109,7 @@
    * <b>The DTO for an LBean <u>always</u> ends with the postfix <code>Dto</code>!</b>
    */
   public static String getDtoFQNForLBean(final LBean bean) {
-    String _fQNForLBean = EntityUtils.getFQNForLBean(bean);
-    return EntityUtils.getQualifiedDtoNameForQualifiedEntityName(_fQNForLBean);
+    return EntityUtils.getQualifiedDtoNameForQualifiedEntityName(EntityUtils.getFQNForLBean(bean));
   }
   
   /**
@@ -103,8 +118,7 @@
    * <b>The DTO for an LEntity <u>always</u> ends with the postfix <code>Dto</code>!</b>
    */
   public static String getDtoFQNForLEntity(final LEntity entity) {
-    String _fQNForLEntity = EntityUtils.getFQNForLEntity(entity);
-    return EntityUtils.getQualifiedDtoNameForQualifiedEntityName(_fQNForLEntity);
+    return EntityUtils.getQualifiedDtoNameForQualifiedEntityName(EntityUtils.getFQNForLEntity(entity));
   }
   
   /**
@@ -114,10 +128,10 @@
     StringConcatenation _builder = new StringConcatenation();
     EObject _eContainer = entity.eContainer();
     String _name = ((LTypedPackage) _eContainer).getName();
-    _builder.append(_name, "");
+    _builder.append(_name);
     _builder.append(".");
     String _name_1 = entity.getName();
-    _builder.append(_name_1, "");
+    _builder.append(_name_1);
     return _builder.toString();
   }
   
@@ -128,15 +142,15 @@
     StringConcatenation _builder = new StringConcatenation();
     EObject _eContainer = bean.eContainer();
     String _name = ((LTypedPackage) _eContainer).getName();
-    _builder.append(_name, "");
+    _builder.append(_name);
     _builder.append(".");
     String _name_1 = bean.getName();
-    _builder.append(_name_1, "");
+    _builder.append(_name_1);
     return _builder.toString();
   }
   
   /**
-   * get the full qualified dto name for a LEntity!
+   * get the full qualified dto name for a full qualified entity name!
    * <br>
    * <b>The DTO for an LEntity <u>always</u> ends with the postfix <code>Dto</code>!</b>
    */
@@ -144,6 +158,15 @@
     return NamingConventionsUtil.toDtoQualifiedName(qualifiedEntityName);
   }
   
+  /**
+   * get the full qualified dto name for a full qualified entity name!
+   * <br>
+   * <b>The DTO for an LEntity <u>always</u> ends with the postfix <code>Dto</code>!</b>
+   */
+  public static String getQualifiedEntityNameForQualifiedDtoName(final String qualifiedDtoName) {
+    return NamingConventionsUtil.toFqnEntityName(qualifiedDtoName);
+  }
+  
   private final static String DTOS_PACKAGE_TOKEN = ".dtos.";
   
   /**
@@ -172,50 +195,30 @@
     LEntity entity = null;
     try {
       String qualifiedDtoName = type.getQualifiedName();
-      Resource _eResource = type.eResource();
-      ResourceSet resourceSet = _eResource.getResourceSet();
+      ResourceSet resourceSet = type.eResource().getResourceSet();
       final Iterable<IEObjectDescription> objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, qualifiedDtoName);
-      Iterator<IEObjectDescription> _iterator = objectDescs.iterator();
-      boolean _hasNext = _iterator.hasNext();
+      boolean _hasNext = objectDescs.iterator().hasNext();
       if (_hasNext) {
-        Iterator<IEObjectDescription> _iterator_1 = objectDescs.iterator();
-        final IEObjectDescription eobjectDesc = _iterator_1.next();
-        boolean _notEquals = (!Objects.equal(resourceSet, null));
-        if (_notEquals) {
-          URI _eObjectURI = eobjectDesc.getEObjectURI();
-          EObject _eObject = resourceSet.getEObject(_eObjectURI, true);
+        final IEObjectDescription eobjectDesc = objectDescs.iterator().next();
+        if ((resourceSet != null)) {
+          EObject _eObject = resourceSet.getEObject(eobjectDesc.getEObjectURI(), true);
           LDto dto = ((LDto) _eObject);
-          boolean _and = false;
-          boolean _notEquals_1 = (!Objects.equal(dto, null));
-          if (!_notEquals_1) {
-            _and = false;
-          } else {
-            LType _wrappedType = dto.getWrappedType();
-            boolean _notEquals_2 = (!Objects.equal(_wrappedType, null));
-            _and = _notEquals_2;
-          }
-          if (_and) {
-            LType _wrappedType_1 = dto.getWrappedType();
-            boolean _eIsProxy = _wrappedType_1.eIsProxy();
+          if (((dto != null) && (dto.getWrappedType() != null))) {
+            boolean _eIsProxy = dto.getWrappedType().eIsProxy();
             if (_eIsProxy) {
-              String _replace = qualifiedDtoName.replace(".dtos.", ".entities.");
-              String _replace_1 = _replace.replace("Dto", "");
-              final Iterable<IEObjectDescription> entityDescs = ServiceListener.getEObjectDescriptions(OSBPEntityPackage.Literals.LENTITY, _replace_1);
-              Iterator<IEObjectDescription> _iterator_2 = entityDescs.iterator();
-              boolean _hasNext_1 = _iterator_2.hasNext();
+              final Iterable<IEObjectDescription> entityDescs = ServiceListener.getEObjectDescriptions(OSBPEntityPackage.Literals.LENTITY, 
+                qualifiedDtoName.replace(".dtos.", ".entities.").replace("Dto", ""));
+              boolean _hasNext_1 = entityDescs.iterator().hasNext();
               if (_hasNext_1) {
-                Iterator<IEObjectDescription> _iterator_3 = entityDescs.iterator();
-                final IEObjectDescription entityObjectDesc = _iterator_3.next();
-                boolean _notEquals_3 = (!Objects.equal(resourceSet, null));
-                if (_notEquals_3) {
-                  URI _eObjectURI_1 = entityObjectDesc.getEObjectURI();
-                  EObject _eObject_1 = resourceSet.getEObject(_eObjectURI_1, true);
+                final IEObjectDescription entityObjectDesc = entityDescs.iterator().next();
+                if ((resourceSet != null)) {
+                  EObject _eObject_1 = resourceSet.getEObject(entityObjectDesc.getEObjectURI(), true);
                   entity = ((LEntity) _eObject_1);
                 }
               }
             } else {
-              LType _wrappedType_2 = dto.getWrappedType();
-              entity = ((LEntity) _wrappedType_2);
+              LType _wrappedType = dto.getWrappedType();
+              entity = ((LEntity) _wrappedType);
             }
           }
         }
@@ -232,23 +235,13 @@
   
   public static LEntity getEntityFromDto(final LDto dto) {
     LEntity entity = null;
-    boolean _and = false;
-    boolean _notEquals = (!Objects.equal(dto, null));
-    if (!_notEquals) {
-      _and = false;
-    } else {
-      LType _wrappedType = dto.getWrappedType();
-      boolean _notEquals_1 = (!Objects.equal(_wrappedType, null));
-      _and = _notEquals_1;
-    }
-    if (_and) {
-      LType _wrappedType_1 = dto.getWrappedType();
-      boolean _eIsProxy = _wrappedType_1.eIsProxy();
+    if (((dto != null) && (dto.getWrappedType() != null))) {
+      boolean _eIsProxy = dto.getWrappedType().eIsProxy();
       if (_eIsProxy) {
         throw new IllegalStateException();
       } else {
-        LType _wrappedType_2 = dto.getWrappedType();
-        entity = ((LEntity) _wrappedType_2);
+        LType _wrappedType = dto.getWrappedType();
+        entity = ((LEntity) _wrappedType);
       }
     }
     return entity;
@@ -257,18 +250,13 @@
   public static LDto getDto(final JvmType type) {
     try {
       String qualifiedDtoName = type.getQualifiedName();
-      Resource _eResource = type.eResource();
-      ResourceSet resourceSet = _eResource.getResourceSet();
+      ResourceSet resourceSet = type.eResource().getResourceSet();
       final Iterable<IEObjectDescription> objectDescs = ServiceListener.getEObjectDescriptions(OSBPDtoPackage.Literals.LDTO, qualifiedDtoName);
-      Iterator<IEObjectDescription> _iterator = objectDescs.iterator();
-      boolean _hasNext = _iterator.hasNext();
+      boolean _hasNext = objectDescs.iterator().hasNext();
       if (_hasNext) {
-        Iterator<IEObjectDescription> _iterator_1 = objectDescs.iterator();
-        final IEObjectDescription eobjectDesc = _iterator_1.next();
-        boolean _notEquals = (!Objects.equal(resourceSet, null));
-        if (_notEquals) {
-          URI _eObjectURI = eobjectDesc.getEObjectURI();
-          EObject _eObject = resourceSet.getEObject(_eObjectURI, true);
+        final IEObjectDescription eobjectDesc = objectDescs.iterator().next();
+        if ((resourceSet != null)) {
+          EObject _eObject = resourceSet.getEObject(eobjectDesc.getEObjectURI(), true);
           return ((LDto) _eObject);
         }
       }
diff --git a/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/entityhelper/DataType.java b/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/entityhelper/DataType.java
index 06dfb50..661f0c0 100644
--- a/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/entityhelper/DataType.java
+++ b/org.eclipse.osbp.utils/xtend-gen/org/eclipse/osbp/utils/entityhelper/DataType.java
@@ -17,9 +17,13 @@
 import com.google.common.base.Objects;
 import com.google.inject.Inject;
 import java.util.Date;
-import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
 import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
 import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
 import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
 import org.eclipse.osbp.ecview.dsl.extensions.TypeHelper;
@@ -29,6 +33,8 @@
 import org.eclipse.xtext.common.types.JvmTypeReference;
 import org.eclipse.xtext.common.types.access.IJvmTypeProvider;
 import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
 
 @SuppressWarnings("all")
 public class DataType {
@@ -37,6 +43,9 @@
   private TypeHelper typeHelper;
   
   @Inject
+  private ModelExtensions entityExtensions;
+  
+  @Inject
   private IJvmTypeProvider.Factory typeProviderFactory;
   
   public LDataType getLDataType(final LEntityAttribute attributeRef) {
@@ -56,30 +65,34 @@
       lDataType = ((LDataType) type);
       boolean _isDate = lDataType.isDate();
       if (_isDate) {
-        Resource _eResource = attributeRef.eResource();
-        ResourceSet _resourceSet = _eResource.getResourceSet();
-        final IJvmTypeProvider typeProvider = this.getTypeProvider(_resourceSet);
-        String _name = Date.class.getName();
-        return typeProvider.findTypeByName(_name);
+        final IJvmTypeProvider typeProvider = this.getTypeProvider(attributeRef.eResource().getResourceSet());
+        return typeProvider.findTypeByName(Date.class.getName());
       } else {
         boolean _isAsBlob = lDataType.isAsBlob();
         if (_isAsBlob) {
-          Resource _eResource_1 = attributeRef.eResource();
-          ResourceSet _resourceSet_1 = _eResource_1.getResourceSet();
-          final IJvmTypeProvider typeProvider_1 = this.getTypeProvider(_resourceSet_1);
+          final IJvmTypeProvider typeProvider_1 = this.getTypeProvider(attributeRef.eResource().getResourceSet());
           return typeProvider_1.findTypeByName("byte[]");
         } else {
           JvmTypeReference jvmTypeReference = lDataType.getJvmTypeReference();
-          JvmType _type = jvmTypeReference.getType();
-          ltype = _type;
-          boolean _notEquals = (!Objects.equal(ltype, null));
-          if (_notEquals) {
+          ltype = jvmTypeReference.getType();
+          if ((ltype != null)) {
             return ltype;
           }
         }
       }
+    } else {
+      if ((type instanceof LEnum)) {
+        EObject _eContainer = ((LEnum)type).eContainer();
+        LPackage pkg = ((LPackage) _eContainer);
+        final IJvmTypeProvider typeProvider_2 = this.getTypeProvider(attributeRef.eResource().getResourceSet());
+        String _name = pkg.getName();
+        String _plus = (_name + ".");
+        String _name_1 = ((LEnum)type).getName();
+        String _plus_1 = (_plus + _name_1);
+        return typeProvider_2.findTypeByName(_plus_1);
+      }
     }
-    JvmTypeReference typeJvm = attributeRef.getTypeJvm();
+    JvmTypeReference typeJvm = this.entityExtensions.toTypeReference(attributeRef);
     JvmType typeJvmType = typeJvm.getType();
     return typeJvmType;
   }
@@ -89,91 +102,42 @@
   }
   
   public IDataMart.EType getBasicType(final String typeIdentifier) {
-    boolean _notEquals = (!Objects.equal(typeIdentifier, null));
-    if (_notEquals) {
+    if ((typeIdentifier != null)) {
       String identifier = typeIdentifier;
       boolean _startsWith = typeIdentifier.startsWith("java.lang.");
       if (_startsWith) {
-        int _length = "java.lang.".length();
-        String _substring = typeIdentifier.substring(_length);
-        String _lowerCase = _substring.toLowerCase();
-        identifier = _lowerCase;
+        identifier = typeIdentifier.substring("java.lang.".length()).toLowerCase();
       }
-      boolean _matched = false;
-      if (!_matched) {
-        if (Objects.equal(identifier, "boolean")) {
-          _matched=true;
-          return IDataMart.EType.BOOLEAN;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "byte")) {
-          _matched=true;
-          return IDataMart.EType.BYTE;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "short")) {
-          _matched=true;
-          return IDataMart.EType.SHORT;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "int")) {
-          _matched=true;
-          return IDataMart.EType.INTEGER;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "integer")) {
-          _matched=true;
-          return IDataMart.EType.INTEGER;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "long")) {
-          _matched=true;
-          return IDataMart.EType.LONG;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "double")) {
-          _matched=true;
-          return IDataMart.EType.DOUBLE;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "float")) {
-          _matched=true;
-          return IDataMart.EType.FLOAT;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "BigDecimal")) {
-          _matched=true;
-          return IDataMart.EType.DOUBLE;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "java.math.BigDecimal")) {
-          _matched=true;
-          return IDataMart.EType.DOUBLE;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "string")) {
-          _matched=true;
-          return IDataMart.EType.STRING;
-        }
-      }
-      if (!_matched) {
-        if (Objects.equal(identifier, "java.util.Date")) {
-          _matched=true;
-          return IDataMart.EType.DATE;
+      if (identifier != null) {
+        switch (identifier) {
+          case "boolean":
+            return IDataMart.EType.BOOLEAN;
+          case "byte":
+            return IDataMart.EType.BYTE;
+          case "short":
+            return IDataMart.EType.SHORT;
+          case "int":
+            return IDataMart.EType.INTEGER;
+          case "integer":
+            return IDataMart.EType.INTEGER;
+          case "long":
+            return IDataMart.EType.LONG;
+          case "double":
+            return IDataMart.EType.DOUBLE;
+          case "float":
+            return IDataMart.EType.FLOAT;
+          case "BigDecimal":
+            return IDataMart.EType.DOUBLE;
+          case "java.math.BigDecimal":
+            return IDataMart.EType.DOUBLE;
+          case "string":
+            return IDataMart.EType.STRING;
+          case "java.util.Date":
+            return IDataMart.EType.DATE;
         }
       }
     }
-    return IDataMart.EType.none;
+    return IDataMart.EType.NONE;
   }
   
   public IDataMart.EType getBasicType(final JvmType type) {
@@ -183,20 +147,16 @@
     } else {
       boolean _isNumberWithDigits = this.typeHelper.isNumberWithDigits(type);
       if (_isNumberWithDigits) {
-        String _identifier = type.getIdentifier();
-        final IDataMart.EType retcode = this.getBasicType(_identifier);
-        boolean _notEquals = (!Objects.equal(retcode, IDataMart.EType.none));
-        if (_notEquals) {
+        final IDataMart.EType retcode = this.getBasicType(type.getIdentifier());
+        if ((retcode != IDataMart.EType.NONE)) {
           return retcode;
         }
         return IDataMart.EType.DOUBLE;
       } else {
         boolean _isNumberWithoutDigits = this.typeHelper.isNumberWithoutDigits(type);
         if (_isNumberWithoutDigits) {
-          String _identifier_1 = type.getIdentifier();
-          final IDataMart.EType retcode_1 = this.getBasicType(_identifier_1);
-          boolean _notEquals_1 = (!Objects.equal(retcode_1, IDataMart.EType.none));
-          if (_notEquals_1) {
+          final IDataMart.EType retcode_1 = this.getBasicType(type.getIdentifier());
+          if ((retcode_1 != IDataMart.EType.NONE)) {
             return retcode_1;
           }
           return IDataMart.EType.INTEGER;
@@ -217,36 +177,52 @@
         }
       }
     }
-    String _identifier_2 = type.getIdentifier();
-    return this.getBasicType(_identifier_2);
+    return this.getBasicType(type.getIdentifier());
   }
   
   public IDataMart.EType getBasicType(final LEntityAttribute attribute) {
     LDataType lDataType = this.getLDataType(attribute);
-    boolean _notEquals = (!Objects.equal(lDataType, null));
-    if (_notEquals) {
+    if ((lDataType != null)) {
       boolean _isDate = lDataType.isDate();
       if (_isDate) {
         return IDataMart.EType.DATE;
       }
-      String _name = lDataType.getName();
-      boolean _equals = "blobMapping".equals(_name);
-      if (_equals) {
+      boolean _isNullOrEmpty = IterableExtensions.isNullOrEmpty(lDataType.getProperties());
+      boolean _not = (!_isNullOrEmpty);
+      if (_not) {
+        final Function1<LKeyAndValue, Boolean> _function = (LKeyAndValue it) -> {
+          return Boolean.valueOf(it.getKey().toLowerCase().equals("blob"));
+        };
+        boolean _exists = IterableExtensions.<LKeyAndValue>exists(lDataType.getProperties(), _function);
+        if (_exists) {
+          return IDataMart.EType.BLOPMAPPING;
+        }
+      }
+      boolean _isNullOrEmpty_1 = IterableExtensions.isNullOrEmpty(attribute.getProperties());
+      boolean _not_1 = (!_isNullOrEmpty_1);
+      if (_not_1) {
+        final Function1<LKeyAndValue, Boolean> _function_1 = (LKeyAndValue it) -> {
+          return Boolean.valueOf(it.getKey().toLowerCase().equals("blob"));
+        };
+        boolean _exists_1 = IterableExtensions.<LKeyAndValue>exists(lDataType.getProperties(), _function_1);
+        if (_exists_1) {
+          return IDataMart.EType.BLOPMAPPING;
+        }
+      }
+      boolean _equalsIgnoreCase = "blobMapping".equalsIgnoreCase(lDataType.getName());
+      if (_equalsIgnoreCase) {
         return IDataMart.EType.BLOPMAPPING;
       }
     }
-    JvmType _jvmType = this.getJvmType(attribute);
-    return this.getBasicType(_jvmType);
+    return this.getBasicType(this.getJvmType(attribute));
   }
   
   public IDataMart.EType getBasicType(final Class<?> typeClass) {
-    String _canonicalName = typeClass.getCanonicalName();
-    return this.getBasicType(_canonicalName);
+    return this.getBasicType(typeClass.getCanonicalName());
   }
   
   public boolean canBeCastFrom(final LEntityAttribute targetAttribute, final Class<?> sourceClass) {
-    IDataMart.EType _basicType = this.getBasicType(sourceClass);
-    return this.canBeCastFrom(targetAttribute, _basicType);
+    return this.canBeCastFrom(targetAttribute, this.getBasicType(sourceClass));
   }
   
   public boolean canBeCastFrom(final LEntityAttribute targetAttribute, final IDataMart.EType sourceType) {
@@ -260,140 +236,26 @@
         case DATE:
           return Objects.equal(sourceType, IDataMart.EType.DATE);
         case FLOAT:
-          boolean _or = false;
-          boolean _or_1 = false;
-          boolean _or_2 = false;
-          boolean _or_3 = false;
-          boolean _equals = Objects.equal(sourceType, IDataMart.EType.FLOAT);
-          if (_equals) {
-            _or_3 = true;
-          } else {
-            boolean _equals_1 = Objects.equal(sourceType, IDataMart.EType.LONG);
-            _or_3 = _equals_1;
-          }
-          if (_or_3) {
-            _or_2 = true;
-          } else {
-            boolean _equals_2 = Objects.equal(sourceType, IDataMart.EType.INTEGER);
-            _or_2 = _equals_2;
-          }
-          if (_or_2) {
-            _or_1 = true;
-          } else {
-            boolean _equals_3 = Objects.equal(sourceType, IDataMart.EType.SHORT);
-            _or_1 = _equals_3;
-          }
-          if (_or_1) {
-            _or = true;
-          } else {
-            boolean _equals_4 = Objects.equal(sourceType, IDataMart.EType.BOOLEAN);
-            _or = _equals_4;
-          }
-          return _or;
+          return ((((Objects.equal(sourceType, IDataMart.EType.FLOAT) || Objects.equal(sourceType, IDataMart.EType.LONG)) || Objects.equal(sourceType, IDataMart.EType.INTEGER)) || 
+            Objects.equal(sourceType, IDataMart.EType.SHORT)) || Objects.equal(sourceType, IDataMart.EType.BOOLEAN));
         case DOUBLE:
-          boolean _or_4 = false;
-          boolean _or_5 = false;
-          boolean _or_6 = false;
-          boolean _or_7 = false;
-          boolean _or_8 = false;
-          boolean _equals_5 = Objects.equal(sourceType, IDataMart.EType.FLOAT);
-          if (_equals_5) {
-            _or_8 = true;
-          } else {
-            boolean _equals_6 = Objects.equal(sourceType, IDataMart.EType.DOUBLE);
-            _or_8 = _equals_6;
-          }
-          if (_or_8) {
-            _or_7 = true;
-          } else {
-            boolean _equals_7 = Objects.equal(sourceType, IDataMart.EType.LONG);
-            _or_7 = _equals_7;
-          }
-          if (_or_7) {
-            _or_6 = true;
-          } else {
-            boolean _equals_8 = Objects.equal(sourceType, IDataMart.EType.INTEGER);
-            _or_6 = _equals_8;
-          }
-          if (_or_6) {
-            _or_5 = true;
-          } else {
-            boolean _equals_9 = Objects.equal(sourceType, IDataMart.EType.SHORT);
-            _or_5 = _equals_9;
-          }
-          if (_or_5) {
-            _or_4 = true;
-          } else {
-            boolean _equals_10 = Objects.equal(sourceType, IDataMart.EType.BOOLEAN);
-            _or_4 = _equals_10;
-          }
-          return _or_4;
+          return (((((Objects.equal(sourceType, IDataMart.EType.FLOAT) || Objects.equal(sourceType, IDataMart.EType.DOUBLE)) || Objects.equal(sourceType, IDataMart.EType.LONG)) || 
+            Objects.equal(sourceType, IDataMart.EType.INTEGER)) || Objects.equal(sourceType, IDataMart.EType.SHORT)) || Objects.equal(sourceType, IDataMart.EType.BOOLEAN));
         case SHORT:
-          boolean _or_9 = false;
-          boolean _equals_11 = Objects.equal(sourceType, IDataMart.EType.SHORT);
-          if (_equals_11) {
-            _or_9 = true;
-          } else {
-            boolean _equals_12 = Objects.equal(sourceType, IDataMart.EType.BOOLEAN);
-            _or_9 = _equals_12;
-          }
-          return _or_9;
+          return (Objects.equal(sourceType, IDataMart.EType.SHORT) || Objects.equal(sourceType, IDataMart.EType.BOOLEAN));
         case INTEGER:
-          boolean _or_10 = false;
-          boolean _or_11 = false;
-          boolean _equals_13 = Objects.equal(sourceType, IDataMart.EType.INTEGER);
-          if (_equals_13) {
-            _or_11 = true;
-          } else {
-            boolean _equals_14 = Objects.equal(sourceType, IDataMart.EType.SHORT);
-            _or_11 = _equals_14;
-          }
-          if (_or_11) {
-            _or_10 = true;
-          } else {
-            boolean _equals_15 = Objects.equal(sourceType, IDataMart.EType.BOOLEAN);
-            _or_10 = _equals_15;
-          }
-          return _or_10;
+          return ((Objects.equal(sourceType, IDataMart.EType.INTEGER) || Objects.equal(sourceType, IDataMart.EType.SHORT)) || 
+            Objects.equal(sourceType, IDataMart.EType.BOOLEAN));
         case LONG:
-          boolean _or_12 = false;
-          boolean _or_13 = false;
-          boolean _or_14 = false;
-          boolean _equals_16 = Objects.equal(sourceType, IDataMart.EType.LONG);
-          if (_equals_16) {
-            _or_14 = true;
-          } else {
-            boolean _equals_17 = Objects.equal(sourceType, IDataMart.EType.INTEGER);
-            _or_14 = _equals_17;
-          }
-          if (_or_14) {
-            _or_13 = true;
-          } else {
-            boolean _equals_18 = Objects.equal(sourceType, IDataMart.EType.SHORT);
-            _or_13 = _equals_18;
-          }
-          if (_or_13) {
-            _or_12 = true;
-          } else {
-            boolean _equals_19 = Objects.equal(sourceType, IDataMart.EType.BOOLEAN);
-            _or_12 = _equals_19;
-          }
-          return _or_12;
+          return (((Objects.equal(sourceType, IDataMart.EType.LONG) || Objects.equal(sourceType, IDataMart.EType.INTEGER)) || Objects.equal(sourceType, IDataMart.EType.SHORT)) || 
+            Objects.equal(sourceType, IDataMart.EType.BOOLEAN));
         case STRING:
           return true;
         case TIME:
           return Objects.equal(sourceType, IDataMart.EType.TIME);
         case LENUM:
-          boolean _or_15 = false;
-          boolean _equals_20 = Objects.equal(sourceType, IDataMart.EType.INTEGER);
-          if (_equals_20) {
-            _or_15 = true;
-          } else {
-            boolean _equals_21 = Objects.equal(sourceType, IDataMart.EType.BOOLEAN);
-            _or_15 = _equals_21;
-          }
-          return _or_15;
-        case none:
+          return (Objects.equal(sourceType, IDataMart.EType.INTEGER) || Objects.equal(sourceType, IDataMart.EType.BOOLEAN));
+        case NONE:
           return false;
         default:
           break;