diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7a7e43b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,58 @@
+
+**/bin/
+**/target/
+**git.properties
+
+*.class
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+*.DS_Store
+.*.java._trace
+*.dat
+*.lck
+*.ctrl
+
+
+**/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/org.eclipse.osbp.infogrid.api/.classpath b/org.eclipse.osbp.infogrid.api/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.api/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.api/.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.infogrid.api/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.api/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//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.emf-gen.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.infogrid.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.api/META-INF/MANIFEST.MF
index b608558..ffaa86f 100644
--- a/org.eclipse.osbp.infogrid.api/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.api/META-INF/MANIFEST.MF
@@ -7,10 +7,10 @@
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.osbp.infogrid.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ecview.extension.grid.model,
- org.eclipse.osbp.ecview.extension.model,
- org.eclipse.core.databinding.beans;bundle-version="1.2.200",
- org.eclipse.core.databinding.property;bundle-version="1.4.200"
+ org.eclipse.osbp.ecview.extension.grid.model;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.extension.model;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.databinding.beans;bundle-version="[1.3.100,1.4.0)",
+ org.eclipse.core.databinding.property;bundle-version="[1.6.0,1.7.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.infogrid.api;version="0.9.0"
 Import-Package: org.osgi.service.component.annotations,
diff --git a/org.eclipse.osbp.infogrid.api/src/org/eclipse/osbp/infogrid/api/IECViewGridSourceDescriptor.java b/org.eclipse.osbp.infogrid.api/src/org/eclipse/osbp/infogrid/api/IECViewGridSourceDescriptor.java
index e2c440e..05fa0ff 100644
--- a/org.eclipse.osbp.infogrid.api/src/org/eclipse/osbp/infogrid/api/IECViewGridSourceDescriptor.java
+++ b/org.eclipse.osbp.infogrid.api/src/org/eclipse/osbp/infogrid/api/IECViewGridSourceDescriptor.java
@@ -19,6 +19,8 @@
 	String PROP_MANUAL_BEANS = "useManualBeans";
 	
 	CxGrid getGrid();
+	
+	void refreshData();
 
 	/**
 	 * If a strategy is set, then it will become notified about saved editor
@@ -39,4 +41,5 @@
 		 */
 		void editorSaved(Object value);
 	}
+	
 }
diff --git a/org.eclipse.osbp.infogrid.ecview/.classpath b/org.eclipse.osbp.infogrid.ecview/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.ecview/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.ecview/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.infogrid.ecview/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..0904e44
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.ecview/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,2 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.7"]
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.ecview/.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.infogrid.ecview/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.ecview/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.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.infogrid.ecview/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.ecview/META-INF/MANIFEST.MF
index 3384f0a..b7c86c9 100644
--- a/org.eclipse.osbp.infogrid.ecview/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.ecview/META-INF/MANIFEST.MF
@@ -11,15 +11,15 @@
  org.eclipse.osbp.ecview.core.extension.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.infogrid.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.infogrid.api;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ecview.extension.grid.model,
+ org.eclipse.osbp.ecview.extension.grid.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.web.ecview.presentation.vaadin;bundle-version="[0.9.0,0.10.0)",
- com.vaadin.server;bundle-version="7.5.7",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
  org.jsoup;bundle-version="1.7.2",
  org.eclipse.osbp.ecview.core.util.emf;bundle-version="[0.9.0,0.10.0)",
  org.apache.commons.beanutils;bundle-version="1.9.2",
- org.eclipse.osbp.ecview.extension.grid.editparts,
- org.eclipse.osbp.ui.api
+ org.eclipse.osbp.ecview.extension.grid.editparts;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ui.api;bundle-version="[0.9.0,0.10.0)"
 Import-Package: org.eclipse.osbp.user;version="0.9.0",
  org.osgi.framework;version="1.8.0",
  org.osgi.service.component;version="1.1.0",
diff --git a/org.eclipse.osbp.infogrid.ecview/src/org/eclipse/osbp/infogrid/ecview/ECViewGridSourceDescriptor.java b/org.eclipse.osbp.infogrid.ecview/src/org/eclipse/osbp/infogrid/ecview/ECViewGridSourceDescriptor.java
index 68dfc3e..f30e84f 100644
--- a/org.eclipse.osbp.infogrid.ecview/src/org/eclipse/osbp/infogrid/ecview/ECViewGridSourceDescriptor.java
+++ b/org.eclipse.osbp.infogrid.ecview/src/org/eclipse/osbp/infogrid/ecview/ECViewGridSourceDescriptor.java
@@ -319,4 +319,9 @@
 			}
 		}
 	}
+
+	@Override
+	public void refreshData() {
+		cxGrid.setSetLastRefreshTime(System.currentTimeMillis());
+	}
 }
diff --git a/org.eclipse.osbp.infogrid.feature/.gitignore b/org.eclipse.osbp.infogrid.feature/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.feature/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.infogrid.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.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.infogrid.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.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.infogrid.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.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
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.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.infogrid.model.edit/.classpath b/org.eclipse.osbp.infogrid.model.edit/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.edit/.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.infogrid.model.edit/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.edit/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.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.infogrid.model.edit/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.model.edit/META-INF/MANIFEST.MF
index c701286..766a1a2 100644
--- a/org.eclipse.osbp.infogrid.model.edit/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.model.edit/META-INF/MANIFEST.MF
@@ -13,6 +13,6 @@
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.osbp.infogrid.model;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.eclipse.emf.edit;visibility:=reexport,
- org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
- org.eclipse.xtext.common.types.edit;bundle-version="[2.7.3,2.8.0)";visibility:=reexport
+ org.eclipse.xtext.common.types;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
+ org.eclipse.xtext.common.types.edit;bundle-version="[2.11.0,2.12.0)";visibility:=reexport
 Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.infogrid.model.editor/.classpath b/org.eclipse.osbp.infogrid.model.editor/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.editor/.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.infogrid.model.editor/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model.editor/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.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.infogrid.model.editor/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.model.editor/META-INF/MANIFEST.MF
index 006fcbf..466fe07 100644
--- a/org.eclipse.osbp.infogrid.model.editor/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.model.editor/META-INF/MANIFEST.MF
@@ -16,5 +16,5 @@
  org.eclipse.emf.ecore.xmi;visibility:=reexport,
  org.eclipse.emf.edit.ui;visibility:=reexport,
  org.eclipse.ui.ide;visibility:=reexport,
- org.eclipse.xtext.common.types.edit;bundle-version="[2.7.3,2.8.0)";visibility:=reexport
+ org.eclipse.xtext.common.types.edit;bundle-version="[2.11.0,2.12.0)";visibility:=reexport
 Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.infogrid.model/.classpath b/org.eclipse.osbp.infogrid.model/.classpath
new file mode 100644
index 0000000..e5c313c
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="src" path="model"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model/.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.infogrid.model/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.model/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.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.infogrid.model/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.model/META-INF/MANIFEST.MF
index 6abff4f..a8e4e82 100644
--- a/org.eclipse.osbp.infogrid.model/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.model/META-INF/MANIFEST.MF
@@ -6,14 +6,14 @@
 Bundle-ClassPath: .
 Bundle-Vendor: Eclipse OSBP
 Bundle-Localization: plugin
-Require-Bundle: org.eclipse.core.runtime,
+Require-Bundle: org.eclipse.core.runtime;resolution:=optional;x-installation:=greedy,
  org.eclipse.emf.ecore;bundle-version="2.10.2";visibility:=reexport,
  org.eclipse.emf.ecore.xmi;visibility:=reexport,
- org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.common.types;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
  com.google.guava,
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtend.lib,
- org.eclipse.xtend.lib.macro
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtend.lib;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtend.lib.macro;bundle-version="[2.11.0,2.12.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.infogrid.model.gridsource;version="0.9.0",
diff --git a/org.eclipse.osbp.infogrid.model/model/gridsource.genmodel b/org.eclipse.osbp.infogrid.model/model/gridsource.genmodel
index ee53f3a..cab3deb 100644
--- a/org.eclipse.osbp.infogrid.model/model/gridsource.genmodel
+++ b/org.eclipse.osbp.infogrid.model/model/gridsource.genmodel
@@ -4,11 +4,11 @@
     modelName="CxGridSource" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
     importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
     usedGenPackages="../../org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel#//types"
-    importOrganizing="true">
+    importOrganizing="true" oSGiCompatible="true">
   <foreignModel>gridsource.ecore</foreignModel>
   <genPackages prefix="CxGridSource" basePackage="org.eclipse.osbp.infogrid.model"
-      disposableProviderFactory="true" loadInitialization="true" extensibleProviderFactory="true"
-      childCreationExtenders="true" ecorePackage="gridsource.ecore#/">
+      disposableProviderFactory="true" extensibleProviderFactory="true" childCreationExtenders="true"
+      ecorePackage="gridsource.ecore#/">
     <genClasses ecoreClass="gridsource.ecore#//CxGridSource">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gridsource.ecore#//CxGridSource/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gridsource.ecore#//CxGridSource/tags"/>
@@ -28,6 +28,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference gridsource.ecore#//CxGridProperty/path"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference gridsource.ecore#//CxGridProperty/style"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gridsource.ecore#//CxGridProperty/dotPath"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute gridsource.ecore#//CxGridProperty/editable"/>
     </genClasses>
     <genClasses ecoreClass="gridsource.ecore#//CxGridNestedField">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference gridsource.ecore#//CxGridNestedField/field"/>
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedField.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedField.java
index 103827f..a7b4552 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedField.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedField.java
@@ -21,12 +21,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedField#getField <em>Field</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedField#getPath <em>Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedField#getDotPath <em>Dot Path</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage#getCxGridNestedField()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedPath.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedPath.java
index bf64bad..404efe3 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedPath.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridNestedPath.java
@@ -21,12 +21,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedPath#getField <em>Field</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedPath#getPath <em>Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedPath#getDotPath <em>Dot Path</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage#getCxGridNestedPath()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridProperty.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridProperty.java
index 570a4e6..692a350 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridProperty.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridProperty.java
@@ -21,13 +21,13 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty#getPath <em>Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty#getStyle <em>Style</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty#getDotPath <em>Dot Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty#isEditable <em>Editable</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage#getCxGridProperty()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSource.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSource.java
index cbb693c..0547e46 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSource.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSource.java
@@ -25,6 +25,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSource#getId <em>Id</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSource#getTags <em>Tags</em>}</li>
@@ -35,7 +36,6 @@
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSource#getInputs <em>Inputs</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSource#getSelectionEventTopic <em>Selection Event Topic</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage#getCxGridSource()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceEQFilter.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceEQFilter.java
index 358d4ea..f392ff0 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceEQFilter.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceEQFilter.java
@@ -21,11 +21,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceEQFilter#getInputTypePropertyPath <em>Input Type Property Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceEQFilter#getRootTypePropertyPath <em>Root Type Property Path</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage#getCxGridSourceEQFilter()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceInput.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceInput.java
index 9eeae4b..235cd22 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceInput.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/CxGridSourceInput.java
@@ -25,12 +25,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceInput#getInputType <em>Input Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceInput#getInputTypeFQN <em>Input Type FQN</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceInput#getFilters <em>Filters</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage#getCxGridSourceInput()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedFieldImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedFieldImpl.java
index edfc31b..f36712b 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedFieldImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedFieldImpl.java
@@ -29,12 +29,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridNestedFieldImpl#getField <em>Field</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridNestedFieldImpl#getPath <em>Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridNestedFieldImpl#getDotPath <em>Dot Path</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedPathImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedPathImpl.java
index f4d16db..e6bfa34 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedPathImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridNestedPathImpl.java
@@ -27,12 +27,12 @@
  * <em><b>Cx Grid Nested Path</b></em>'. <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridNestedPathImpl#getField <em>Field</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridNestedPathImpl#getPath <em>Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridNestedPathImpl#getDotPath <em>Dot Path</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridPropertyImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridPropertyImpl.java
index e7ee99b..0f5b8ad 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridPropertyImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridPropertyImpl.java
@@ -29,13 +29,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridPropertyImpl#getPath <em>Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridPropertyImpl#getStyle <em>Style</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridPropertyImpl#getDotPath <em>Dot Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridPropertyImpl#isEditable <em>Editable</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceEQFilterImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceEQFilterImpl.java
index 0e25dee..d03edb3 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceEQFilterImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceEQFilterImpl.java
@@ -31,11 +31,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceEQFilterImpl#getInputTypePropertyPath <em>Input Type Property Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceEQFilterImpl#getRootTypePropertyPath <em>Root Type Property Path</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceImpl.java
index 3d29782..f084c53 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceImpl.java
@@ -35,6 +35,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceImpl#getId <em>Id</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceImpl#getTags <em>Tags</em>}</li>
@@ -45,7 +46,6 @@
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceImpl#getInputs <em>Inputs</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceImpl#getSelectionEventTopic <em>Selection Event Topic</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceInputImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceInputImpl.java
index d6117aa..11293f4 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceInputImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourceInputImpl.java
@@ -40,12 +40,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceInputImpl#getInputType <em>Input Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceInputImpl#getInputTypeFQN <em>Input Type FQN</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourceInputImpl#getFilters <em>Filters</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourcePackageImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourcePackageImpl.java
index 98ade1d..586ca18 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourcePackageImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/CxGridSourcePackageImpl.java
@@ -12,20 +12,19 @@
  */
  package org.eclipse.osbp.infogrid.model.gridsource.impl;
 
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.common.util.WrappedException;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedField;
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedPath;
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty;
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridSource;
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceEQFilter;
 import org.eclipse.xtext.common.types.TypesPackage;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceFactory;
+import org.eclipse.osbp.infogrid.model.gridsource.CxGridSourceInput;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage;
 import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage;
 import org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridStylePackageImpl;
@@ -42,13 +41,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected String packageFilename = "gridsource.ecore";
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	private EClass cxGridSourceEClass = null;
 
 	/**
@@ -120,6 +112,8 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
 	 * @generated
 	 */
 	public static CxGridSourcePackage init() {
@@ -136,12 +130,13 @@
 		// Obtain or create and register interdependencies
 		CxGridStylePackageImpl theCxGridStylePackage = (CxGridStylePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI) instanceof CxGridStylePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI) : CxGridStylePackage.eINSTANCE);
 
-		// Load packages
-		theCxGridSourcePackage.loadPackage();
+		// Create package meta-data objects
+		theCxGridSourcePackage.createPackageContents();
+		theCxGridStylePackage.createPackageContents();
 
-		// Fix loaded packages
-		theCxGridSourcePackage.fixPackageContents();
-		theCxGridStylePackage.fixPackageContents();
+		// Initialize created meta-data
+		theCxGridSourcePackage.initializePackageContents();
+		theCxGridStylePackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theCxGridSourcePackage.freeze();
@@ -158,9 +153,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridSource() {
-		if (cxGridSourceEClass == null) {
-			cxGridSourceEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI).getEClassifiers().get(0);
-		}
 		return cxGridSourceEClass;
 	}
 
@@ -170,7 +162,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridSource_Id() {
-        return (EAttribute)getCxGridSource().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridSourceEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -179,7 +171,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridSource_Tags() {
-        return (EAttribute)getCxGridSource().getEStructuralFeatures().get(1);
+		return (EAttribute)cxGridSourceEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -188,7 +180,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridSource_Kind() {
-        return (EAttribute)getCxGridSource().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridSourceEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -197,7 +189,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridSource_RootType() {
-        return (EReference)getCxGridSource().getEStructuralFeatures().get(3);
+		return (EReference)cxGridSourceEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -206,7 +198,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridSource_RootTypeFQN() {
-        return (EAttribute)getCxGridSource().getEStructuralFeatures().get(4);
+		return (EAttribute)cxGridSourceEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -215,7 +207,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridSource_Properties() {
-        return (EReference)getCxGridSource().getEStructuralFeatures().get(5);
+		return (EReference)cxGridSourceEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -224,7 +216,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridSource_Inputs() {
-        return (EReference)getCxGridSource().getEStructuralFeatures().get(6);
+		return (EReference)cxGridSourceEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -233,7 +225,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridSource_SelectionEventTopic() {
-        return (EAttribute)getCxGridSource().getEStructuralFeatures().get(7);
+		return (EAttribute)cxGridSourceEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -242,9 +234,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridSourceInput() {
-		if (cxGridSourceInputEClass == null) {
-			cxGridSourceInputEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI).getEClassifiers().get(1);
-		}
 		return cxGridSourceInputEClass;
 	}
 
@@ -254,7 +243,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridSourceInput_InputType() {
-        return (EReference)getCxGridSourceInput().getEStructuralFeatures().get(0);
+		return (EReference)cxGridSourceInputEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -263,7 +252,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridSourceInput_InputTypeFQN() {
-        return (EAttribute)getCxGridSourceInput().getEStructuralFeatures().get(1);
+		return (EAttribute)cxGridSourceInputEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -272,7 +261,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridSourceInput_Filters() {
-        return (EReference)getCxGridSourceInput().getEStructuralFeatures().get(2);
+		return (EReference)cxGridSourceInputEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -281,9 +270,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridProperty() {
-		if (cxGridPropertyEClass == null) {
-			cxGridPropertyEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI).getEClassifiers().get(2);
-		}
 		return cxGridPropertyEClass;
 	}
 
@@ -293,7 +279,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridProperty_Path() {
-        return (EReference)getCxGridProperty().getEStructuralFeatures().get(0);
+		return (EReference)cxGridPropertyEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -302,7 +288,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridProperty_Style() {
-        return (EReference)getCxGridProperty().getEStructuralFeatures().get(1);
+		return (EReference)cxGridPropertyEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -311,7 +297,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridProperty_DotPath() {
-        return (EAttribute)getCxGridProperty().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridPropertyEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -320,7 +306,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridProperty_Editable() {
-        return (EAttribute)getCxGridProperty().getEStructuralFeatures().get(3);
+		return (EAttribute)cxGridPropertyEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -329,9 +315,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridNestedField() {
-		if (cxGridNestedFieldEClass == null) {
-			cxGridNestedFieldEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI).getEClassifiers().get(3);
-		}
 		return cxGridNestedFieldEClass;
 	}
 
@@ -341,7 +324,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridNestedField_Field() {
-        return (EReference)getCxGridNestedField().getEStructuralFeatures().get(0);
+		return (EReference)cxGridNestedFieldEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -350,7 +333,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridNestedField_Path() {
-        return (EReference)getCxGridNestedField().getEStructuralFeatures().get(1);
+		return (EReference)cxGridNestedFieldEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -359,7 +342,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridNestedField_DotPath() {
-        return (EAttribute)getCxGridNestedField().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridNestedFieldEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -368,9 +351,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridNestedPath() {
-		if (cxGridNestedPathEClass == null) {
-			cxGridNestedPathEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI).getEClassifiers().get(4);
-		}
 		return cxGridNestedPathEClass;
 	}
 
@@ -380,7 +360,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridNestedPath_Field() {
-        return (EReference)getCxGridNestedPath().getEStructuralFeatures().get(0);
+		return (EReference)cxGridNestedPathEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -389,7 +369,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridNestedPath_Path() {
-        return (EReference)getCxGridNestedPath().getEStructuralFeatures().get(1);
+		return (EReference)cxGridNestedPathEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -398,7 +378,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridNestedPath_DotPath() {
-        return (EAttribute)getCxGridNestedPath().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridNestedPathEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -407,9 +387,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridSourceEQFilter() {
-		if (cxGridSourceEQFilterEClass == null) {
-			cxGridSourceEQFilterEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI).getEClassifiers().get(5);
-		}
 		return cxGridSourceEQFilterEClass;
 	}
 
@@ -419,7 +396,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridSourceEQFilter_InputTypePropertyPath() {
-        return (EReference)getCxGridSourceEQFilter().getEStructuralFeatures().get(0);
+		return (EReference)cxGridSourceEQFilterEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -428,7 +405,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridSourceEQFilter_RootTypePropertyPath() {
-        return (EReference)getCxGridSourceEQFilter().getEStructuralFeatures().get(1);
+		return (EReference)cxGridSourceEQFilterEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -445,65 +422,130 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private boolean isLoaded = false;
+	private boolean isCreated = false;
 
 	/**
-	 * Laods the package and any sub-packages from their serialized form.
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void loadPackage() {
-		if (isLoaded) return;
-		isLoaded = true;
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
 
-		URL url = getClass().getResource(packageFilename);
-		if (url == null) {
-			throw new RuntimeException("Missing serialized package: " + packageFilename);
-		}
-		URI uri = URI.createURI(url.toString());
-		Resource resource = new EcoreResourceFactoryImpl().createResource(uri);
-		try {
-			resource.load(null);
-		}
-		catch (IOException exception) {
-			throw new WrappedException(exception);
-		}
-		initializeFromLoadedEPackage(this, (EPackage)resource.getContents().get(0));
+		// Create classes and their features
+		cxGridSourceEClass = createEClass(CX_GRID_SOURCE);
+		createEAttribute(cxGridSourceEClass, CX_GRID_SOURCE__ID);
+		createEAttribute(cxGridSourceEClass, CX_GRID_SOURCE__TAGS);
+		createEAttribute(cxGridSourceEClass, CX_GRID_SOURCE__KIND);
+		createEReference(cxGridSourceEClass, CX_GRID_SOURCE__ROOT_TYPE);
+		createEAttribute(cxGridSourceEClass, CX_GRID_SOURCE__ROOT_TYPE_FQN);
+		createEReference(cxGridSourceEClass, CX_GRID_SOURCE__PROPERTIES);
+		createEReference(cxGridSourceEClass, CX_GRID_SOURCE__INPUTS);
+		createEAttribute(cxGridSourceEClass, CX_GRID_SOURCE__SELECTION_EVENT_TOPIC);
+
+		cxGridSourceInputEClass = createEClass(CX_GRID_SOURCE_INPUT);
+		createEReference(cxGridSourceInputEClass, CX_GRID_SOURCE_INPUT__INPUT_TYPE);
+		createEAttribute(cxGridSourceInputEClass, CX_GRID_SOURCE_INPUT__INPUT_TYPE_FQN);
+		createEReference(cxGridSourceInputEClass, CX_GRID_SOURCE_INPUT__FILTERS);
+
+		cxGridPropertyEClass = createEClass(CX_GRID_PROPERTY);
+		createEReference(cxGridPropertyEClass, CX_GRID_PROPERTY__PATH);
+		createEReference(cxGridPropertyEClass, CX_GRID_PROPERTY__STYLE);
+		createEAttribute(cxGridPropertyEClass, CX_GRID_PROPERTY__DOT_PATH);
+		createEAttribute(cxGridPropertyEClass, CX_GRID_PROPERTY__EDITABLE);
+
+		cxGridNestedFieldEClass = createEClass(CX_GRID_NESTED_FIELD);
+		createEReference(cxGridNestedFieldEClass, CX_GRID_NESTED_FIELD__FIELD);
+		createEReference(cxGridNestedFieldEClass, CX_GRID_NESTED_FIELD__PATH);
+		createEAttribute(cxGridNestedFieldEClass, CX_GRID_NESTED_FIELD__DOT_PATH);
+
+		cxGridNestedPathEClass = createEClass(CX_GRID_NESTED_PATH);
+		createEReference(cxGridNestedPathEClass, CX_GRID_NESTED_PATH__FIELD);
+		createEReference(cxGridNestedPathEClass, CX_GRID_NESTED_PATH__PATH);
+		createEAttribute(cxGridNestedPathEClass, CX_GRID_NESTED_PATH__DOT_PATH);
+
+		cxGridSourceEQFilterEClass = createEClass(CX_GRID_SOURCE_EQ_FILTER);
+		createEReference(cxGridSourceEQFilterEClass, CX_GRID_SOURCE_EQ_FILTER__INPUT_TYPE_PROPERTY_PATH);
+		createEReference(cxGridSourceEQFilterEClass, CX_GRID_SOURCE_EQ_FILTER__ROOT_TYPE_PROPERTY_PATH);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		CxGridStylePackage theCxGridStylePackage = (CxGridStylePackage)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Add subpackages
+		getESubpackages().add(theCxGridStylePackage);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(cxGridSourceEClass, CxGridSource.class, "CxGridSource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridSource_Id(), ecorePackage.getEString(), "id", null, 0, 1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridSource_Tags(), ecorePackage.getEString(), "tags", null, 0, -1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridSource_Kind(), ecorePackage.getEString(), "kind", "ecview", 0, 1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridSource_RootType(), theTypesPackage.getJvmTypeReference(), null, "rootType", null, 0, 1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridSource_RootTypeFQN(), ecorePackage.getEString(), "rootTypeFQN", null, 0, 1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridSource_Properties(), this.getCxGridProperty(), null, "properties", null, 0, -1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridSource_Inputs(), this.getCxGridSourceInput(), null, "inputs", null, 0, -1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridSource_SelectionEventTopic(), ecorePackage.getEString(), "selectionEventTopic", null, 0, 1, CxGridSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridSourceInputEClass, CxGridSourceInput.class, "CxGridSourceInput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridSourceInput_InputType(), theTypesPackage.getJvmTypeReference(), null, "inputType", null, 0, 1, CxGridSourceInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridSourceInput_InputTypeFQN(), ecorePackage.getEString(), "inputTypeFQN", null, 0, 1, CxGridSourceInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridSourceInput_Filters(), this.getCxGridSourceEQFilter(), null, "filters", null, 0, -1, CxGridSourceInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropertyEClass, CxGridProperty.class, "CxGridProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridProperty_Path(), this.getCxGridNestedField(), null, "path", null, 0, 1, CxGridProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridProperty_Style(), theCxGridStylePackage.getCxGridPropStyle(), null, "style", null, 0, 1, CxGridProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridProperty_DotPath(), ecorePackage.getEString(), "dotPath", null, 0, 1, CxGridProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridProperty_Editable(), ecorePackage.getEBoolean(), "editable", null, 0, 1, CxGridProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridNestedFieldEClass, CxGridNestedField.class, "CxGridNestedField", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridNestedField_Field(), theTypesPackage.getJvmOperation(), null, "field", null, 0, 1, CxGridNestedField.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridNestedField_Path(), this.getCxGridNestedPath(), null, "path", null, 0, 1, CxGridNestedField.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridNestedField_DotPath(), ecorePackage.getEString(), "dotPath", null, 0, 1, CxGridNestedField.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridNestedPathEClass, CxGridNestedPath.class, "CxGridNestedPath", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridNestedPath_Field(), theTypesPackage.getJvmOperation(), null, "field", null, 0, 1, CxGridNestedPath.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridNestedPath_Path(), this.getCxGridNestedPath(), null, "path", null, 0, 1, CxGridNestedPath.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridNestedPath_DotPath(), ecorePackage.getEString(), "dotPath", null, 0, 1, CxGridNestedPath.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridSourceEQFilterEClass, CxGridSourceEQFilter.class, "CxGridSourceEQFilter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridSourceEQFilter_InputTypePropertyPath(), this.getCxGridNestedField(), null, "inputTypePropertyPath", null, 0, 1, CxGridSourceEQFilter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridSourceEQFilter_RootTypePropertyPath(), this.getCxGridNestedField(), null, "rootTypePropertyPath", null, 0, 1, CxGridSourceEQFilter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
 		createResource(eNS_URI);
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private boolean isFixed = false;
-
-	/**
-	 * Fixes up the loaded package, to make it appear as if it had been programmatically built.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void fixPackageContents() {
-		if (isFixed) return;
-		isFixed = true;
-		fixEClassifiers();
-	}
-
-	/**
-	 * Sets the instance class on the given classifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void fixInstanceClass(EClassifier eClassifier) {
-		if (eClassifier.getInstanceClassName() == null) {
-			eClassifier.setInstanceClassName("org.eclipse.osbp.infogrid.model.gridsource." + eClassifier.getName());
-			setGeneratedClassName(eClassifier);
-		}
-	}
-
 } //CxGridSourcePackageImpl
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/gridsource.ecore b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/gridsource.ecore
deleted file mode 100644
index 40c0c63..0000000
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/impl/gridsource.ecore
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="gridsource" nsURI="http://osbp.eclipse.org/gridsource/v1/core"
-    nsPrefix="gridsource">
-  <eClassifiers xsi:type="ecore:EClass" name="CxGridSource">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tags" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="ecview"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="rootType" eType="ecore:EClass http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmTypeReference"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="rootTypeFQN" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
-        eType="#//CxGridProperty" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inputs" upperBound="-1"
-        eType="#//CxGridSourceInput" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="selectionEventTopic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CxGridSourceInput">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inputType" eType="ecore:EClass http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmTypeReference"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="inputTypeFQN" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="filters" upperBound="-1"
-        eType="#//CxGridSourceEQFilter" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CxGridProperty">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="#//CxGridNestedField"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="style" eType="#//style/CxGridPropStyle"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dotPath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="editable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CxGridNestedField">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="field" eType="ecore:EClass http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmOperation"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="#//CxGridNestedPath"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dotPath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CxGridNestedPath">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="field" eType="ecore:EClass http://www.eclipse.org/xtext/common/JavaVMTypes#//JvmOperation"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="path" eType="#//CxGridNestedPath"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dotPath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CxGridSourceEQFilter">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inputTypePropertyPath"
-        eType="#//CxGridNestedField" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="rootTypePropertyPath" eType="#//CxGridNestedField"
-        containment="true"/>
-  </eClassifiers>
-  <eSubpackages name="style" nsURI="http://osbp.eclipse.org/gridsource/v1/core/style"
-      nsPrefix="style">
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropStyle" abstract="true"/>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropHtmlStyle" eSuperTypes="#//style/CxGridPropStyle"/>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropTextStyle" eSuperTypes="#//style/CxGridPropStyle"/>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropButtonStyle" eSuperTypes="#//style/CxGridPropStyle #//style/CxGridEventTopicAble"/>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropProgressbarStyle" eSuperTypes="#//style/CxGridPropStyle">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropSparklineStyle" eSuperTypes="#//style/CxGridPropStyle">
-      <eStructuralFeatures xsi:type="ecore:EReference" name="field" eType="#//CxGridNestedField"
-          containment="true"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropBooleanStyle" eSuperTypes="#//style/CxGridPropStyle"/>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropNumberStyle" eSuperTypes="#//style/CxGridPropStyle">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="numberFormat" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropImageStyle" eSuperTypes="#//style/CxGridPropStyle #//style/CxGridEventTopicAble">
-      <eStructuralFeatures xsi:type="ecore:EReference" name="configs" upperBound="-1"
-          eType="#//style/CxGridStyleConfig" containment="true"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropIndicatorStyle" eSuperTypes="#//style/CxGridPropStyle #//style/CxGridEventTopicAble">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="greenStarts" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="redEnds" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropDateStyle" eSuperTypes="#//style/CxGridPropStyle">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dateFormat" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridStyleConfig"/>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridStyleConfigStringToResource"
-        eSuperTypes="#//style/CxGridStyleConfig">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="compare" eType="#//style/CxGridCompare"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceThemePath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridStyleConfigNumericToResource"
-        eSuperTypes="#//style/CxGridStyleConfig">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="compare" eType="#//style/CxGridCompare"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceThemePath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EEnum" name="CxGridCompare">
-      <eLiterals name="Equal" literal="EQ"/>
-      <eLiterals name="GreaterThan" value="1" literal="GT"/>
-      <eLiterals name="GreaterEqual" value="2" literal="GE"/>
-      <eLiterals name="LowerThan" value="3" literal="LT"/>
-      <eLiterals name="LowerEqual" value="4" literal="LE"/>
-      <eLiterals name="NotEqual" value="5" literal="NEQ"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridEventTopicAble" abstract="true"
-        interface="true" eSuperTypes="#//style/CxGridPropStyle">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="eventTopic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropQuantityStyle" eSuperTypes="#//style/CxGridPropStyle">
-      <eStructuralFeatures xsi:type="ecore:EReference" name="valuePropertyPath" eType="#//CxGridNestedField"
-          containment="true"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="valuePropertyDotPath"
-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueNumberFormat" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="uomPropertyPath" eType="#//CxGridNestedField"
-          containment="true"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="uomPropertyDotPath" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="htmlPattern" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-          defaultValueLiteral="&lt;b>{@value}&lt;/b> - &lt;i>{@uom}&lt;/i>"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="CxGridPropPriceStyle" eSuperTypes="#//style/CxGridPropStyle">
-      <eStructuralFeatures xsi:type="ecore:EReference" name="valuePropertyPath" eType="#//CxGridNestedField"
-          containment="true"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="valuePropertyDotPath"
-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueNumberFormat" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="currencyPropertyPath"
-          eType="#//CxGridNestedField" containment="true"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="currencyPropertyDotPath"
-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="htmlPattern" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-          defaultValueLiteral="&lt;b>{@value}&lt;/b> - &lt;i>{@currency}&lt;/i>"/>
-    </eClassifiers>
-  </eSubpackages>
-</ecore:EPackage>
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridCompare.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridCompare.java
index d7fdf8f..a5b5fc4 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridCompare.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridCompare.java
@@ -206,6 +206,8 @@
 	 * Returns the '<em><b>Cx Grid Compare</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static CxGridCompare get(String literal) {
@@ -222,6 +224,8 @@
 	 * Returns the '<em><b>Cx Grid Compare</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static CxGridCompare getByName(String name) {
@@ -238,6 +242,8 @@
 	 * Returns the '<em><b>Cx Grid Compare</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static CxGridCompare get(int value) {
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridEventTopicAble.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridEventTopicAble.java
index b2a90cf..2276387 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridEventTopicAble.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridEventTopicAble.java
@@ -20,10 +20,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridEventTopicAble#getEventTopic <em>Event Topic</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridEventTopicAble()
  * @model interface="true" abstract="true"
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropDateStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropDateStyle.java
index b5bf16e..9aa6e19 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropDateStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropDateStyle.java
@@ -20,10 +20,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropDateStyle#getDateFormat <em>Date Format</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropDateStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropImageStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropImageStyle.java
index 9017d5e..3183a48 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropImageStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropImageStyle.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropImageStyle#getConfigs <em>Configs</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropImageStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropIndicatorStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropIndicatorStyle.java
index c45aebc..62e8217 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropIndicatorStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropIndicatorStyle.java
@@ -20,11 +20,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropIndicatorStyle#getGreenStarts <em>Green Starts</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropIndicatorStyle#getRedEnds <em>Red Ends</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropIndicatorStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropNumberStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropNumberStyle.java
index 77a3f72..b6bc4d7 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropNumberStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropNumberStyle.java
@@ -20,10 +20,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropNumberStyle#getNumberFormat <em>Number Format</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropNumberStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropPriceStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropPriceStyle.java
index bd57123..7dad6b6 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropPriceStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropPriceStyle.java
@@ -22,6 +22,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropPriceStyle#getValuePropertyPath <em>Value Property Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropPriceStyle#getValuePropertyDotPath <em>Value Property Dot Path</em>}</li>
@@ -30,7 +31,6 @@
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropPriceStyle#getCurrencyPropertyDotPath <em>Currency Property Dot Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropPriceStyle#getHtmlPattern <em>Html Pattern</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropPriceStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropProgressbarStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropProgressbarStyle.java
index 7eb7cd4..cadeda1 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropProgressbarStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropProgressbarStyle.java
@@ -20,10 +20,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropProgressbarStyle#getMaxValue <em>Max Value</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropProgressbarStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropQuantityStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropQuantityStyle.java
index e42bebc..61aa511 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropQuantityStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropQuantityStyle.java
@@ -22,6 +22,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropQuantityStyle#getValuePropertyPath <em>Value Property Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropQuantityStyle#getValuePropertyDotPath <em>Value Property Dot Path</em>}</li>
@@ -30,7 +31,6 @@
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropQuantityStyle#getUomPropertyDotPath <em>Uom Property Dot Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropQuantityStyle#getHtmlPattern <em>Html Pattern</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropQuantityStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropSparklineStyle.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropSparklineStyle.java
index d30e966..62ac884 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropSparklineStyle.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridPropSparklineStyle.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropSparklineStyle#getField <em>Field</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridPropSparklineStyle()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigNumericToResource.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigNumericToResource.java
index b354f82..cc0eca5 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigNumericToResource.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigNumericToResource.java
@@ -20,12 +20,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigNumericToResource#getValue <em>Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigNumericToResource#getCompare <em>Compare</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigNumericToResource#getResourceThemePath <em>Resource Theme Path</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridStyleConfigNumericToResource()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigStringToResource.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigStringToResource.java
index bba56f4..a80c4f0 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigStringToResource.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/CxGridStyleConfigStringToResource.java
@@ -20,12 +20,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigStringToResource#getValue <em>Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigStringToResource#getCompare <em>Compare</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigStringToResource#getResourceThemePath <em>Resource Theme Path</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage#getCxGridStyleConfigStringToResource()
  * @model
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropBooleanStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropBooleanStyleImpl.java
index 9590860..71a62a7 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropBooleanStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropBooleanStyleImpl.java
@@ -21,8 +21,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Cx Grid Prop Boolean Style</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropButtonStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropButtonStyleImpl.java
index 6499fd6..55fcf7a 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropButtonStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropButtonStyleImpl.java
@@ -26,10 +26,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropButtonStyleImpl#getEventTopic <em>Event Topic</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropDateStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropDateStyleImpl.java
index 1d99dd0..74487b0 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropDateStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropDateStyleImpl.java
@@ -27,10 +27,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropDateStyleImpl#getDateFormat <em>Date Format</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropHtmlStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropHtmlStyleImpl.java
index 57a9855..3f9443d 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropHtmlStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropHtmlStyleImpl.java
@@ -21,8 +21,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Cx Grid Prop Html Style</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropImageStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropImageStyleImpl.java
index 1367e0d..1918597 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropImageStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropImageStyleImpl.java
@@ -35,11 +35,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropImageStyleImpl#getEventTopic <em>Event Topic</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropImageStyleImpl#getConfigs <em>Configs</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropIndicatorStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropIndicatorStyleImpl.java
index e868728..228da94 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropIndicatorStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropIndicatorStyleImpl.java
@@ -28,12 +28,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropIndicatorStyleImpl#getEventTopic <em>Event Topic</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropIndicatorStyleImpl#getGreenStarts <em>Green Starts</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropIndicatorStyleImpl#getRedEnds <em>Red Ends</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropNumberStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropNumberStyleImpl.java
index 9f04d3d..b4ccaef 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropNumberStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropNumberStyleImpl.java
@@ -27,10 +27,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropNumberStyleImpl#getNumberFormat <em>Number Format</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropPriceStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropPriceStyleImpl.java
index 8963380..a48e0a8 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropPriceStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropPriceStyleImpl.java
@@ -30,6 +30,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropPriceStyleImpl#getValuePropertyPath <em>Value Property Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropPriceStyleImpl#getValuePropertyDotPath <em>Value Property Dot Path</em>}</li>
@@ -38,7 +39,6 @@
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropPriceStyleImpl#getCurrencyPropertyDotPath <em>Currency Property Dot Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropPriceStyleImpl#getHtmlPattern <em>Html Pattern</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropProgressbarStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropProgressbarStyleImpl.java
index 01006a0..8bb3190 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropProgressbarStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropProgressbarStyleImpl.java
@@ -25,10 +25,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropProgressbarStyleImpl#getMaxValue <em>Max Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropQuantityStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropQuantityStyleImpl.java
index d17a773..5e79b64 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropQuantityStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropQuantityStyleImpl.java
@@ -30,6 +30,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropQuantityStyleImpl#getValuePropertyPath <em>Value Property Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropQuantityStyleImpl#getValuePropertyDotPath <em>Value Property Dot Path</em>}</li>
@@ -38,7 +39,6 @@
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropQuantityStyleImpl#getUomPropertyDotPath <em>Uom Property Dot Path</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropQuantityStyleImpl#getHtmlPattern <em>Html Pattern</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropSparklineStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropSparklineStyleImpl.java
index 44bc8c0..4c9e88b 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropSparklineStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropSparklineStyleImpl.java
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridPropSparklineStyleImpl#getField <em>Field</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropStyleImpl.java
index 8938d03..74278bb 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropStyleImpl.java
@@ -23,8 +23,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Cx Grid Prop Style</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropTextStyleImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropTextStyleImpl.java
index 122aa7e..d5d7075 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropTextStyleImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridPropTextStyleImpl.java
@@ -21,8 +21,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Cx Grid Prop Text Style</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigImpl.java
index 8a65088..5742bab 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigImpl.java
@@ -23,8 +23,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Config</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigNumericToResourceImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigNumericToResourceImpl.java
index 54b2ae8..718a909 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigNumericToResourceImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigNumericToResourceImpl.java
@@ -28,12 +28,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridStyleConfigNumericToResourceImpl#getValue <em>Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridStyleConfigNumericToResourceImpl#getCompare <em>Compare</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridStyleConfigNumericToResourceImpl#getResourceThemePath <em>Resource Theme Path</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigStringToResourceImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigStringToResourceImpl.java
index 5e4206a..06d2a1e 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigStringToResourceImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStyleConfigStringToResourceImpl.java
@@ -28,12 +28,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridStyleConfigStringToResourceImpl#getValue <em>Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridStyleConfigStringToResourceImpl#getCompare <em>Compare</em>}</li>
  *   <li>{@link org.eclipse.osbp.infogrid.model.gridsource.style.impl.CxGridStyleConfigStringToResourceImpl#getResourceThemePath <em>Resource Theme Path</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStylePackageImpl.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStylePackageImpl.java
index 59e3770..4338a92 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStylePackageImpl.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/impl/CxGridStylePackageImpl.java
@@ -14,7 +14,6 @@
 
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
@@ -22,6 +21,24 @@
 import org.eclipse.xtext.common.types.TypesPackage;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridSourcePackage;
 import org.eclipse.osbp.infogrid.model.gridsource.impl.CxGridSourcePackageImpl;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridCompare;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridEventTopicAble;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropBooleanStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropButtonStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropDateStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropHtmlStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropImageStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropIndicatorStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropNumberStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropPriceStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropProgressbarStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropQuantityStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropSparklineStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridPropTextStyle;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfig;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigNumericToResource;
+import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleConfigStringToResource;
 import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStyleFactory;
 import org.eclipse.osbp.infogrid.model.gridsource.style.CxGridStylePackage;
 
@@ -192,6 +209,8 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
 	 * @generated
 	 */
 	public static CxGridStylePackage init() {
@@ -208,12 +227,13 @@
 		// Obtain or create and register interdependencies
 		CxGridSourcePackageImpl theCxGridSourcePackage = (CxGridSourcePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI) instanceof CxGridSourcePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI) : CxGridSourcePackage.eINSTANCE);
 
-		// Load packages
-		theCxGridSourcePackage.loadPackage();
+		// Create package meta-data objects
+		theCxGridStylePackage.createPackageContents();
+		theCxGridSourcePackage.createPackageContents();
 
-		// Fix loaded packages
-		theCxGridStylePackage.fixPackageContents();
-		theCxGridSourcePackage.fixPackageContents();
+		// Initialize created meta-data
+		theCxGridStylePackage.initializePackageContents();
+		theCxGridSourcePackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theCxGridStylePackage.freeze();
@@ -230,9 +250,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropStyle() {
-		if (cxGridPropStyleEClass == null) {
-			cxGridPropStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(0);
-		}
 		return cxGridPropStyleEClass;
 	}
 
@@ -242,9 +259,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropHtmlStyle() {
-		if (cxGridPropHtmlStyleEClass == null) {
-			cxGridPropHtmlStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(1);
-		}
 		return cxGridPropHtmlStyleEClass;
 	}
 
@@ -254,9 +268,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropTextStyle() {
-		if (cxGridPropTextStyleEClass == null) {
-			cxGridPropTextStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(2);
-		}
 		return cxGridPropTextStyleEClass;
 	}
 
@@ -266,9 +277,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropButtonStyle() {
-		if (cxGridPropButtonStyleEClass == null) {
-			cxGridPropButtonStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(3);
-		}
 		return cxGridPropButtonStyleEClass;
 	}
 
@@ -278,9 +286,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropProgressbarStyle() {
-		if (cxGridPropProgressbarStyleEClass == null) {
-			cxGridPropProgressbarStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(4);
-		}
 		return cxGridPropProgressbarStyleEClass;
 	}
 
@@ -290,7 +295,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropProgressbarStyle_MaxValue() {
-        return (EAttribute)getCxGridPropProgressbarStyle().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridPropProgressbarStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -299,9 +304,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropSparklineStyle() {
-		if (cxGridPropSparklineStyleEClass == null) {
-			cxGridPropSparklineStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(5);
-		}
 		return cxGridPropSparklineStyleEClass;
 	}
 
@@ -311,7 +313,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridPropSparklineStyle_Field() {
-        return (EReference)getCxGridPropSparklineStyle().getEStructuralFeatures().get(0);
+		return (EReference)cxGridPropSparklineStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -320,9 +322,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropBooleanStyle() {
-		if (cxGridPropBooleanStyleEClass == null) {
-			cxGridPropBooleanStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(6);
-		}
 		return cxGridPropBooleanStyleEClass;
 	}
 
@@ -332,9 +331,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropNumberStyle() {
-		if (cxGridPropNumberStyleEClass == null) {
-			cxGridPropNumberStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(7);
-		}
 		return cxGridPropNumberStyleEClass;
 	}
 
@@ -344,7 +340,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropNumberStyle_NumberFormat() {
-        return (EAttribute)getCxGridPropNumberStyle().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridPropNumberStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -353,9 +349,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropImageStyle() {
-		if (cxGridPropImageStyleEClass == null) {
-			cxGridPropImageStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(8);
-		}
 		return cxGridPropImageStyleEClass;
 	}
 
@@ -365,7 +358,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridPropImageStyle_Configs() {
-        return (EReference)getCxGridPropImageStyle().getEStructuralFeatures().get(0);
+		return (EReference)cxGridPropImageStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -374,9 +367,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropIndicatorStyle() {
-		if (cxGridPropIndicatorStyleEClass == null) {
-			cxGridPropIndicatorStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(9);
-		}
 		return cxGridPropIndicatorStyleEClass;
 	}
 
@@ -386,7 +376,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropIndicatorStyle_GreenStarts() {
-        return (EAttribute)getCxGridPropIndicatorStyle().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridPropIndicatorStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -395,7 +385,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropIndicatorStyle_RedEnds() {
-        return (EAttribute)getCxGridPropIndicatorStyle().getEStructuralFeatures().get(1);
+		return (EAttribute)cxGridPropIndicatorStyleEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -404,9 +394,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropDateStyle() {
-		if (cxGridPropDateStyleEClass == null) {
-			cxGridPropDateStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(10);
-		}
 		return cxGridPropDateStyleEClass;
 	}
 
@@ -416,7 +403,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropDateStyle_DateFormat() {
-        return (EAttribute)getCxGridPropDateStyle().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridPropDateStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -425,9 +412,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridStyleConfig() {
-		if (cxGridStyleConfigEClass == null) {
-			cxGridStyleConfigEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(11);
-		}
 		return cxGridStyleConfigEClass;
 	}
 
@@ -437,9 +421,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridStyleConfigStringToResource() {
-		if (cxGridStyleConfigStringToResourceEClass == null) {
-			cxGridStyleConfigStringToResourceEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(12);
-		}
 		return cxGridStyleConfigStringToResourceEClass;
 	}
 
@@ -449,7 +430,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridStyleConfigStringToResource_Value() {
-        return (EAttribute)getCxGridStyleConfigStringToResource().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridStyleConfigStringToResourceEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -458,7 +439,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridStyleConfigStringToResource_Compare() {
-        return (EAttribute)getCxGridStyleConfigStringToResource().getEStructuralFeatures().get(1);
+		return (EAttribute)cxGridStyleConfigStringToResourceEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -467,7 +448,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridStyleConfigStringToResource_ResourceThemePath() {
-        return (EAttribute)getCxGridStyleConfigStringToResource().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridStyleConfigStringToResourceEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -476,9 +457,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridStyleConfigNumericToResource() {
-		if (cxGridStyleConfigNumericToResourceEClass == null) {
-			cxGridStyleConfigNumericToResourceEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(13);
-		}
 		return cxGridStyleConfigNumericToResourceEClass;
 	}
 
@@ -488,7 +466,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridStyleConfigNumericToResource_Value() {
-        return (EAttribute)getCxGridStyleConfigNumericToResource().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridStyleConfigNumericToResourceEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -497,7 +475,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridStyleConfigNumericToResource_Compare() {
-        return (EAttribute)getCxGridStyleConfigNumericToResource().getEStructuralFeatures().get(1);
+		return (EAttribute)cxGridStyleConfigNumericToResourceEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -506,7 +484,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridStyleConfigNumericToResource_ResourceThemePath() {
-        return (EAttribute)getCxGridStyleConfigNumericToResource().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridStyleConfigNumericToResourceEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -515,9 +493,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridEventTopicAble() {
-		if (cxGridEventTopicAbleEClass == null) {
-			cxGridEventTopicAbleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(15);
-		}
 		return cxGridEventTopicAbleEClass;
 	}
 
@@ -527,7 +502,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridEventTopicAble_EventTopic() {
-        return (EAttribute)getCxGridEventTopicAble().getEStructuralFeatures().get(0);
+		return (EAttribute)cxGridEventTopicAbleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -536,9 +511,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropQuantityStyle() {
-		if (cxGridPropQuantityStyleEClass == null) {
-			cxGridPropQuantityStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(16);
-		}
 		return cxGridPropQuantityStyleEClass;
 	}
 
@@ -548,7 +520,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridPropQuantityStyle_ValuePropertyPath() {
-        return (EReference)getCxGridPropQuantityStyle().getEStructuralFeatures().get(0);
+		return (EReference)cxGridPropQuantityStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -557,7 +529,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropQuantityStyle_ValuePropertyDotPath() {
-        return (EAttribute)getCxGridPropQuantityStyle().getEStructuralFeatures().get(1);
+		return (EAttribute)cxGridPropQuantityStyleEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -566,7 +538,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropQuantityStyle_ValueNumberFormat() {
-        return (EAttribute)getCxGridPropQuantityStyle().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridPropQuantityStyleEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -575,7 +547,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridPropQuantityStyle_UomPropertyPath() {
-        return (EReference)getCxGridPropQuantityStyle().getEStructuralFeatures().get(3);
+		return (EReference)cxGridPropQuantityStyleEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -584,7 +556,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropQuantityStyle_UomPropertyDotPath() {
-        return (EAttribute)getCxGridPropQuantityStyle().getEStructuralFeatures().get(4);
+		return (EAttribute)cxGridPropQuantityStyleEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -593,7 +565,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropQuantityStyle_HtmlPattern() {
-        return (EAttribute)getCxGridPropQuantityStyle().getEStructuralFeatures().get(5);
+		return (EAttribute)cxGridPropQuantityStyleEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -602,9 +574,6 @@
 	 * @generated
 	 */
 	public EClass getCxGridPropPriceStyle() {
-		if (cxGridPropPriceStyleEClass == null) {
-			cxGridPropPriceStyleEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(17);
-		}
 		return cxGridPropPriceStyleEClass;
 	}
 
@@ -614,7 +583,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridPropPriceStyle_ValuePropertyPath() {
-        return (EReference)getCxGridPropPriceStyle().getEStructuralFeatures().get(0);
+		return (EReference)cxGridPropPriceStyleEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -623,7 +592,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropPriceStyle_ValuePropertyDotPath() {
-        return (EAttribute)getCxGridPropPriceStyle().getEStructuralFeatures().get(1);
+		return (EAttribute)cxGridPropPriceStyleEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -632,7 +601,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropPriceStyle_ValueNumberFormat() {
-        return (EAttribute)getCxGridPropPriceStyle().getEStructuralFeatures().get(2);
+		return (EAttribute)cxGridPropPriceStyleEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -641,7 +610,7 @@
 	 * @generated
 	 */
 	public EReference getCxGridPropPriceStyle_CurrencyPropertyPath() {
-        return (EReference)getCxGridPropPriceStyle().getEStructuralFeatures().get(3);
+		return (EReference)cxGridPropPriceStyleEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -650,7 +619,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropPriceStyle_CurrencyPropertyDotPath() {
-        return (EAttribute)getCxGridPropPriceStyle().getEStructuralFeatures().get(4);
+		return (EAttribute)cxGridPropPriceStyleEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -659,7 +628,7 @@
 	 * @generated
 	 */
 	public EAttribute getCxGridPropPriceStyle_HtmlPattern() {
-        return (EAttribute)getCxGridPropPriceStyle().getEStructuralFeatures().get(5);
+		return (EAttribute)cxGridPropPriceStyleEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -668,9 +637,6 @@
 	 * @generated
 	 */
 	public EEnum getCxGridCompare() {
-		if (cxGridCompareEEnum == null) {
-			cxGridCompareEEnum = (EEnum)EPackage.Registry.INSTANCE.getEPackage(CxGridStylePackage.eNS_URI).getEClassifiers().get(14);
-		}
 		return cxGridCompareEEnum;
 	}
 
@@ -688,32 +654,203 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private boolean isFixed = false;
+	private boolean isCreated = false;
 
 	/**
-	 * Fixes up the loaded package, to make it appear as if it had been programmatically built.
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void fixPackageContents() {
-		if (isFixed) return;
-		isFixed = true;
-		fixEClassifiers();
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		cxGridPropStyleEClass = createEClass(CX_GRID_PROP_STYLE);
+
+		cxGridPropHtmlStyleEClass = createEClass(CX_GRID_PROP_HTML_STYLE);
+
+		cxGridPropTextStyleEClass = createEClass(CX_GRID_PROP_TEXT_STYLE);
+
+		cxGridPropButtonStyleEClass = createEClass(CX_GRID_PROP_BUTTON_STYLE);
+
+		cxGridPropProgressbarStyleEClass = createEClass(CX_GRID_PROP_PROGRESSBAR_STYLE);
+		createEAttribute(cxGridPropProgressbarStyleEClass, CX_GRID_PROP_PROGRESSBAR_STYLE__MAX_VALUE);
+
+		cxGridPropSparklineStyleEClass = createEClass(CX_GRID_PROP_SPARKLINE_STYLE);
+		createEReference(cxGridPropSparklineStyleEClass, CX_GRID_PROP_SPARKLINE_STYLE__FIELD);
+
+		cxGridPropBooleanStyleEClass = createEClass(CX_GRID_PROP_BOOLEAN_STYLE);
+
+		cxGridPropNumberStyleEClass = createEClass(CX_GRID_PROP_NUMBER_STYLE);
+		createEAttribute(cxGridPropNumberStyleEClass, CX_GRID_PROP_NUMBER_STYLE__NUMBER_FORMAT);
+
+		cxGridPropImageStyleEClass = createEClass(CX_GRID_PROP_IMAGE_STYLE);
+		createEReference(cxGridPropImageStyleEClass, CX_GRID_PROP_IMAGE_STYLE__CONFIGS);
+
+		cxGridPropIndicatorStyleEClass = createEClass(CX_GRID_PROP_INDICATOR_STYLE);
+		createEAttribute(cxGridPropIndicatorStyleEClass, CX_GRID_PROP_INDICATOR_STYLE__GREEN_STARTS);
+		createEAttribute(cxGridPropIndicatorStyleEClass, CX_GRID_PROP_INDICATOR_STYLE__RED_ENDS);
+
+		cxGridPropDateStyleEClass = createEClass(CX_GRID_PROP_DATE_STYLE);
+		createEAttribute(cxGridPropDateStyleEClass, CX_GRID_PROP_DATE_STYLE__DATE_FORMAT);
+
+		cxGridStyleConfigEClass = createEClass(CX_GRID_STYLE_CONFIG);
+
+		cxGridStyleConfigStringToResourceEClass = createEClass(CX_GRID_STYLE_CONFIG_STRING_TO_RESOURCE);
+		createEAttribute(cxGridStyleConfigStringToResourceEClass, CX_GRID_STYLE_CONFIG_STRING_TO_RESOURCE__VALUE);
+		createEAttribute(cxGridStyleConfigStringToResourceEClass, CX_GRID_STYLE_CONFIG_STRING_TO_RESOURCE__COMPARE);
+		createEAttribute(cxGridStyleConfigStringToResourceEClass, CX_GRID_STYLE_CONFIG_STRING_TO_RESOURCE__RESOURCE_THEME_PATH);
+
+		cxGridStyleConfigNumericToResourceEClass = createEClass(CX_GRID_STYLE_CONFIG_NUMERIC_TO_RESOURCE);
+		createEAttribute(cxGridStyleConfigNumericToResourceEClass, CX_GRID_STYLE_CONFIG_NUMERIC_TO_RESOURCE__VALUE);
+		createEAttribute(cxGridStyleConfigNumericToResourceEClass, CX_GRID_STYLE_CONFIG_NUMERIC_TO_RESOURCE__COMPARE);
+		createEAttribute(cxGridStyleConfigNumericToResourceEClass, CX_GRID_STYLE_CONFIG_NUMERIC_TO_RESOURCE__RESOURCE_THEME_PATH);
+
+		cxGridEventTopicAbleEClass = createEClass(CX_GRID_EVENT_TOPIC_ABLE);
+		createEAttribute(cxGridEventTopicAbleEClass, CX_GRID_EVENT_TOPIC_ABLE__EVENT_TOPIC);
+
+		cxGridPropQuantityStyleEClass = createEClass(CX_GRID_PROP_QUANTITY_STYLE);
+		createEReference(cxGridPropQuantityStyleEClass, CX_GRID_PROP_QUANTITY_STYLE__VALUE_PROPERTY_PATH);
+		createEAttribute(cxGridPropQuantityStyleEClass, CX_GRID_PROP_QUANTITY_STYLE__VALUE_PROPERTY_DOT_PATH);
+		createEAttribute(cxGridPropQuantityStyleEClass, CX_GRID_PROP_QUANTITY_STYLE__VALUE_NUMBER_FORMAT);
+		createEReference(cxGridPropQuantityStyleEClass, CX_GRID_PROP_QUANTITY_STYLE__UOM_PROPERTY_PATH);
+		createEAttribute(cxGridPropQuantityStyleEClass, CX_GRID_PROP_QUANTITY_STYLE__UOM_PROPERTY_DOT_PATH);
+		createEAttribute(cxGridPropQuantityStyleEClass, CX_GRID_PROP_QUANTITY_STYLE__HTML_PATTERN);
+
+		cxGridPropPriceStyleEClass = createEClass(CX_GRID_PROP_PRICE_STYLE);
+		createEReference(cxGridPropPriceStyleEClass, CX_GRID_PROP_PRICE_STYLE__VALUE_PROPERTY_PATH);
+		createEAttribute(cxGridPropPriceStyleEClass, CX_GRID_PROP_PRICE_STYLE__VALUE_PROPERTY_DOT_PATH);
+		createEAttribute(cxGridPropPriceStyleEClass, CX_GRID_PROP_PRICE_STYLE__VALUE_NUMBER_FORMAT);
+		createEReference(cxGridPropPriceStyleEClass, CX_GRID_PROP_PRICE_STYLE__CURRENCY_PROPERTY_PATH);
+		createEAttribute(cxGridPropPriceStyleEClass, CX_GRID_PROP_PRICE_STYLE__CURRENCY_PROPERTY_DOT_PATH);
+		createEAttribute(cxGridPropPriceStyleEClass, CX_GRID_PROP_PRICE_STYLE__HTML_PATTERN);
+
+		// Create enums
+		cxGridCompareEEnum = createEEnum(CX_GRID_COMPARE);
 	}
 
 	/**
-	 * Sets the instance class on the given classifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@Override
-	protected void fixInstanceClass(EClassifier eClassifier) {
-		if (eClassifier.getInstanceClassName() == null) {
-			eClassifier.setInstanceClassName("org.eclipse.osbp.infogrid.model.gridsource.style." + eClassifier.getName());
-			setGeneratedClassName(eClassifier);
-		}
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		CxGridSourcePackage theCxGridSourcePackage = (CxGridSourcePackage)EPackage.Registry.INSTANCE.getEPackage(CxGridSourcePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		cxGridPropHtmlStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropTextStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropButtonStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropButtonStyleEClass.getESuperTypes().add(this.getCxGridEventTopicAble());
+		cxGridPropProgressbarStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropSparklineStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropBooleanStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropNumberStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropImageStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropImageStyleEClass.getESuperTypes().add(this.getCxGridEventTopicAble());
+		cxGridPropIndicatorStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropIndicatorStyleEClass.getESuperTypes().add(this.getCxGridEventTopicAble());
+		cxGridPropDateStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridStyleConfigStringToResourceEClass.getESuperTypes().add(this.getCxGridStyleConfig());
+		cxGridStyleConfigNumericToResourceEClass.getESuperTypes().add(this.getCxGridStyleConfig());
+		cxGridEventTopicAbleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropQuantityStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+		cxGridPropPriceStyleEClass.getESuperTypes().add(this.getCxGridPropStyle());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(cxGridPropStyleEClass, CxGridPropStyle.class, "CxGridPropStyle", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cxGridPropHtmlStyleEClass, CxGridPropHtmlStyle.class, "CxGridPropHtmlStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cxGridPropTextStyleEClass, CxGridPropTextStyle.class, "CxGridPropTextStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cxGridPropButtonStyleEClass, CxGridPropButtonStyle.class, "CxGridPropButtonStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cxGridPropProgressbarStyleEClass, CxGridPropProgressbarStyle.class, "CxGridPropProgressbarStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridPropProgressbarStyle_MaxValue(), ecorePackage.getEDouble(), "maxValue", null, 0, 1, CxGridPropProgressbarStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropSparklineStyleEClass, CxGridPropSparklineStyle.class, "CxGridPropSparklineStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridPropSparklineStyle_Field(), theCxGridSourcePackage.getCxGridNestedField(), null, "field", null, 0, 1, CxGridPropSparklineStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropBooleanStyleEClass, CxGridPropBooleanStyle.class, "CxGridPropBooleanStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cxGridPropNumberStyleEClass, CxGridPropNumberStyle.class, "CxGridPropNumberStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridPropNumberStyle_NumberFormat(), ecorePackage.getEString(), "numberFormat", null, 0, 1, CxGridPropNumberStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropImageStyleEClass, CxGridPropImageStyle.class, "CxGridPropImageStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridPropImageStyle_Configs(), this.getCxGridStyleConfig(), null, "configs", null, 0, -1, CxGridPropImageStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropIndicatorStyleEClass, CxGridPropIndicatorStyle.class, "CxGridPropIndicatorStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridPropIndicatorStyle_GreenStarts(), ecorePackage.getEDouble(), "greenStarts", null, 0, 1, CxGridPropIndicatorStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropIndicatorStyle_RedEnds(), ecorePackage.getEDouble(), "redEnds", null, 0, 1, CxGridPropIndicatorStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropDateStyleEClass, CxGridPropDateStyle.class, "CxGridPropDateStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridPropDateStyle_DateFormat(), ecorePackage.getEString(), "dateFormat", null, 0, 1, CxGridPropDateStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridStyleConfigEClass, CxGridStyleConfig.class, "CxGridStyleConfig", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cxGridStyleConfigStringToResourceEClass, CxGridStyleConfigStringToResource.class, "CxGridStyleConfigStringToResource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridStyleConfigStringToResource_Value(), ecorePackage.getEString(), "value", null, 0, 1, CxGridStyleConfigStringToResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridStyleConfigStringToResource_Compare(), this.getCxGridCompare(), "compare", null, 0, 1, CxGridStyleConfigStringToResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridStyleConfigStringToResource_ResourceThemePath(), ecorePackage.getEString(), "resourceThemePath", null, 0, 1, CxGridStyleConfigStringToResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridStyleConfigNumericToResourceEClass, CxGridStyleConfigNumericToResource.class, "CxGridStyleConfigNumericToResource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridStyleConfigNumericToResource_Value(), ecorePackage.getEDouble(), "value", null, 0, 1, CxGridStyleConfigNumericToResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridStyleConfigNumericToResource_Compare(), this.getCxGridCompare(), "compare", null, 0, 1, CxGridStyleConfigNumericToResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridStyleConfigNumericToResource_ResourceThemePath(), ecorePackage.getEString(), "resourceThemePath", null, 0, 1, CxGridStyleConfigNumericToResource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridEventTopicAbleEClass, CxGridEventTopicAble.class, "CxGridEventTopicAble", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCxGridEventTopicAble_EventTopic(), ecorePackage.getEString(), "eventTopic", null, 0, 1, CxGridEventTopicAble.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropQuantityStyleEClass, CxGridPropQuantityStyle.class, "CxGridPropQuantityStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridPropQuantityStyle_ValuePropertyPath(), theCxGridSourcePackage.getCxGridNestedField(), null, "valuePropertyPath", null, 0, 1, CxGridPropQuantityStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropQuantityStyle_ValuePropertyDotPath(), ecorePackage.getEString(), "valuePropertyDotPath", null, 0, 1, CxGridPropQuantityStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropQuantityStyle_ValueNumberFormat(), ecorePackage.getEString(), "valueNumberFormat", null, 0, 1, CxGridPropQuantityStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridPropQuantityStyle_UomPropertyPath(), theCxGridSourcePackage.getCxGridNestedField(), null, "uomPropertyPath", null, 0, 1, CxGridPropQuantityStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropQuantityStyle_UomPropertyDotPath(), ecorePackage.getEString(), "uomPropertyDotPath", null, 0, 1, CxGridPropQuantityStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropQuantityStyle_HtmlPattern(), ecorePackage.getEString(), "htmlPattern", "<b>{@value}</b> - <i>{@uom}</i>", 0, 1, CxGridPropQuantityStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cxGridPropPriceStyleEClass, CxGridPropPriceStyle.class, "CxGridPropPriceStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCxGridPropPriceStyle_ValuePropertyPath(), theCxGridSourcePackage.getCxGridNestedField(), null, "valuePropertyPath", null, 0, 1, CxGridPropPriceStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropPriceStyle_ValuePropertyDotPath(), ecorePackage.getEString(), "valuePropertyDotPath", null, 0, 1, CxGridPropPriceStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropPriceStyle_ValueNumberFormat(), ecorePackage.getEString(), "valueNumberFormat", null, 0, 1, CxGridPropPriceStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCxGridPropPriceStyle_CurrencyPropertyPath(), theCxGridSourcePackage.getCxGridNestedField(), null, "currencyPropertyPath", null, 0, 1, CxGridPropPriceStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropPriceStyle_CurrencyPropertyDotPath(), ecorePackage.getEString(), "currencyPropertyDotPath", null, 0, 1, CxGridPropPriceStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCxGridPropPriceStyle_HtmlPattern(), ecorePackage.getEString(), "htmlPattern", "<b>{@value}</b> - <i>{@currency}</i>", 0, 1, CxGridPropPriceStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(cxGridCompareEEnum, CxGridCompare.class, "CxGridCompare");
+		addEEnumLiteral(cxGridCompareEEnum, CxGridCompare.EQUAL);
+		addEEnumLiteral(cxGridCompareEEnum, CxGridCompare.GREATER_THAN);
+		addEEnumLiteral(cxGridCompareEEnum, CxGridCompare.GREATER_EQUAL);
+		addEEnumLiteral(cxGridCompareEEnum, CxGridCompare.LOWER_THAN);
+		addEEnumLiteral(cxGridCompareEEnum, CxGridCompare.LOWER_EQUAL);
+		addEEnumLiteral(cxGridCompareEEnum, CxGridCompare.NOT_EQUAL);
 	}
 
 } //CxGridStylePackageImpl
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/util/CxGridStyleSwitch.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/util/CxGridStyleSwitch.java
index 1228921..52a29e9 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/util/CxGridStyleSwitch.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/style/util/CxGridStyleSwitch.java
@@ -57,7 +57,7 @@
 	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
+	 * @param ePackage the package in question.
 	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
diff --git a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/util/CxGridSourceSwitch.java b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/util/CxGridSourceSwitch.java
index 4ab1f92..f19a587 100644
--- a/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/util/CxGridSourceSwitch.java
+++ b/org.eclipse.osbp.infogrid.model/src/org/eclipse/osbp/infogrid/model/gridsource/util/CxGridSourceSwitch.java
@@ -57,7 +57,7 @@
 	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
+	 * @param ePackage the package in question.
 	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
diff --git a/org.eclipse.osbp.infogrid.model/xtend-gen/org/eclipse/osbp/infogrid/model/gridsource/util/Util.java b/org.eclipse.osbp.infogrid.model/xtend-gen/org/eclipse/osbp/infogrid/model/gridsource/util/Util.java
index 066bd48..fb5c5e9 100644
--- a/org.eclipse.osbp.infogrid.model/xtend-gen/org/eclipse/osbp/infogrid/model/gridsource/util/Util.java
+++ b/org.eclipse.osbp.infogrid.model/xtend-gen/org/eclipse/osbp/infogrid/model/gridsource/util/Util.java
@@ -18,9 +18,7 @@
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedField;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridNestedPath;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty;
-import org.eclipse.xtext.common.types.JvmOperation;
 import org.eclipse.xtext.common.types.JvmType;
-import org.eclipse.xtext.common.types.JvmTypeReference;
 import org.eclipse.xtext.xbase.lib.StringExtensions;
 
 @SuppressWarnings("all")
@@ -31,26 +29,14 @@
     if (_equals) {
       return "";
     }
-    CxGridNestedField _path_1 = property.getPath();
-    return Util.calcDotPath(_path_1);
+    return Util.calcDotPath(property.getPath());
   }
   
   public static String calcDotPath(final CxGridNestedField field) {
-    boolean _or = false;
-    boolean _equals = Objects.equal(field, null);
-    if (_equals) {
-      _or = true;
-    } else {
-      JvmOperation _field = field.getField();
-      boolean _equals_1 = Objects.equal(_field, null);
-      _or = _equals_1;
-    }
-    if (_or) {
+    if ((Objects.equal(field, null) || Objects.equal(field.getField(), null))) {
       return "";
     }
-    JvmOperation _field_1 = field.getField();
-    String _simpleName = _field_1.getSimpleName();
-    final String fieldName = Util.toPropertyName(_simpleName);
+    final String fieldName = Util.toPropertyName(field.getField().getSimpleName());
     CxGridNestedPath _path = field.getPath();
     String _calcDotPath = null;
     if (_path!=null) {
@@ -69,21 +55,10 @@
   }
   
   public static String calcDotPath(final CxGridNestedPath path) {
-    boolean _or = false;
-    boolean _equals = Objects.equal(path, null);
-    if (_equals) {
-      _or = true;
-    } else {
-      JvmOperation _field = path.getField();
-      boolean _equals_1 = Objects.equal(_field, null);
-      _or = _equals_1;
-    }
-    if (_or) {
+    if ((Objects.equal(path, null) || Objects.equal(path.getField(), null))) {
       return "";
     }
-    JvmOperation _field_1 = path.getField();
-    String _simpleName = _field_1.getSimpleName();
-    final String fieldName = Util.toPropertyName(_simpleName);
+    final String fieldName = Util.toPropertyName(path.getField().getSimpleName());
     CxGridNestedPath _path = path.getPath();
     String _calcDotPath = null;
     if (_path!=null) {
@@ -107,57 +82,32 @@
     if (_equals) {
       return null;
     }
-    CxGridNestedField _path_1 = property.getPath();
-    return Util.calcLeafType(_path_1);
+    return Util.calcLeafType(property.getPath());
   }
   
   public static JvmType calcLeafType(final CxGridNestedField field) {
-    boolean _or = false;
-    boolean _equals = Objects.equal(field, null);
-    if (_equals) {
-      _or = true;
-    } else {
-      JvmOperation _field = field.getField();
-      boolean _equals_1 = Objects.equal(_field, null);
-      _or = _equals_1;
-    }
-    if (_or) {
+    if ((Objects.equal(field, null) || Objects.equal(field.getField(), null))) {
       return null;
     }
     CxGridNestedPath _path = field.getPath();
     boolean _notEquals = (!Objects.equal(_path, null));
     if (_notEquals) {
-      CxGridNestedPath _path_1 = field.getPath();
-      return Util.calcLeafType(_path_1);
+      return Util.calcLeafType(field.getPath());
     } else {
-      JvmOperation _field_1 = field.getField();
-      JvmTypeReference _returnType = _field_1.getReturnType();
-      return _returnType.getType();
+      return field.getField().getReturnType().getType();
     }
   }
   
   public static JvmType calcLeafType(final CxGridNestedPath path) {
-    boolean _or = false;
-    boolean _equals = Objects.equal(path, null);
-    if (_equals) {
-      _or = true;
-    } else {
-      JvmOperation _field = path.getField();
-      boolean _equals_1 = Objects.equal(_field, null);
-      _or = _equals_1;
-    }
-    if (_or) {
+    if ((Objects.equal(path, null) || Objects.equal(path.getField(), null))) {
       return null;
     }
     CxGridNestedPath _path = path.getPath();
     boolean _notEquals = (!Objects.equal(_path, null));
     if (_notEquals) {
-      CxGridNestedPath _path_1 = path.getPath();
-      return Util.calcLeafType(_path_1);
+      return Util.calcLeafType(path.getPath());
     } else {
-      JvmOperation _field_1 = path.getField();
-      JvmTypeReference _returnType = _field_1.getReturnType();
-      return _returnType.getType();
+      return path.getField().getReturnType().getType();
     }
   }
   
@@ -175,22 +125,19 @@
     String tempName = null;
     boolean _isSetter = Util.isSetter(simpleName);
     if (_isSetter) {
-      String _replaceFirst = simpleName.replaceFirst(
-        "set", "");
-      String _firstLower = StringExtensions.toFirstLower(_replaceFirst);
-      tempName = _firstLower;
+      tempName = StringExtensions.toFirstLower(
+        simpleName.replaceFirst(
+          "set", ""));
     } else {
       boolean _isGetter = Util.isGetter(simpleName);
       if (_isGetter) {
         boolean _startsWith = simpleName.startsWith("get");
         if (_startsWith) {
-          String _replaceFirst_1 = simpleName.replaceFirst("get", "");
-          String _firstLower_1 = StringExtensions.toFirstLower(_replaceFirst_1);
-          tempName = _firstLower_1;
+          tempName = StringExtensions.toFirstLower(
+            simpleName.replaceFirst("get", ""));
         } else {
-          String _replaceFirst_2 = simpleName.replaceFirst("is", "");
-          String _firstLower_2 = StringExtensions.toFirstLower(_replaceFirst_2);
-          tempName = _firstLower_2;
+          tempName = StringExtensions.toFirstLower(
+            simpleName.replaceFirst("is", ""));
         }
       }
     }
@@ -202,26 +149,10 @@
     if (_equals) {
       return false;
     }
-    boolean _or = false;
-    boolean _startsWith = simpleName.startsWith("get");
-    if (_startsWith) {
-      _or = true;
-    } else {
-      boolean _startsWith_1 = simpleName.startsWith("is");
-      _or = _startsWith_1;
-    }
-    return _or;
+    return (simpleName.startsWith("get") || simpleName.startsWith("is"));
   }
   
   public static boolean isSetter(final String simpleName) {
-    boolean _and = false;
-    boolean _notEquals = (!Objects.equal(simpleName, null));
-    if (!_notEquals) {
-      _and = false;
-    } else {
-      boolean _startsWith = simpleName.startsWith("set");
-      _and = _startsWith;
-    }
-    return _and;
+    return ((!Objects.equal(simpleName, null)) && simpleName.startsWith("set"));
   }
 }
diff --git a/org.eclipse.osbp.infogrid.services.tests/.classpath b/org.eclipse.osbp.infogrid.services.tests/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services.tests/.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.infogrid.services.tests/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services.tests/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.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.infogrid.services.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.services.tests/META-INF/MANIFEST.MF
index 2284277..0a90b1c 100644
--- a/org.eclipse.osbp.infogrid.services.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.services.tests/META-INF/MANIFEST.MF
@@ -16,8 +16,8 @@
  org.eclipse.osbp.infogrid.services;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.infogrid.ecview;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
- com.vaadin.server;bundle-version="7.5.7",
- com.vaadin.shared;bundle-version="7.5.7",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
+ com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
  org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)"
 Import-Package: org.osgi.framework;version="1.8.0",
  org.osgi.service.component;version="1.2.2"
diff --git a/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/ECViewGridSourceDescriptorTest.java b/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/ECViewGridSourceDescriptorTest.java
index 7e6cfb9..c7217dc 100644
--- a/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/ECViewGridSourceDescriptorTest.java
+++ b/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/ECViewGridSourceDescriptorTest.java
@@ -10,7 +10,7 @@
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
  */
- package org.eclipse.osbp.infogrid.services.tests;
+package org.eclipse.osbp.infogrid.services.tests;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -23,14 +23,15 @@
 import java.util.Locale;
 import java.util.Map;
 
-import org.junit.Before;
-import org.junit.Test;
-import org.knowhowlab.osgi.testing.utils.BundleUtils;
-import org.knowhowlab.osgi.testing.utils.ServiceUtils;
 import org.eclipse.osbp.ecview.core.common.context.IViewContext;
 import org.eclipse.osbp.infogrid.api.IGridSourceDescriptor;
 import org.eclipse.osbp.infogrid.api.IGridSourceFacade;
 import org.eclipse.osbp.infogrid.ecview.ECViewGridSourceDescriptor;
+import org.eclipse.osbp.infogrid.services.tests.data.MyDto;
+import org.junit.Before;
+import org.junit.Test;
+import org.knowhowlab.osgi.testing.utils.BundleUtils;
+import org.knowhowlab.osgi.testing.utils.ServiceUtils;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 
@@ -50,20 +51,17 @@
 		BundleUtils.startBundleAsync(bc, "org.eclipse.osbp.infogrid.services");
 		BundleUtils.startBundleAsync(bc, "org.eclipse.osbp.infogrid.ecview");
 
-		facade = ServiceUtils.getService(getBundleContext(),
-				IGridSourceFacade.class);
+		facade = ServiceUtils.getService(getBundleContext(), IGridSourceFacade.class);
 		assertNotNull(facade);
-		descriptor = facade.getDescriptor("org.my",
-				new IGridSourceDescriptor.ConfigCallback() {
-					@Override
-					public Map<String, Object> getProperties(
-							IGridSourceDescriptor descriptor) {
-						Map<String, Object> properties = new HashMap<String, Object>();
-						properties.put("locale", Locale.GERMANY);
-						properties.put("userId", "Admin");
-						return properties;
-					}
-				});
+		descriptor = facade.getDescriptor(MyDto.class, "org.my", new IGridSourceDescriptor.ConfigCallback() {
+			@Override
+			public Map<String, Object> getProperties(IGridSourceDescriptor descriptor) {
+				Map<String, Object> properties = new HashMap<String, Object>();
+				properties.put("locale", Locale.GERMANY);
+				properties.put("userId", "Admin");
+				return properties;
+			}
+		});
 	}
 
 	private BundleContext getBundleContext() {
@@ -105,15 +103,13 @@
 	}
 
 	@Test
-	public void test_getComponent() throws IllegalArgumentException,
-			IllegalAccessException, NoSuchFieldException, SecurityException {
-		ComponentContainer component = (ComponentContainer) descriptor
-				.getComponent();
+	public void test_getComponent()
+			throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
+		ComponentContainer component = (ComponentContainer) descriptor.getComponent();
 		assertNotNull(component);
 		assertEquals(1, component.getComponentCount());
 
-		Field field = ECViewGridSourceDescriptor.class
-				.getDeclaredField("viewContext");
+		Field field = ECViewGridSourceDescriptor.class.getDeclaredField("viewContext");
 		field.setAccessible(true);
 		IViewContext viewContext = (IViewContext) field.get(descriptor);
 		assertFalse(viewContext.isDisposed());
diff --git a/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/GridSourceFacadeTest.java b/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/GridSourceFacadeTest.java
index dfce30f..f2d431a 100644
--- a/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/GridSourceFacadeTest.java
+++ b/org.eclipse.osbp.infogrid.services.tests/src/org/eclipse/osbp/infogrid/services/tests/GridSourceFacadeTest.java
@@ -10,7 +10,7 @@
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
  */
- package org.eclipse.osbp.infogrid.services.tests;
+package org.eclipse.osbp.infogrid.services.tests;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -21,15 +21,15 @@
 import java.util.List;
 import java.util.Map;
 
-import org.junit.Before;
-import org.junit.Test;
-import org.knowhowlab.osgi.testing.utils.BundleUtils;
-import org.knowhowlab.osgi.testing.utils.ServiceUtils;
 import org.eclipse.osbp.infogrid.api.IGridSourceDescriptor;
 import org.eclipse.osbp.infogrid.api.IGridSourceFacade;
 import org.eclipse.osbp.infogrid.ecview.ECViewGridSourceDescriptor;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridSource;
 import org.eclipse.osbp.infogrid.services.tests.data.MyDto;
+import org.junit.Before;
+import org.junit.Test;
+import org.knowhowlab.osgi.testing.utils.BundleUtils;
+import org.knowhowlab.osgi.testing.utils.ServiceUtils;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 
@@ -45,8 +45,7 @@
 		BundleUtils.startBundleAsync(bc, "org.eclipse.osbp.infogrid.services");
 		BundleUtils.startBundleAsync(bc, "org.eclipse.osbp.infogrid.ecview");
 
-		facade = ServiceUtils.getService(getBundleContext(),
-				IGridSourceFacade.class);
+		facade = ServiceUtils.getService(getBundleContext(), IGridSourceFacade.class);
 		assertNotNull(facade);
 	}
 
@@ -77,7 +76,7 @@
 	@SuppressWarnings("restriction")
 	@Test
 	public void test_getDescriptorById() {
-		IGridSourceDescriptor result = facade.getDescriptor("org.my", null);
+		IGridSourceDescriptor result = facade.getDescriptor(MyDto.class, "org.my", null);
 		assertNotNull(result);
 		assertTrue(result instanceof ECViewGridSourceDescriptor);
 	}
@@ -87,7 +86,7 @@
 	public void test_getDescriptorBySource() {
 		CxGridSource source = facade.getSource("org.my");
 		source.setKind(IGridSourceDescriptor.KIND_ECVIEW);
-		IGridSourceDescriptor result = facade.getDescriptor(source,
+		IGridSourceDescriptor result = facade.getDescriptor(MyDto.class, source,
 				new IGridSourceDescriptor.ConfigCallback() {
 					@Override
 					public Map<String, Object> getProperties(
@@ -100,7 +99,7 @@
 
 		// try different kind
 		source.setKind("NoKind");
-		result = facade.getDescriptor(source, null);
+		result = facade.getDescriptor(MyDto.class, source, null);
 		assertNull(result);
 	}
 
@@ -110,8 +109,7 @@
 		List<IGridSourceDescriptor> result = facade.getDescriptors(MyDto.class,
 				new IGridSourceDescriptor.ConfigCallback() {
 					@Override
-					public Map<String, Object> getProperties(
-							IGridSourceDescriptor descriptor) {
+					public Map<String, Object> getProperties(IGridSourceDescriptor descriptor) {
 						return null;
 					}
 				});
diff --git a/org.eclipse.osbp.infogrid.services/.classpath b/org.eclipse.osbp.infogrid.services/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services/.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.infogrid.services/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.services/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//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.emf-gen.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.infogrid.services/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.services/META-INF/MANIFEST.MF
index 037c0d7..c5bfd92 100644
--- a/org.eclipse.osbp.infogrid.services/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.services/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@
 Bundle-Vendor: Eclipse OSBP
 Bundle-Version: 0.9.0.qualifier
 Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.osbp.ecview.extension.grid.model,
+ org.eclipse.osbp.ecview.extension.grid.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.infogrid.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.infogrid.api;bundle-version="[0.9.0,0.10.0)",
@@ -16,3 +16,4 @@
  org.slf4j;version="1.7.2"
 Service-Component: OSGI-INF/*.xml
 Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.infogrid.services;version="0.9.0"
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/.classpath b/org.eclipse.osbp.infogrid.vaaclipse/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaaclipse/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.infogrid.vaaclipse/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..0904e44
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaaclipse/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,2 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.7"]
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaaclipse/.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.infogrid.vaaclipse/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaaclipse/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//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.emf-gen.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.infogrid.vaaclipse/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.vaaclipse/META-INF/MANIFEST.MF
index 831e2b9..05a14ef 100644
--- a/org.eclipse.osbp.infogrid.vaaclipse/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.vaaclipse/META-INF/MANIFEST.MF
@@ -4,13 +4,12 @@
 Bundle-SymbolicName: org.eclipse.osbp.infogrid.vaaclipse
 Bundle-Vendor: Eclipse OSBP
 Bundle-Version: 0.9.0.qualifier
-Require-Bundle: javax.annotation;bundle-version="[1.1.0,1.2.0)",
- javax.inject,
+Require-Bundle: javax.inject,
  org.eclipse.e4.core.contexts,
  org.eclipse.e4.ui.model.workbench,
  org.eclipse.e4.core.di,
- com.vaadin.server;bundle-version="7.5.7",
- com.vaadin.shared;bundle-version="7.5.7",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
+ com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
  org.jsoup;bundle-version="1.7.2",
  org.eclipse.e4.core.services,
  org.eclipse.osbp.runtime.web.vaadin.common;bundle-version="[0.9.0,0.10.0)",
@@ -23,13 +22,14 @@
  org.eclipse.osbp.vaaclipse.common.ecview;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.vaaclipse.common.ecview.api;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.eventbroker,
- org.eclipse.osbp.ecview.extension.grid.model,
+ org.eclipse.osbp.eventbroker;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.extension.grid.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.ecview.core.util.emf;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.datatype.lib;bundle-version="[0.9.0,0.10.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.eclipse.osbp.ui.api.user;version="0.9.0",
  org.osgi.framework;version="1.8.0",
  org.osgi.service.event;version="1.2.0",
- org.slf4j;resolution:=optional
+ org.slf4j;resolution:=optional,
+ javax.annotation
 Export-Package: org.eclipse.osbp.infogrid.vaaclipse;version="0.9.0"
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/InfoGridView.java b/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/InfoGridView.java
index 4bbb763..ca38579 100644
--- a/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/InfoGridView.java
+++ b/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/InfoGridView.java
@@ -30,7 +30,7 @@
 import org.eclipse.e4.ui.workbench.modeling.EModelService;
 import org.eclipse.osbp.dsl.common.datatypes.IDto;
 import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
-import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.runtime.common.filter.IDTOService;
 import org.eclipse.osbp.runtime.common.types.ITypeProviderService;
 import org.eclipse.osbp.infogrid.api.IGridSourceDescriptor;
 import org.eclipse.osbp.infogrid.api.IGridSourceFacade;
@@ -73,7 +73,6 @@
 	protected MPart activeMPart;
 	protected String activeContentID;
 	protected Component activeContent;
-	private EventHandler inputEventHandler;
 	private Class<?> inputClass;
 	private GridComponent currentComponent;
 
@@ -89,30 +88,6 @@
 		parentLayout.setMargin(true);
 		parentLayout.setSpacing(true);
 		parentLayout.addComponent(layout);
-
-		inputEventHandler = new EventHandler() {
-			@Override
-			public void handleEvent(Event event) {
-				Object data = event.getProperty(IEventBroker.DATA);
-				if (data instanceof EventBrokerMsg) {
-					EventBrokerMsg msg = (EventBrokerMsg) data;
-					String dtoClassFqn = getDtoName(msg.getName());
-					if (dtoClassFqn.isEmpty()) {
-						return;
-					} else {
-
-						Class<?> dtoClass = bundleSpaceTypeProvider.forName(
-								null, dtoClassFqn);
-						setInput(dtoClass, msg.getId());
-					}
-				} else if (data instanceof IDto) {
-					String id = event.getTopic().split("/")[0];
-					setInput(data.getClass(), id);
-				}
-			}
-		};
-		e4EventBroker.subscribe(EventBrokerMsg.AUTOWIRED_ENTITY_PREFIX + "*",
-				inputEventHandler);
 	}
 
 	/**
@@ -347,10 +322,6 @@
 
 	@PreDestroy
 	protected void destroy() {
-
-		eventBroker.unsubscribe(inputEventHandler);
-		inputEventHandler = null;
-
 		stateSnapshots.clear();
 		stateSnapshots = null;
 
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridComponent.java b/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridComponent.java
index a419a9f..b92e69c 100644
--- a/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridComponent.java
+++ b/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridComponent.java
@@ -12,6 +12,8 @@
  */
 package org.eclipse.osbp.infogrid.vaaclipse;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -27,7 +29,8 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
-import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.util.emf.ModelUtil;
 import org.eclipse.osbp.ecview.extension.grid.CxGrid;
 import org.eclipse.osbp.ecview.extension.grid.CxGridPackage;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
@@ -36,6 +39,12 @@
 import org.eclipse.osbp.infogrid.api.IGridSourceDescriptor;
 import org.eclipse.osbp.infogrid.api.IGridSourceFacade;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridSource;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag;
+import org.eclipse.osbp.runtime.common.filter.IDTOService;
 import org.eclipse.osbp.runtime.common.types.ITypeProviderService;
 import org.eclipse.osbp.vaaclipse.common.ecview.api.IECViewSessionHelper;
 import org.osgi.framework.BundleContext;
@@ -48,11 +57,9 @@
 import com.vaadin.ui.CustomComponent;
 
 @SuppressWarnings({ "restriction", "serial" })
-public class SingleInfoGridComponent extends CustomComponent implements
-		EditorSavedStrategy {
+public class SingleInfoGridComponent extends CustomComponent implements EditorSavedStrategy {
 
-	final static Logger LOGGER = LoggerFactory
-			.getLogger(SingleInfoGridComponent.class);
+	final static Logger LOGGER = LoggerFactory.getLogger(SingleInfoGridComponent.class);
 
 	@Inject
 	IEventBroker eventBroker;
@@ -72,8 +79,14 @@
 	String gridSourceId;
 	@Inject
 	@Optional
+	@Named("selectionEvnt")
+	EventDispatcherEvent selectionEvnt;
+	@Inject
+	@Optional
 	@Named("inputdata")
 	private List<?> inputdata;
+	@Inject
+	private IEventDispatcher eventDispatcher;
 
 	protected CssLayout layout;
 	protected Component activeContent;
@@ -124,7 +137,6 @@
 
 			component = (Component) descriptor.getComponent();
 			component.setSizeFull();
-			String topic = createTopic();
 			CxGrid grid = descriptor.getGrid();
 
 			// if there is inputdata, just put it into the grids collection
@@ -135,7 +147,13 @@
 				@Override
 				public void notifyChanged(Notification msg) {
 					if (msg.getFeature() == CxGridPackage.Literals.CX_GRID__SELECTION) {
-						eventBroker.send(topic, msg.getNewValue());
+						// msg.getNewValue() provides a dto object
+			    		if(msg.getNewValue() != null) {
+			    			selectionEvnt.addItem(EventDispatcherDataTag.ID, DtoUtils.getIdValue(msg.getNewValue()));
+			    		} else {
+			    			selectionEvnt.addItem(EventDispatcherDataTag.ID, null);
+			    		}
+			    		eventDispatcher.sendEvent(selectionEvnt);
 					}
 				}
 			});
@@ -146,8 +164,7 @@
 	@SuppressWarnings("unchecked")
 	protected void setupSaveStrategy() {
 		descriptor.setEditorSavedStrategy(this);
-		dtoService = (IDTOService<Object>) DtoServiceAccess
-				.getService(rootType);
+		dtoService = (IDTOService<Object>) DtoServiceAccess.getService(rootType);
 	}
 
 	@Override
@@ -157,41 +174,27 @@
 		}
 	}
 
-	protected String createTopic() {
-		String fqn = descriptor.getSource().getRootTypeFQN();
-		fqn = fqn.substring(fqn.lastIndexOf(".") + 1, fqn.length()).replaceAll(
-				"Dto", "");
-		return EventBrokerMsg.AUTOWIRED_ENTITY_PREFIX + fqn;
-	}
-
 	/**
-	 * Uses the IGridSourceService to create the descriptor that should be used
-	 * for the given id.
+	 * Uses the IGridSourceService to create the descriptor that should be used for the given id.
 	 * 
 	 * @param sourceId
 	 * @return
 	 */
-	protected IECViewGridSourceDescriptor createGridSourceDescriptor(
-			String sourceId) {
+	protected IECViewGridSourceDescriptor createGridSourceDescriptor(String sourceId) {
 
 		CxGridSource gridSource = gridSourceService.getSource(sourceId);
 		gridSource.getTags().add(IGridSourceDescriptor.TAG__SINGLE_GRID);
-		rootType = bundleSpaceTypeProvider.forName(null,
-				gridSource.getRootTypeFQN());
-		IGridSourceDescriptor descriptor = gridSourceService.getDescriptor(
-				rootType, gridSource,
-				new IGridSourceDescriptor.ConfigCallback() {
-					@Override
-					public Map<String, Object> getProperties(
-							IGridSourceDescriptor descriptor) {
-						CxGridSource cxSource = descriptor.getSource();
-						if (cxSource.getKind().equals(
-								IGridSourceDescriptor.KIND_ECVIEW)) {
-							return createECViewProperties(descriptor);
-						}
-						return null;
-					}
-				});
+		rootType = bundleSpaceTypeProvider.forName(null, gridSource.getRootTypeFQN());
+		IGridSourceDescriptor descriptor = gridSourceService.getDescriptor(rootType, gridSource, new IGridSourceDescriptor.ConfigCallback() {
+			@Override
+			public Map<String, Object> getProperties(IGridSourceDescriptor descriptor) {
+				CxGridSource cxSource = descriptor.getSource();
+				if (cxSource.getKind().equals(IGridSourceDescriptor.KIND_ECVIEW)) {
+					return createECViewProperties(descriptor);
+				}
+				return null;
+			}
+		});
 		descriptor.setLocale(locale);
 		return (IECViewGridSourceDescriptor) descriptor;
 	}
@@ -202,8 +205,7 @@
 	 * @param descriptor
 	 * @return
 	 */
-	protected Map<String, Object> createECViewProperties(
-			IGridSourceDescriptor descriptor) {
+	protected Map<String, Object> createECViewProperties(IGridSourceDescriptor descriptor) {
 		Map<String, Object> props = ecviewPropsProvider.createBasicProperties();
 		if (inputdata != null) {
 			props.put(IECViewGridSourceDescriptor.PROP_MANUAL_BEANS, true);
@@ -218,6 +220,12 @@
 			descriptor = null;
 		}
 	}
+	
+	public void focus(){
+		CxGrid cxGrid = descriptor.getGrid();
+		YView yView = ModelUtil.getView(cxGrid);
+		yView.setCurrentFocus(cxGrid);
+	}
 
 	public List<?> getInputData() {
 		return inputdata;
@@ -227,6 +235,10 @@
 		this.inputdata = inputData;
 	}
 
+	public void refreshData() {
+		descriptor.refreshData();
+	}
+
 	protected BundleContext getBundleContext() {
 		return FrameworkUtil.getBundle(getClass()).getBundleContext();
 	}
diff --git a/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridView.java b/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridView.java
index 5a0e2db..54ae3ff 100644
--- a/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridView.java
+++ b/org.eclipse.osbp.infogrid.vaaclipse/src/org/eclipse/osbp/infogrid/vaaclipse/SingleInfoGridView.java
@@ -27,7 +27,8 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
-import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.ecview.core.common.model.core.YView;
+import org.eclipse.osbp.ecview.core.util.emf.ModelUtil;
 import org.eclipse.osbp.ecview.extension.grid.CxGrid;
 import org.eclipse.osbp.ecview.extension.grid.CxGridPackage;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
@@ -36,6 +37,7 @@
 import org.eclipse.osbp.infogrid.api.IGridSourceDescriptor;
 import org.eclipse.osbp.infogrid.api.IGridSourceFacade;
 import org.eclipse.osbp.infogrid.model.gridsource.CxGridSource;
+import org.eclipse.osbp.runtime.common.filter.IDTOService;
 import org.eclipse.osbp.runtime.common.types.ITypeProviderService;
 import org.eclipse.osbp.ui.api.user.IUser;
 import org.eclipse.osbp.vaaclipse.common.ecview.api.IECViewSessionHelper;
@@ -137,13 +139,12 @@
 
 			component = (Component) descriptor.getComponent();
 			component.setSizeFull();
-			String topic = createTopic();
 			CxGrid grid = descriptor.getGrid();
 			grid.eAdapters().add(new AdapterImpl() {
 				@Override
 				public void notifyChanged(Notification msg) {
 					if (msg.getFeature() == CxGridPackage.Literals.CX_GRID__SELECTION) {
-						eventBroker.send(topic, msg.getNewValue());
+//						eventBroker.send(topic, msg.getNewValue());
 					}
 				}
 			});
@@ -165,13 +166,6 @@
 		}
 	}
 
-	protected String createTopic() {
-		String fqn = descriptor.getSource().getRootTypeFQN();
-		fqn = fqn.substring(fqn.lastIndexOf(".") + 1, fqn.length()).replaceAll(
-				"Dto", "");
-		return EventBrokerMsg.AUTOWIRED_ENTITY_PREFIX + fqn;
-	}
-
 	/**
 	 * Uses the IGridSourceService to create the descriptor that should be used
 	 * for the given id.
@@ -227,6 +221,12 @@
 		}
 	}
 
+	public void focus(){
+		CxGrid cxGrid = descriptor.getGrid();
+		YView yView = ModelUtil.getView(cxGrid);
+		yView.setCurrentFocus(cxGrid);
+	}
+
 	public List<?> getInputData() {
 		return inputdata;
 	}
diff --git a/org.eclipse.osbp.infogrid.vaadin/.classpath b/org.eclipse.osbp.infogrid.vaadin/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaadin/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.infogrid.vaadin/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.infogrid.vaadin/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..0904e44
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaadin/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,2 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.7"]
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaadin/.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.infogrid.vaadin/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.infogrid.vaadin/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//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.emf-gen.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.infogrid.vaadin/META-INF/MANIFEST.MF b/org.eclipse.osbp.infogrid.vaadin/META-INF/MANIFEST.MF
index b7a4d51..676197e 100644
--- a/org.eclipse.osbp.infogrid.vaadin/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.infogrid.vaadin/META-INF/MANIFEST.MF
@@ -5,12 +5,12 @@
 Bundle-Vendor: Eclipse OSBP
 Bundle-Version: 0.9.0.qualifier
 Require-Bundle: org.eclipse.core.runtime,
- com.vaadin.server;bundle-version="7.5.7",
- com.vaadin.shared;bundle-version="7.5.7",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
+ com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
  org.jsoup;bundle-version="1.7.2",
  org.eclipse.osbp.infogrid.api;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ecview.extension.grid.model,
+ org.eclipse.osbp.ecview.extension.grid.model;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.infogrid.model;bundle-version="[0.9.0,0.10.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.infogrid.vaadin;version="0.9.0"
diff --git a/stuff b/stuff
deleted file mode 100644
index e69de29..0000000
--- a/stuff
+++ /dev/null
