parallel ip - initial checkin

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.project b/.project
new file mode 100644
index 0000000..f08e986
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaadin.emf.aggregator</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/about.html b/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..17a1471
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG                                    -->
+<!--# All rights reserved. This program and the accompanying materials 		 -->
+<!--# are made available under the terms of the Eclipse Public License v1.0  -->
+<!--# which accompanies this distribution, and is available at               -->
+<!--# http://www.eclipse.org/legal/epl-v10.html                              -->
+<!--#                                                                        -->
+<!--# Contributors:                                                          -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation                           -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job 						 -->
+<!--#======================================================================= -->
+
+<jenkins>
+
+	<!-- DO NOT EDIT BELOW THIS LINE -->
+        <jenkins.build.dependencies>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
+        </jenkins.build.dependencies>
+</jenkins>
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaadin.emf.api/.project b/org.eclipse.osbp.vaadin.emf.api/.project
new file mode 100644
index 0000000..e54c90f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaadin.emf.api</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.emf.api/LICENSE.txt b/org.eclipse.osbp.vaadin.emf.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin.emf.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..15aaa52
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaadin.emf.api
+Bundle-SymbolicName: org.eclipse.osbp.vaadin.emf.api
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.e4.ui.model.workbench,
+ org.eclipse.emf.common,
+ org.eclipse.emf.edit
+Export-Package: org.eclipse.osbp.vaadin.emf.api;version="0.9.0"
diff --git a/org.eclipse.osbp.vaadin.emf.api/about.html b/org.eclipse.osbp.vaadin.emf.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.api/about.ini b/org.eclipse.osbp.vaadin.emf.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaadin.emf.api/about.mappings b/org.eclipse.osbp.vaadin.emf.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaadin.emf.api/about.properties b/org.eclipse.osbp.vaadin.emf.api/about.properties
new file mode 100644
index 0000000..e248307
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaadin.emf.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaadin.emf.api/build.properties b/org.eclipse.osbp.vaadin.emf.api/build.properties
new file mode 100644
index 0000000..5364007
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               license.html,\
+               LICENSE.txt
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.vaadin.emf.api/epl-v10.html b/org.eclipse.osbp.vaadin.emf.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.api/license.html b/org.eclipse.osbp.vaadin.emf.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.api/pom.xml b/org.eclipse.osbp.vaadin.emf.api/pom.xml
new file mode 100644
index 0000000..05f56ce
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/pom.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.osbp.vaadin.emf</groupId>
+		<artifactId>org.eclipse.osbp.vaadin.emf.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.vaadin.emf.api</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<vaadin-version>${vaadin.version}</vaadin-version>
+		<vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version>
+		<jdkVersion>1.8</jdkVersion>
+	</properties>
+
+	<dependencies>
+    	</dependencies>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <resources>
+            <resource>
+                <directory>src</directory>
+                <!-- <excludes> -->
+                <!-- <exclude>**/*.java</exclude> -->
+                <!-- </excludes> -->
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>nl.geodienstencentrum.maven</groupId>
+                <artifactId>sass-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>process-sources</phase>
+                        <!-- <goals> -->
+                        <!-- <goal>update-stylesheets</goal> -->
+                        <!-- </goals> -->
+                    </execution>
+                </executions>
+                <configuration>
+                    <resources>
+                        <resource>
+                            <source>
+                                <directory>${basedir}/scss</directory>
+                                <includes>
+                                    <include>styles.scss</include>
+                                </includes>
+                                <excludes>
+                                    <!-- <exclude>_addons.scss</exclude> -->
+                                    <!-- <exclude>_variables.scss</exclude> -->
+                                    <!-- <exclude>osbee.scss</exclude> -->
+                                    <!-- <exclude>style_notes.scss</exclude> -->
+                                    <!-- <exclude>scss/removed_files/*</exclude> -->
+                                    <!-- <exclude>**/osbp_legacy/*</exclude> -->
+                                    <!-- <exclude>**/osbp_legacy/icons/*</exclude> -->
+                                    <!-- <exclude>**/fontello.scss</exclude> -->
+                                </excludes>
+                            </source>
+                            <relativeOutputDirectory/>
+                            <destination>${basedir}/VAADIN/themes/osbee2</destination>
+                        </resource>
+                    </resources>
+                    <sassOptions>
+                        <always_update>true</always_update>
+                        <style>:compressed</style>
+                        <debug_info>true</debug_info>
+                    </sassOptions>
+                    <!-- <rubyVersion>2.0</rubyVersion> -->
+                    <!-- <useCompass>true</useCompass> -->
+                </configuration>
+            </plugin>
+        
+            <!-- <plugin> -->
+            <!-- <groupId>org.jasig.maven</groupId> -->
+            <!-- <artifactId>sass-maven-plugin</artifactId> -->
+            <!-- <version>1.1.1</version> -->
+            <!-- <executions> -->
+            <!-- <execution> -->
+            <!-- <id>package</id> -->
+            <!-- <phase>generate-sources</phase> -->
+            <!-- <goals> -->
+            <!-- <goal>update-stylesheets</goal> -->
+            <!-- </goals> -->
+            <!-- </execution> -->
+            <!-- </executions> -->
+            <!-- <configuration> -->
+            <!-- <resources> -->
+            <!-- <resource> -->
+            <!-- <source> -->
+            <!-- <directory>${basedir}/scss</directory> -->
+            <!-- </source> -->
+            <!-- <destination>${basedir}/VAADIN/themes/orgOsbeeDefaultTheme</destination> -->
+            <!-- </resource> -->
+            <!-- </resources> -->
+            <!-- <useCompass>true</useCompass> -->
+            <!-- </configuration> -->
+            <!-- </plugin> -->
+            <!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+            <!-- directory is cleaned properly -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.19</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        
+        
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!--This plugin's configuration is used to store Eclipse m2e settings 
+					only. It has no influence on the Maven build itself. -->
+                <plugin>
+                    <groupId>org.eclipse.m2e</groupId>
+                    <artifactId>lifecycle-mapping</artifactId>
+                    <version>1.0.0</version>
+                    <configuration>
+                        <lifecycleMappingMetadata>
+                            <pluginExecutions>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>com.vaadin</groupId>
+                                        <artifactId>vaadin-maven-plugin</artifactId>
+                                        <versionRange>[2.3.0-1,)</versionRange>
+                                        <goals>
+                                            <goal>resources</goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore/>
+                                    </action>
+                                </pluginExecution>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>com.vaadin</groupId>
+                                        <artifactId>vaadin-maven-plugin</artifactId>
+                                        <versionRange>[1.0.2,)</versionRange>
+                                        <goals>
+                                            <goal>update-widgetset</goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore/>
+                                    </action>
+                                </pluginExecution>
+                            </pluginExecutions>
+                        </lifecycleMappingMetadata>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+</project>
diff --git a/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/EmfModelElementClickEvent.java b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/EmfModelElementClickEvent.java
new file mode 100644
index 0000000..4129236
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/EmfModelElementClickEvent.java
@@ -0,0 +1,67 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.api;
+
+import org.eclipse.emf.ecore.EObject;
+
+// TODO: Auto-generated Javadoc - check the links in the description
+/**
+ * This class is a Vaadin session singleton and allows parties to enable the
+ * layout click event dispatching by event admin.<br>
+ * If activated, several components of the modeled workbench will send click
+ * events. See { link #TOPIC} and { link EventData} for details.
+ * 
+ * @Scope(session-singleton)
+ * @NoImplementByClients
+ */
+public class EmfModelElementClickEvent {
+
+	/** The ui element. */
+	private final Object uiElement;
+	
+	/** The model element. */
+	private final EObject modelElement;
+
+	/**
+	 * Instantiates a new emf model element click event.
+	 *
+	 * @param uiElement
+	 *            the ui element
+	 * @param modelElement
+	 *            the model element
+	 */
+	public EmfModelElementClickEvent(Object uiElement, EObject modelElement) {
+		this.uiElement = uiElement;
+		this.modelElement = modelElement;
+	}
+
+	/**
+	 * The UI element that was clicked.
+	 *
+	 * @return the ui element
+	 */
+	public Object getUiElement() {
+		return uiElement;
+	}
+
+	/**
+	 * The model element associated with the ui element.
+	 *
+	 * @return the model element
+	 */
+	public EObject getModelElement() {
+		return modelElement;
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/ICommandStack.java b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/ICommandStack.java
new file mode 100644
index 0000000..b706c61
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/ICommandStack.java
@@ -0,0 +1,35 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.api;
+
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ICommandStack.
+ */
+public interface ICommandStack extends CommandStack {
+
+	/**
+	 * Returns all commands contained in the command stack.
+	 *
+	 * @return the all commands
+	 */
+	List<Command> getAllCommands();
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/IModelingConstants.java b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/IModelingConstants.java
new file mode 100644
index 0000000..4230227
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/IModelingConstants.java
@@ -0,0 +1,29 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.api;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IModelingConstants.
+ */
+public interface IModelingConstants {
+	
+	/**
+	 * Sends the clicked UI element and the associated model element by this
+	 * topic in event admin.
+	 */
+	public static final String TOPIC__ELEMENT_CLICKED = "osbee/vaadin/emf/elementClicked";
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/IModelingContext.java b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/IModelingContext.java
new file mode 100644
index 0000000..1f5a25c
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.api/src/org/eclipse/osbp/vaadin/emf/api/IModelingContext.java
@@ -0,0 +1,118 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.api;
+
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A design context is a vaaclipse session singleton. It is accessible the the
+ * eclipse context and returns important information about the designer
+ * environment.
+ * 
+ * @Scope(session-singleton)
+ * @NoImplementByClients
+ */
+public interface IModelingContext {
+
+	/**
+	 * Sends events by the event admin about the state of the modeling context.
+	 * Data is Boolean.TRUE or Boolean.FALSE.
+	 */
+	public static final String TOPIC_STATE = "osbee/vaadin/emf/modeling/state";
+
+	/**
+	 * Returns the model element for the given UI.
+	 *
+	 * @param component
+	 *            the component
+	 * @return the model for ui
+	 */
+	EObject getModelForUi(Object component);
+
+	/**
+	 * Loads the given resource.
+	 *
+	 * @param uri
+	 *            the uri
+	 */
+	public abstract void loadPerspective(URI uri);
+
+	/**
+	 * Loads the given resource.
+	 *
+	 * @param uri
+	 *            the new perspective
+	 */
+	public abstract void setPerspective(URI uri);
+
+	/**
+	 * Returns the editing domain.
+	 *
+	 * @return the editing domain
+	 */
+	public abstract EditingDomain getEditingDomain();
+
+	/**
+	 * Returns the adapter factory.
+	 *
+	 * @return the adapter factory
+	 */
+	public abstract AdapterFactory getAdapterFactory();
+
+	/**
+	 * Returns the command stack.
+	 *
+	 * @return the command stack
+	 */
+	public abstract CommandStack getCommandStack();
+
+	/**
+	 * Returns true, if the design mode is active.
+	 *
+	 * @return true, if is design mode
+	 */
+	public boolean isDesignMode();
+
+	/**
+	 * Activate the design mode.
+	 *
+	 * @param value
+	 *            the new design mode
+	 */
+	void setDesignMode(boolean value);
+
+	/**
+	 * The Interface CommandStack.
+	 */
+	public interface CommandStack extends
+			org.eclipse.emf.common.command.CommandStack {
+
+		/**
+		 * Returns all commands contained in the command stack.
+		 *
+		 * @return the all commands
+		 */
+		List<Command> getAllCommands();
+
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.feature/.project b/org.eclipse.osbp.vaadin.emf.feature/.project
new file mode 100644
index 0000000..2a08da6
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaadin.widgetset.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.emf.feature/LICENSE.txt b/org.eclipse.osbp.vaadin.emf.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.feature/build.properties b/org.eclipse.osbp.vaadin.emf.feature/build.properties
new file mode 100644
index 0000000..2969796
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/build.properties
@@ -0,0 +1,6 @@
+bin.includes = epl-v10.html,  feature.xml,\
+               feature.properties,\
+               LICENSE.txt,\
+               license.html
+src.includes = epl-v10.html,  license.html,\
+               LICENSE.txt
diff --git a/org.eclipse.osbp.vaadin.emf.feature/epl-v10.html b/org.eclipse.osbp.vaadin.emf.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.feature/feature.properties b/org.eclipse.osbp.vaadin.emf.feature/feature.properties
new file mode 100644
index 0000000..561ee2a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cristiano Gavião - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName =OSBP: EMF for Vaadin 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This feature provides the bundles for the OSBP Vaadin Widgetset.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.vaadin.emf.feature/feature.xml b/org.eclipse.osbp.vaadin.emf.feature/feature.xml
new file mode 100644
index 0000000..5850c7f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/feature.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.vaadin.emf.feature"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <plugin
+        id="org.eclipse.osbp.vaadin.emf"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.vaadin.emf.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.vaadin.emf.feature/license.html b/org.eclipse.osbp.vaadin.emf.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.feature/pom.xml b/org.eclipse.osbp.vaadin.emf.feature/pom.xml
new file mode 100644
index 0000000..2abe6be
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/pom.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.osbp.vaadin.emf</groupId>
+		<artifactId>org.eclipse.osbp.vaadin.emf.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.vaadin.emf.feature</artifactId>
+	<packaging>eclipse-feature</packaging>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-source-feature-plugin</artifactId>
+				<version>${tychoExtrasVersion}</version>
+				<executions>
+					<execution>
+						<id>source-feature</id>
+						<phase>package</phase>
+						<goals>
+							<goal>source-feature</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<labelSuffix> (source)</labelSuffix>
+					<excludes>
+						<plugin id="dcharts"/>
+						<plugin id="com.vaadin.theme-compiler"/>
+						<plugin id="com.vaadin.client-compiled"/>
+						<plugin id="com.vaadin.server"/>
+						<plugin id="com.vaadin.shared"/>
+						<plugin id="com.vaadin.shared.deps"/>
+						<plugin id="com.vaadin.themes"/>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
+					is not fixed -->
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-p2-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>attached-p2-metadata</id>
+						<phase>package</phase>
+						<goals>
+							<goal>p2-metadata</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>javadoc-jar</id>
+						<phase>package</phase>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+	</dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.vaadin.emf.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.vaadin.emf.feature/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf.feature/src/overview.html b/org.eclipse.osbp.vaadin.emf.feature/src/overview.html
new file mode 100644
index 0000000..33010ee
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf.feature/src/overview.html
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP runtime web vaadin components feature Overview</title>
+</head>
+<body>
+<p>The <b>OSBP&nbsp;feature</b>&nbsp;provides the bundles for the OSBP Vaadin Widgetset..</p>
+
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.vaadin.emf/.project b/org.eclipse.osbp.vaadin.emf/.project
new file mode 100644
index 0000000..8ed7490
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.vaadin.emf</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.vaadin.emf/LICENSE.txt b/org.eclipse.osbp.vaadin.emf/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaadin.emf/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..042294c
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.vaadin.emf
+Bundle-SymbolicName: org.eclipse.osbp.vaadin.emf;singleton:=true
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.osbp.vaadin.emf.api;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ com.vaadin.server,
+ org.eclipse.emf.ecore,
+ com.vaadin.shared,
+ org.eclipse.emf.edit,
+ org.eclipse.osbp.runtime.web.vaadin.common;bundle-version="[0.9.0,0.10.0)",
+ org.jsoup;bundle-version="1.8.3",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.core.runtime;bundle-version="3.10.0"
+Import-Package: org.slf4j
+Export-Package: org.eclipse.osbp.vaadin.emf.actions;version="0.9.0",
+ org.eclipse.osbp.vaadin.emf.commands,
+ org.eclipse.osbp.vaadin.emf.data;version="0.9.0",
+ org.eclipse.osbp.vaadin.emf.data.fields;version="0.9.0",
+ org.eclipse.osbp.vaadin.emf.views;version="0.9.0"
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.vaadin.emf/about.html b/org.eclipse.osbp.vaadin.emf/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf/about.ini b/org.eclipse.osbp.vaadin.emf/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.vaadin.emf/about.mappings b/org.eclipse.osbp.vaadin.emf/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.vaadin.emf/about.properties b/org.eclipse.osbp.vaadin.emf/about.properties
new file mode 100644
index 0000000..6c0d648
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.vaadin.emf
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.vaadin.emf/build.properties b/org.eclipse.osbp.vaadin.emf/build.properties
new file mode 100644
index 0000000..e184d66
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               LICENSE.txt,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.vaadin.emf/epl-v10.html b/org.eclipse.osbp.vaadin.emf/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf/images/LICENSE b/org.eclipse.osbp.vaadin.emf/images/LICENSE
new file mode 100644
index 0000000..7266bb4
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/images/LICENSE
@@ -0,0 +1 @@
+Icons from org.eclipse.jdt.ui (EPL)
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf/images/class_obj.gif b/org.eclipse.osbp.vaadin.emf/images/class_obj.gif
new file mode 100644
index 0000000..e4c2a83
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/images/class_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaadin.emf/images/field_public_obj.gif b/org.eclipse.osbp.vaadin.emf/images/field_public_obj.gif
new file mode 100644
index 0000000..d4cb425
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/images/field_public_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.vaadin.emf/license.html b/org.eclipse.osbp.vaadin.emf/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.vaadin.emf/pom.xml b/org.eclipse.osbp.vaadin.emf/pom.xml
new file mode 100644
index 0000000..a9729ed
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/pom.xml
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.osbp.vaadin.emf</groupId>
+		<artifactId>org.eclipse.osbp.vaadin.emf.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.vaadin.emf</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<vaadin-version>${vaadin.version}</vaadin-version>
+		<vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version>
+		<jdkVersion>1.8</jdkVersion>
+	</properties>
+	<pluginRepositories>
+		<pluginRepository>
+			<id>rubygems-releases</id>
+			<url>http://rubygems-proxy.torquebox.org/releases</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+	<dependencies>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <resources>
+            <resource>
+                <directory>src</directory>
+                <!-- <excludes> -->
+                <!-- <exclude>**/*.java</exclude> -->
+                <!-- </excludes> -->
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>nl.geodienstencentrum.maven</groupId>
+                <artifactId>sass-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>process-sources</phase>
+                        <!-- <goals> -->
+                        <!-- <goal>update-stylesheets</goal> -->
+                        <!-- </goals> -->
+                    </execution>
+                </executions>
+                <configuration>
+                    <resources>
+                        <resource>
+                            <source>
+                                <directory>${basedir}/scss</directory>
+                                <includes>
+                                    <include>styles.scss</include>
+                                </includes>
+                                <excludes>
+                                    <!-- <exclude>_addons.scss</exclude> -->
+                                    <!-- <exclude>_variables.scss</exclude> -->
+                                    <!-- <exclude>osbee.scss</exclude> -->
+                                    <!-- <exclude>style_notes.scss</exclude> -->
+                                    <!-- <exclude>scss/removed_files/*</exclude> -->
+                                    <!-- <exclude>**/osbp_legacy/*</exclude> -->
+                                    <!-- <exclude>**/osbp_legacy/icons/*</exclude> -->
+                                    <!-- <exclude>**/fontello.scss</exclude> -->
+                                </excludes>
+                            </source>
+                            <relativeOutputDirectory/>
+                            <destination>${basedir}/VAADIN/themes/osbee2</destination>
+                        </resource>
+                    </resources>
+                    <sassOptions>
+                        <always_update>true</always_update>
+                        <style>:compressed</style>
+                        <debug_info>true</debug_info>
+                    </sassOptions>
+                    <!-- <rubyVersion>2.0</rubyVersion> -->
+                    <!-- <useCompass>true</useCompass> -->
+                </configuration>
+            </plugin>
+        
+            <!-- <plugin> -->
+            <!-- <groupId>org.jasig.maven</groupId> -->
+            <!-- <artifactId>sass-maven-plugin</artifactId> -->
+            <!-- <version>1.1.1</version> -->
+            <!-- <executions> -->
+            <!-- <execution> -->
+            <!-- <id>package</id> -->
+            <!-- <phase>generate-sources</phase> -->
+            <!-- <goals> -->
+            <!-- <goal>update-stylesheets</goal> -->
+            <!-- </goals> -->
+            <!-- </execution> -->
+            <!-- </executions> -->
+            <!-- <configuration> -->
+            <!-- <resources> -->
+            <!-- <resource> -->
+            <!-- <source> -->
+            <!-- <directory>${basedir}/scss</directory> -->
+            <!-- </source> -->
+            <!-- <destination>${basedir}/VAADIN/themes/orgOsbeeDefaultTheme</destination> -->
+            <!-- </resource> -->
+            <!-- </resources> -->
+            <!-- <useCompass>true</useCompass> -->
+            <!-- </configuration> -->
+            <!-- </plugin> -->
+            <plugin>
+                <groupId>com.vaadin</groupId>
+                <artifactId>vaadin-maven-plugin</artifactId>
+                <version>${vaadin.plugin.version}</version>
+                <configuration>
+                    <extraJvmArgs>-Xmx1024M -Xss1024k</extraJvmArgs>
+                    <!-- <runTarget>mobilemail</runTarget> -->
+                    <!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This 
+						way compatible with Vaadin eclipse plugin. -->
+                    <webappDirectory>${basedir}/VAADIN/widgetsets
+                    </webappDirectory>
+                    <hostedWebapp>${basedir}/VAADIN/widgetsets
+                    </hostedWebapp>
+                    <noServer>true</noServer>
+                    <gwtSdkFirstInClasspath>true</gwtSdkFirstInClasspath>
+                    <!-- Remove draftCompile when project is ready -->
+                    <draftCompile>true</draftCompile>
+                    <strict>true</strict>
+                    <compileReport>false</compileReport>
+                    <style>PRETTY</style>
+                    <runTarget>http://localhost:8080/</runTarget>
+                    <!-- Remove these when going to release dependencies -->
+                    <force>true</force>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>resources</goal>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- As we are doing "inplace" GWT compilation, ensure the widgetset -->
+            <!-- directory is cleaned properly -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-clean-plugin</artifactId>
+                <version>3.0.0</version>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <directory>VAADIN/gwt-unitCache</directory>
+                        </fileset>
+                        <fileset>
+                            <directory>VAADIN/widgetsets</directory>
+                        </fileset>
+                    </filesets>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.19</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        
+        
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!--This plugin's configuration is used to store Eclipse m2e settings 
+					only. It has no influence on the Maven build itself. -->
+                <plugin>
+                    <groupId>org.eclipse.m2e</groupId>
+                    <artifactId>lifecycle-mapping</artifactId>
+                    <version>1.0.0</version>
+                    <configuration>
+                        <lifecycleMappingMetadata>
+                            <pluginExecutions>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>com.vaadin</groupId>
+                                        <artifactId>vaadin-maven-plugin</artifactId>
+                                        <versionRange>[2.3.0-1,)</versionRange>
+                                        <goals>
+                                            <goal>resources</goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore/>
+                                    </action>
+                                </pluginExecution>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>com.vaadin</groupId>
+                                        <artifactId>vaadin-maven-plugin</artifactId>
+                                        <versionRange>[1.0.2,)</versionRange>
+                                        <goals>
+                                            <goal>update-widgetset</goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore/>
+                                    </action>
+                                </pluginExecution>
+                            </pluginExecutions>
+                        </lifecycleMappingMetadata>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>nl.geodienstencentrum.maven</groupId>
+                    <artifactId>sass-maven-plugin</artifactId>
+                    <version>2.16</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+</project>
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/actions/EObjectActionHandler.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/actions/EObjectActionHandler.java
new file mode 100644
index 0000000..5724049
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/actions/EObjectActionHandler.java
@@ -0,0 +1,194 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.actions;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.command.CreateChildCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.EmfModelTreeContainer;
+
+import com.vaadin.event.Action;
+import com.vaadin.server.Resource;
+import com.vaadin.ui.AbstractSelect;
+
+/**
+ * A Vaadin ActionHandler that is aware about all containment references that
+ * can be created for a single EObject.
+ */
+@SuppressWarnings("serial")
+public class EObjectActionHandler implements Action.Handler {
+
+	private EditCallback callback;
+	private IModelingContext modelingContext;
+	private IResourceProvider resourceProvider;
+
+	public EObjectActionHandler(IModelingContext modelingContext,
+			IResourceProvider resourceProvider, EditCallback callback) {
+		this.modelingContext = modelingContext;
+		this.resourceProvider = resourceProvider;
+		this.callback = callback;
+	}
+
+	/**
+	 * Gets the list of actions applicable to this handler.
+	 * 
+	 * @param target
+	 *            the target handler to list actions for. For item containers
+	 *            this is the item id.
+	 * @param sender
+	 *            the party that would be sending the actions. Most of this is
+	 *            the action container.
+	 * @return the list of Action
+	 */
+	@SuppressWarnings("unchecked")
+	public Action[] getActions(Object target, Object sender) {
+
+		List<CustomAction> result = new ArrayList<>();
+		if (target != null) {
+			CustomAction editAction = new CustomAction(Commands.EDIT_DIALOG,
+					"Edit", null, null);
+			editAction.modelElement = (EObject) target;
+			result.add(editAction);
+
+			result.add(new CustomAction(Commands.REFRESH_NODE, "Refresh", null,
+					null));
+
+			if (canDelete(target)) {
+				result.add(new CustomAction(Commands.DELETE, "Delete", null,
+						null));
+			}
+
+			if (modelingContext.getCommandStack().canUndo()) {
+				result.add(new CustomAction(Commands.UNDO, "Undo", null, null));
+			}
+
+			if (modelingContext.getCommandStack().canRedo()) {
+				result.add(new CustomAction(Commands.REDO, "Redo", null, null));
+			}
+		}
+
+		return result.toArray(new Action[result.size()]);
+	}
+
+	private boolean canDelete(Object target) {
+		Command command = RemoveCommand.create(
+				modelingContext.getEditingDomain(), target);
+		return command.canExecute();
+	}
+
+	/**
+	 * Handles an action for the given target. The handler method may just
+	 * discard the action if it's not suitable.
+	 * 
+	 * @param action
+	 *            the action to be handled.
+	 * @param sender
+	 *            the sender of the action. This is most often the action
+	 *            container.
+	 * @param target
+	 *            the target of the action. For item containers this is the item
+	 *            id.
+	 */
+	public void handleAction(Action action, Object sender, Object target) {
+		CustomAction customAction = (CustomAction) action;
+
+		EditingDomain domain = modelingContext.getEditingDomain();
+		if (customAction.getCommand() == Commands.CREATE_CHILD) {
+			CommandParameter executeParam = new CommandParameter(target,
+					customAction.getParam().getFeature(),
+					customAction.getParam());
+			Command command = domain.createCommand(CreateChildCommand.class,
+					executeParam);
+			domain.getCommandStack().execute(command);
+		} else if (customAction.getCommand() == Commands.DELETE) {
+			domain.getCommandStack().execute(
+					RemoveCommand.create(domain, target));
+		} else if (customAction.getCommand() == Commands.UNDO) {
+			domain.getCommandStack().undo();
+		} else if (customAction.getCommand() == Commands.REDO) {
+			domain.getCommandStack().redo();
+		} else if (customAction.getCommand() == Commands.REFRESH_NODE) {
+			AbstractSelect select = (AbstractSelect) sender;
+			EmfModelTreeContainer container = (EmfModelTreeContainer) select
+					.getContainerDataSource();
+			container.refreshNode(target);
+		} else if (customAction.getCommand() == Commands.EDIT_DIALOG) {
+			callback.edit(customAction.modelElement);
+		}
+	}
+
+	/**
+	 * Custom action wraps CommandParameter.
+	 */
+	private static class CustomAction extends Action {
+
+		private final Commands command;
+		private final CommandParameter param;
+		private final EStructuralFeature feature;
+		private EObject modelElement;
+
+		public CustomAction(Commands command, String caption, Resource icon,
+				CommandParameter param) {
+			super(caption, icon);
+			this.command = command;
+			this.param = param;
+			this.feature = null;
+		}
+
+		public CustomAction(Commands command, String caption, Resource icon,
+				CommandParameter param, EStructuralFeature feature) {
+			super(caption, icon);
+			this.command = command;
+			this.param = param;
+			this.feature = feature;
+		}
+
+		public CustomAction(Commands command, String caption, Resource icon) {
+			super(caption, icon);
+			this.command = command;
+			this.param = null;
+			this.feature = null;
+		}
+
+		public CommandParameter getParam() {
+			return param;
+		}
+
+		public Commands getCommand() {
+			return command;
+		}
+
+		public EStructuralFeature getFeature() {
+			return feature;
+		}
+
+	}
+
+	enum Commands {
+		EDIT_DIALOG, CREATE_CHILD, DELETE, UNDO, REDO, COPY, PASTE, REFRESH_NODE
+	}
+
+	public interface EditCallback {
+		void edit(EObject model);
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/actions/EmfTreeDndHandler.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/actions/EmfTreeDndHandler.java
new file mode 100644
index 0000000..859c973
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/actions/EmfTreeDndHandler.java
@@ -0,0 +1,171 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.vaadin.emf.actions;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.MoveCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.event.DataBoundTransferable;
+import com.vaadin.event.dd.DragAndDropEvent;
+import com.vaadin.event.dd.DropHandler;
+import com.vaadin.event.dd.acceptcriteria.AcceptAll;
+import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.shared.ui.dd.VerticalDropLocation;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.Tree.TreeTargetDetails;
+
+@SuppressWarnings("serial")
+public class EmfTreeDndHandler implements DropHandler {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(EmfTreeDndHandler.class);
+
+	private final IModelingContext modelingContext;
+	private final Tree tree;
+
+	public EmfTreeDndHandler(IModelingContext modelingContext, Tree tree) {
+		super();
+		this.modelingContext = modelingContext;
+		this.tree = tree;
+	}
+
+	@Override
+	public AcceptCriterion getAcceptCriterion() {
+		return AcceptAll.get();
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public void drop(DragAndDropEvent event) {
+		DataBoundTransferable t = (DataBoundTransferable) event
+				.getTransferable();
+
+		// Make sure the drag source is the same tree
+		if (t.getSourceComponent() != tree)
+			return;
+
+		TreeTargetDetails target = (TreeTargetDetails) event.getTargetDetails();
+
+		// Get ids of the dragged item and the target item
+		EObject sourceItemId = (EObject) t.getData("itemId");
+		EObject targetItemId = (EObject) target.getItemIdOver();
+		if (sourceItemId == null || targetItemId == null) {
+			return;
+		}
+
+		// On which side of the target the item was dropped
+		VerticalDropLocation location = target.getDropLocation();
+
+		EStructuralFeature feature = sourceItemId.eContainingFeature();
+		boolean isMany = feature.isMany();
+		EObject targetParent = null;
+		EObject sourceParent = sourceItemId.eContainer();
+
+		int targetIndex = -1;
+		// Drop right on an item -> make it a child
+		if (location == VerticalDropLocation.MIDDLE) {
+			if (targetItemId.eContainer() == sourceItemId.eContainer()) {
+				targetParent = targetItemId.eContainer();
+				if (isMany) {
+					List<EObject> collection = (List<EObject>) targetParent
+							.eGet(feature);
+					targetIndex = collection.indexOf(targetItemId) + 1;
+				}
+			} else {
+				targetParent = targetItemId;
+				targetIndex = -1;
+			}
+		} else if (location == VerticalDropLocation.TOP
+				|| location == VerticalDropLocation.BOTTOM) {
+			if(targetItemId.eClass().getEAllStructuralFeatures().contains(feature)) {
+				// we drop it in the targetItemId
+				targetParent = targetItemId;
+				if (isMany && targetParent.eGet(feature) instanceof List) {
+					if (location == VerticalDropLocation.TOP) {
+//						targetIndex = index > 0 ? index - 1 : -1;
+					} else if (location == VerticalDropLocation.BOTTOM) {
+						targetIndex = -1;
+					}
+				}
+			}else{
+				targetParent = targetItemId.eContainer();
+				
+				if (isMany && targetParent.eGet(feature) instanceof List) {
+					List<EObject> collection = (List<EObject>) targetParent
+							.eGet(feature);
+					int index = collection.indexOf(targetItemId);
+					if (location == VerticalDropLocation.TOP) {
+						targetIndex = index > 0 ? index - 1 : -1;
+					} else if (location == VerticalDropLocation.BOTTOM) {
+						targetIndex = index;
+					}
+				}
+			}
+		}
+
+		if (!targetParent.eClass().getEAllStructuralFeatures()
+				.contains(feature)) {
+			LOGGER.error("Feature " + feature.getName()
+					+ " is not contained in droptarget "
+					+ targetParent.eClass().getName());
+			return;
+		}
+
+		boolean isMove = targetParent == sourceParent;
+		if (isMany) {
+			if (isMove) {
+				// move if same parent
+				Command command = MoveCommand.create(
+						modelingContext.getEditingDomain(), targetParent,
+						feature, sourceItemId, targetIndex);
+				if (command.canExecute()) {
+					modelingContext.getCommandStack().execute(command);
+				}
+			} else {
+				// remove and add if new parent
+				Command remove = RemoveCommand.create(
+						modelingContext.getEditingDomain(),
+						Collections.singletonList(sourceItemId));
+				Command add = AddCommand.create(
+						modelingContext.getEditingDomain(), targetParent,
+						feature, sourceItemId, targetIndex);
+				CompoundCommand command = new CompoundCommand();
+				command.append(remove);
+				command.append(add);
+				if (command.canExecute()) {
+					modelingContext.getCommandStack().execute(command);
+				}
+			}
+		} else {
+			Command command = SetCommand.create(
+					modelingContext.getEditingDomain(), targetParent, feature,
+					sourceItemId);
+			if (command.canExecute()) {
+				modelingContext.getCommandStack().execute(command);
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/commands/ChangeCommand.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/commands/ChangeCommand.java
new file mode 100644
index 0000000..45bac7c
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/commands/ChangeCommand.java
@@ -0,0 +1,118 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.commands;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Uses the {@link ChangeCommand} to record notifications.
+ */
+public abstract class ChangeCommand extends AbstractCommand {
+
+	/** The notifier. */
+	private Notifier notifier;
+	
+	/** The recorder. */
+	private ChangedRecorder recorder;
+
+	/**
+	 * Instantiates a new change command.
+	 *
+	 * @param name
+	 *            the name
+	 * @param resource
+	 *            the resource
+	 */
+	public ChangeCommand(String name, Resource resource) {
+		super(name);
+		this.notifier = resource;
+
+		if (resource == null) {
+			throw new IllegalArgumentException("resource must not be null!");
+		}
+	}
+
+	/**
+	 * Instantiates a new change command.
+	 *
+	 * @param name
+	 *            the name
+	 * @param notifier
+	 *            the notifier
+	 */
+	public ChangeCommand(String name, EObject notifier) {
+		super(name);
+		this.notifier = notifier;
+
+		if (notifier == null) {
+			throw new IllegalArgumentException("notifier must not be null!");
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.common.command.Command#execute()
+	 */
+	@Override
+	public void execute() {
+		recorder.start();
+
+		doExecute();
+
+		recorder.stop();
+	}
+
+	/**
+	 * Execute your operations.
+	 */
+	protected abstract void doExecute();
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.common.command.Command#redo()
+	 */
+	@Override
+	public void redo() {
+		recorder.redo();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.common.command.AbstractCommand#prepare()
+	 */
+	@Override
+	protected boolean prepare() {
+		recorder = new ChangedRecorder(notifier);
+		return true;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.common.command.AbstractCommand#undo()
+	 */
+	@Override
+	public void undo() {
+		recorder.undo();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.common.command.AbstractCommand#canUndo()
+	 */
+	@Override
+	public boolean canUndo() {
+		return super.canUndo();
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/commands/ChangedRecorder.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/commands/ChangedRecorder.java
new file mode 100644
index 0000000..f42b22e
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/commands/ChangedRecorder.java
@@ -0,0 +1,201 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Implementation of {@link EContentAdapter} that records all notifications. And
+ * implements logic to {@link #undo()} and {@link #redo()} the changes.
+ */
+public class ChangedRecorder extends EContentAdapter {
+
+	/** The notifier. */
+	private final Notifier notifier;
+
+	/** The notifications. */
+	private List<Notification> notifications = new ArrayList<Notification>();
+
+	/**
+	 * Instantiates a new changed recorder.
+	 *
+	 * @param notifier
+	 *            the notifier
+	 */
+	public ChangedRecorder(Notifier notifier) {
+		super();
+		this.notifier = notifier;
+	}
+
+	/**
+	 * Starts the recording.
+	 */
+	public void start() {
+		setTarget(notifier);
+	}
+
+	/**
+	 * Stops the recording.
+	 */
+	public void stop() {
+		unsetTarget(notifier);
+	}
+
+	/**
+	 * Returns all notifications recorded.
+	 *
+	 * @return the notifications
+	 */
+	public List<Notification> getNotifications() {
+		return notifications;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		super.notifyChanged(notification);
+
+		if (notification.isTouch()) {
+			return;
+		}
+
+		if (notification.getEventType() == Notification.REMOVING_ADAPTER) {
+			return;
+		}
+
+		if (notification.getEventType() == Notification.RESOLVE) {
+			return;
+		}
+
+		notifications.add(notification);
+	}
+
+	/**
+	 * Undos all notifications.
+	 */
+	public void undo() {
+		for (int i = notifications.size() - 1; i >= 0; i--) {
+			Notification change = notifications.get(i);
+			undo(change);
+		}
+	}
+
+	/**
+	 * Redos all notifications.
+	 */
+	public void redo() {
+		for (int i = 0; i < notifications.size(); i++) {
+			Notification change = notifications.get(i);
+			redo(change);
+		}
+	}
+
+	/**
+	 * Undo.
+	 *
+	 * @param change
+	 *            the change
+	 */
+	@SuppressWarnings("unchecked")
+	protected void undo(Notification change) {
+		EObject notifier = (EObject) change.getNotifier();
+		switch (change.getEventType()) {
+		case Notification.ADD: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			list.remove(change.getNewValue());
+		}
+			break;
+		case Notification.ADD_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.MOVE:
+			throw new IllegalStateException("Implement me");
+		case Notification.REMOVE: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			if (change.getPosition() > 0) {
+				list.add(change.getPosition(), change.getOldValue());
+			} else {
+				list.add(change.getOldValue());
+			}
+		}
+			break;
+		case Notification.REMOVE_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.SET: {
+			Object value = change.getOldValue();
+			notifier.eSet((EStructuralFeature) change.getFeature(), value);
+		}
+			break;
+		case Notification.UNSET: {
+			Object value = change.getOldValue();
+			notifier.eSet((EStructuralFeature) change.getFeature(), value);
+		}
+			break;
+		}
+	}
+
+	/**
+	 * Redo.
+	 *
+	 * @param change
+	 *            the change
+	 */
+	@SuppressWarnings("unchecked")
+	protected void redo(Notification change) {
+		EObject notifier = (EObject) change.getNotifier();
+		switch (change.getEventType()) {
+		case Notification.ADD: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			if (change.getPosition() > 0) {
+				list.add(change.getPosition(), change.getNewValue());
+			} else {
+				list.add(change.getNewValue());
+			}
+		}
+			break;
+		case Notification.ADD_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.MOVE:
+			throw new IllegalStateException("Implement me");
+		case Notification.REMOVE: {
+			List<Object> list = (List<Object>) notifier
+					.eGet((EStructuralFeature) change.getFeature());
+			list.remove(change.getOldValue());
+		}
+			break;
+		case Notification.REMOVE_MANY:
+			throw new IllegalStateException("Implement me");
+		case Notification.SET: {
+			Object value = change.getNewValue();
+			notifier.eSet((EStructuralFeature) change.getFeature(), value);
+		}
+		case Notification.UNSET: {
+			notifier.eUnset((EStructuralFeature) change.getFeature());
+		}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritor.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritor.java
new file mode 100644
index 0000000..faf5958
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritor.java
@@ -0,0 +1,261 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data;
+
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor.PropertyValueWrapper;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A wrapper class that holds the {@link EObject} and its
+ * {@link IItemPropertyDescriptor} in a common context.<br>
+ * And provides delegate methods to the {@link IItemPropertyDescriptor}.
+ */
+public class EmfItemPropertyDescritor {
+	
+	/** The e object. */
+	private final EObject eObject;
+	
+	/** The descriptor. */
+	private final IItemPropertyDescriptor descriptor;
+
+	/**
+	 * Instantiates a new emf item property descritor.
+	 *
+	 * @param eObject
+	 *            the e object
+	 * @param descriptor
+	 *            the descriptor
+	 */
+	public EmfItemPropertyDescritor(EObject eObject,
+			IItemPropertyDescriptor descriptor) {
+		super();
+		this.eObject = eObject;
+		this.descriptor = descriptor;
+	}
+
+	/**
+	 * Gets the e object.
+	 *
+	 * @return the e object
+	 */
+	public EObject getEObject() {
+		return eObject;
+	}
+
+	/**
+	 * Gets the descriptor.
+	 *
+	 * @return the descriptor
+	 */
+	public IItemPropertyDescriptor getDescriptor() {
+		return descriptor;
+	}
+
+	/**
+	 * Returns the String representation.
+	 *
+	 * @return the text
+	 */
+	public String getText() {
+		ItemPropertyDescriptor.PropertyValueWrapper value = (PropertyValueWrapper) descriptor
+				.getPropertyValue(eObject);
+		return value != null ? value.getText(eObject) : "";
+	}
+
+	/**
+	 * Returns the editable value representation.
+	 *
+	 * @return the editable value
+	 */
+	public Object getEditableValue() {
+		ItemPropertyDescriptor.PropertyValueWrapper value = (PropertyValueWrapper) descriptor
+				.getPropertyValue(eObject);
+		return value != null ? value.getEditableValue(eObject) : null;
+	}
+
+	/**
+	 * Gets the property value.
+	 *
+	 * @return the property value
+	 */
+	public Object getPropertyValue() {
+		return descriptor.getPropertyValue(eObject);
+	}
+
+	/**
+	 * Checks if is property set.
+	 *
+	 * @return true, if is property set
+	 */
+	public boolean isPropertySet() {
+		return descriptor.isPropertySet(eObject);
+	}
+
+	/**
+	 * Can set property.
+	 *
+	 * @return true, if successful
+	 */
+	public boolean canSetProperty() {
+		return descriptor.canSetProperty(eObject);
+	}
+
+	/**
+	 * Reset property value.
+	 */
+	public void resetPropertyValue() {
+		descriptor.resetPropertyValue(eObject);
+	}
+
+	/**
+	 * Sets the property value.
+	 *
+	 * @param value
+	 *            the new property value
+	 */
+	public void setPropertyValue(Object value) {
+		descriptor.setPropertyValue(eObject, value);
+	}
+
+	/**
+	 * Gets the category.
+	 *
+	 * @return the category
+	 */
+	public String getCategory() {
+		return descriptor.getCategory(eObject);
+	}
+
+	/**
+	 * Gets the description.
+	 *
+	 * @return the description
+	 */
+	public String getDescription() {
+		return descriptor.getDescription(eObject);
+	}
+
+	/**
+	 * Gets the display name.
+	 *
+	 * @return the display name
+	 */
+	public String getDisplayName() {
+		return descriptor.getDisplayName(eObject);
+	}
+
+	/**
+	 * Gets the filter flags.
+	 *
+	 * @return the filter flags
+	 */
+	public String[] getFilterFlags() {
+		return descriptor.getFilterFlags(eObject);
+	}
+
+	/**
+	 * Gets the help context ids.
+	 *
+	 * @return the help context ids
+	 */
+	public Object getHelpContextIds() {
+		return descriptor.getHelpContextIds(eObject);
+	}
+
+	/**
+	 * Gets the id.
+	 *
+	 * @return the id
+	 */
+	public String getId() {
+		return descriptor.getId(eObject);
+	}
+
+	/**
+	 * Gets the label provider.
+	 *
+	 * @return the label provider
+	 */
+	public IItemLabelProvider getLabelProvider() {
+		return descriptor.getLabelProvider(eObject);
+	}
+
+	/**
+	 * Checks if is compatible with.
+	 *
+	 * @param anotherObject
+	 *            the another object
+	 * @param anotherPropertyDescriptor
+	 *            the another property descriptor
+	 * @return true, if is compatible with
+	 */
+	public boolean isCompatibleWith(Object anotherObject,
+			IItemPropertyDescriptor anotherPropertyDescriptor) {
+		return descriptor.isCompatibleWith(eObject, anotherObject,
+				anotherPropertyDescriptor);
+	}
+
+	/**
+	 * Gets the feature.
+	 *
+	 * @return the feature
+	 */
+	public Object getFeature() {
+		return descriptor.getFeature(eObject);
+	}
+
+	/**
+	 * Checks if is many.
+	 *
+	 * @return true, if is many
+	 */
+	public boolean isMany() {
+		return descriptor.isMany(eObject);
+	}
+
+	/**
+	 * Gets the choice of values.
+	 *
+	 * @return the choice of values
+	 */
+	public Collection<?> getChoiceOfValues() {
+		return descriptor.getChoiceOfValues(eObject);
+	}
+
+	/**
+	 * Checks if is multi line.
+	 *
+	 * @return true, if is multi line
+	 */
+	public boolean isMultiLine() {
+		return descriptor.isMultiLine(eObject);
+	}
+
+	/**
+	 * Checks if is sort choices.
+	 *
+	 * @return true, if is sort choices
+	 */
+	public boolean isSortChoices() {
+		return descriptor.isSortChoices(eObject);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritorLabelConverter.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritorLabelConverter.java
new file mode 100644
index 0000000..0f81d58
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritorLabelConverter.java
@@ -0,0 +1,65 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data;
+
+import java.util.Locale;
+
+import com.vaadin.data.util.converter.Converter;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A converter to convert from EmfItemPropertyDescritor to its String value.
+ */
+@SuppressWarnings("serial")
+public class EmfItemPropertyDescritorLabelConverter implements
+		Converter<String, EmfItemPropertyDescritor> {
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, java.lang.Class, java.util.Locale)
+	 */
+	@Override
+	public EmfItemPropertyDescritor convertToModel(String value,
+			Class<? extends EmfItemPropertyDescritor> targetType, Locale locale)
+			throws com.vaadin.data.util.converter.Converter.ConversionException {
+		throw new UnsupportedOperationException();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang.Object, java.lang.Class, java.util.Locale)
+	 */
+	@Override
+	public String convertToPresentation(EmfItemPropertyDescritor value,
+			Class<? extends String> targetType, Locale locale)
+			throws com.vaadin.data.util.converter.Converter.ConversionException {
+		return value.getDisplayName();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#getModelType()
+	 */
+	@Override
+	public Class<EmfItemPropertyDescritor> getModelType() {
+		return EmfItemPropertyDescritor.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#getPresentationType()
+	 */
+	@Override
+	public Class<String> getPresentationType() {
+		return String.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritorValueConverter.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritorValueConverter.java
new file mode 100644
index 0000000..8b6b834
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfItemPropertyDescritorValueConverter.java
@@ -0,0 +1,65 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data;
+
+import java.util.Locale;
+
+import com.vaadin.data.util.converter.Converter;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A converter to convert from EmfItemPropertyDescritor to its String value.
+ */
+@SuppressWarnings("serial")
+public class EmfItemPropertyDescritorValueConverter implements
+		Converter<String, EmfItemPropertyDescritor> {
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, java.lang.Class, java.util.Locale)
+	 */
+	@Override
+	public EmfItemPropertyDescritor convertToModel(String value,
+			Class<? extends EmfItemPropertyDescritor> targetType, Locale locale)
+			throws com.vaadin.data.util.converter.Converter.ConversionException {
+		throw new UnsupportedOperationException();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#convertToPresentation(java.lang.Object, java.lang.Class, java.util.Locale)
+	 */
+	@Override
+	public String convertToPresentation(EmfItemPropertyDescritor value,
+			Class<? extends String> targetType, Locale locale)
+			throws com.vaadin.data.util.converter.Converter.ConversionException {
+		return value.getText();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#getModelType()
+	 */
+	@Override
+	public Class<EmfItemPropertyDescritor> getModelType() {
+		return EmfItemPropertyDescritor.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.converter.Converter#getPresentationType()
+	 */
+	@Override
+	public Class<String> getPresentationType() {
+		return String.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfModelTreeContainer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfModelTreeContainer.java
new file mode 100644
index 0000000..363d6d5
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfModelTreeContainer.java
@@ -0,0 +1,401 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.views.UiSync;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.HierarchicalContainer;
+import com.vaadin.server.Resource;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The base container to provide eObject hierarchy and their values based on
+ * emf.edit. It registers a change notifier on the model to refresh items on the
+ * fly.
+ * <p>
+ * ATTENTION: This container MUST be disposed!
+ */
+@SuppressWarnings("serial")
+public class EmfModelTreeContainer extends HierarchicalContainer {
+
+	/** The Constant ICON. */
+	private static final String ICON = "icon";
+	
+	/** The Constant LABEL. */
+	private static final String LABEL = "label";
+
+	/** The root element. */
+	private EObject rootElement;
+	
+	/** The editing domain. */
+	private final EditingDomain editingDomain;
+	
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+	
+	/** The ui sync. */
+	private final UiSync uiSync;
+
+	/** The resolved. */
+	private Set<Object> resolved = new HashSet<Object>();
+	
+	/** The resource provider. */
+	private IResourceProvider resourceProvider;
+	
+	/** The change listener. */
+	private INotifyChangedListener changeListener;
+
+	/**
+	 * Instantiates a new emf model tree container.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 * @param uiSync
+	 *            the ui sync
+	 */
+	public EmfModelTreeContainer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider, UiSync uiSync) {
+		this.resourceProvider = resourceProvider;
+		this.editingDomain = modelingContext.getEditingDomain();
+		this.adapterFactory = modelingContext.getAdapterFactory();
+		this.uiSync = uiSync;
+
+		addContainerProperty(LABEL, String.class, "");
+		addContainerProperty(ICON, Resource.class, null);
+
+		IChangeNotifier notifier = (IChangeNotifier) modelingContext
+				.getAdapterFactory();
+		notifier.addListener(getModelChangeListener());
+	}
+
+	/**
+	 * Gets the root element.
+	 *
+	 * @return the root element
+	 */
+	public EObject getRootElement() {
+		return rootElement;
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	public void setRootElement(EObject rootElement) {
+		if (this.rootElement == rootElement) {
+			return;
+		}
+
+		removeAllItems();
+		resolved.clear();
+
+		this.rootElement = rootElement;
+
+		loadRootElements();
+	}
+
+	/**
+	 * Load root elements.
+	 */
+	private void loadRootElements() {
+		if (rootElement != null) {
+			doAddItem(null, rootElement, -1);
+			resolveChildren(rootElement);
+		}
+	}
+
+	/**
+	 * Resolve children.
+	 *
+	 * @param itemId
+	 *            the item id
+	 */
+	public void resolveChildren(Object itemId) {
+		// if children are allowed and they have not been resolved so far
+		if (areChildrenAllowed(itemId)
+				&& (getChildren(itemId) == null || getChildren(itemId)
+						.isEmpty())) {
+			resolved.add(itemId);
+
+			ITreeItemContentProvider parentTreeProvider = (ITreeItemContentProvider) adapterFactory
+					.adapt(itemId, ITreeItemContentProvider.class);
+
+			// resolve children
+			for (Object newChild : parentTreeProvider.getChildren(itemId)) {
+				doAddItem(itemId, (EObject) newChild, -1);
+			}
+		}
+	}
+
+	/**
+	 * Refreshes the given node.
+	 *
+	 * @param itemId
+	 *            the item id
+	 */
+	public void refreshNode(Object itemId) {
+		for (Object child : new ArrayList<>(getChildren(itemId))) {
+			removeItemRecursively(child);
+		}
+		resolved.remove(itemId);
+		resolveChildren(itemId);
+	}
+
+	/**
+	 * Adds a new item.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param newChild
+	 *            the new child
+	 * @param index
+	 *            pass -1 for last index
+	 */
+	@SuppressWarnings("unchecked")
+	private void doAddItem(Object parent, EObject newChild, int index) {
+		if (newChild == null || (parent != null && !containsId(parent))) {
+			return;
+		}
+		Item item;
+		if (index >= 0) {
+			item = addItemAt(index, newChild);
+		} else {
+			item = addItem(newChild);
+		}
+		if(item == null) {
+			// TODO handle same EObject instances
+			return;
+		}
+		IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory
+				.adapt(newChild, IItemLabelProvider.class);
+		item.getItemProperty(LABEL).setValue(labelProvider.getText(newChild));
+
+		// parse the platform uri
+		URL url = ((URL) labelProvider.getImage(newChild));
+		item.getItemProperty(ICON).setValue(
+				resourceProvider.getResource(url.toString()));
+
+		// calculate children allowed
+		// ITreeItemContentProvider treeProvider = (ITreeItemContentProvider)
+		// adapterFactory
+		// .adapt(newChild, ITreeItemContentProvider.class);
+		// setChildrenAllowed(newChild, treeProvider.hasChildren(newChild));
+
+		// if the newChild is not root and the container is available in the
+		// tree
+		if (newChild.eContainer() != null && containsId(newChild.eContainer())) {
+			setParent(newChild, newChild.eContainer());
+			// the new parent may have children again
+			// setChildrenAllowed(newChild.eContainer(), true);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.HierarchicalContainer#hasChildren(java.lang.Object)
+	 */
+	@Override
+	public boolean hasChildren(Object itemId) {
+		boolean result = super.hasChildren(itemId);
+		if (!result) {
+			// calculate children allowed
+			ITreeItemContentProvider treeProvider = (ITreeItemContentProvider) adapterFactory
+					.adapt(itemId, ITreeItemContentProvider.class);
+			result = treeProvider.hasChildren(itemId);
+		}
+		return result;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.HierarchicalContainer#areChildrenAllowed(java.lang.Object)
+	 */
+	@Override
+	public boolean areChildrenAllowed(Object itemId) {
+		// calculate children allowed
+		ITreeItemContentProvider treeProvider = (ITreeItemContentProvider) adapterFactory
+				.adapt(itemId, ITreeItemContentProvider.class);
+		return treeProvider.hasChildren(itemId);
+	}
+
+	/**
+	 * Gets the model change listener.
+	 *
+	 * @return the model change listener
+	 */
+	private INotifyChangedListener getModelChangeListener() {
+		this.changeListener = e -> handleNotification(e);
+		return changeListener;
+	}
+
+	/**
+	 * Refreshes the item with the given eObject.
+	 *
+	 * @param notification
+	 *            the notification
+	 */
+	protected void handleNotification(Notification notification) {
+		if (notification.isTouch()) {
+			return;
+		}
+
+		switch (notification.getEventType()) {
+		case Notification.ADD:
+			uiSync.sync(new Runnable() {
+				@Override
+				public void run() {
+					if (notification.getNewValue() instanceof EObject) {
+						EObject addItem = (EObject) notification.getNewValue();
+						doAddItem(addItem.eContainer(), addItem,
+								notification.getPosition());
+					}
+				}
+			});
+			break;
+		case Notification.REMOVE:
+			uiSync.sync(new Runnable() {
+				@Override
+				public void run() {
+					if (notification.getOldValue() instanceof EObject) {
+						EObject removeItem = (EObject) notification
+								.getOldValue();
+						removeItemRecursively(removeItem);
+					}
+				}
+			});
+			break;
+		case Notification.MOVE:
+			EObject moveItem = (EObject) notification.getNewValue();
+			EStructuralFeature feature = moveItem.eContainingFeature();
+			if (feature.isMany()) {
+				EObject container = moveItem.eContainer();
+				// if the parent is not visible, then leave
+				if (!containsId(container)) {
+					return;
+				}
+				uiSync.sync(new Runnable() {
+					@SuppressWarnings("unchecked")
+					@Override
+					public void run() {
+						List<EObject> eObjects = (List<EObject>) container
+								.eGet(feature);
+						EObject previousSibling = null;
+						if (notification.getPosition() > 0) {
+							previousSibling = eObjects.get(notification
+									.getPosition() - 1);
+							moveAfterSibling(moveItem, previousSibling);
+						}
+					}
+				});
+			}
+			break;
+		case Notification.SET:
+			// update the property with the changed value
+			uiSync.sync(new Runnable() {
+				@Override
+				public void run() {
+					EObject notifier = (EObject) notification.getNotifier();
+					if (notification.getNewValue() instanceof EObject) {
+						EObject itemId = (EObject) notification.getNewValue();
+						// the containment reference was set
+						if (itemId.eContainingFeature() == notification
+								.getFeature()) {
+							removeItem(itemId);
+							doAddItem(itemId.eContainer(), itemId, -1);
+						} else {
+							refreshLabel(notifier);
+						}
+					} else {
+						refreshLabel(notifier);
+					}
+				}
+
+				@SuppressWarnings({ "unchecked" })
+				private void refreshLabel(EObject notifier) {
+					Item item = getItem(notifier);
+					if (item != null) {
+						IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory
+								.adapt(notifier, IItemLabelProvider.class);
+						item.getItemProperty(LABEL).setValue(
+								labelProvider.getText(notifier));
+					}
+				}
+			});
+			break;
+		case Notification.ADD_MANY:
+			uiSync.sync(new Runnable() {
+				@SuppressWarnings("unchecked")
+				@Override
+				public void run() {
+					if (notification.getOldValue() instanceof Collection) {
+						Collection<Object> elements = (Collection<Object>) notification
+								.getNewValue();
+						for (Object element : elements) {
+							EObject addItem = (EObject) element;
+							doAddItem(addItem.eContainer(), addItem,
+									notification.getPosition());
+						}
+					}
+				}
+			});
+			break;
+		case Notification.REMOVE_MANY:
+			uiSync.sync(new Runnable() {
+				@SuppressWarnings("unchecked")
+				@Override
+				public void run() {
+					if (notification.getOldValue() instanceof Collection) {
+						Collection<Object> elements = (Collection<Object>) notification
+								.getOldValue();
+						for (Object element : elements) {
+							EObject removeItem = (EObject) element;
+							removeItemRecursively(removeItem);
+						}
+					}
+				}
+			});
+			break;
+		}
+	}
+
+	/**
+	 * This container MUST be disposed!.
+	 */
+	public void dispose() {
+		IChangeNotifier notifier = (IChangeNotifier) adapterFactory;
+		notifier.removeListener(changeListener);
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfPropertiesContainer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfPropertiesContainer.java
new file mode 100644
index 0000000..e80028a
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/EmfPropertiesContainer.java
@@ -0,0 +1,112 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.IndexedContainer;
+
+// TODO: Auto-generated Javadoc
+/***
+ * The base container to provide property descriptors and their values based on
+ * emf.edit.
+ */
+@SuppressWarnings("serial")
+public class EmfPropertiesContainer extends IndexedContainer {
+
+	/** The Constant ICON. */
+	public static final String ICON = "icon";
+	
+	/** The Constant KEY. */
+	public static final String KEY = "key";
+	
+	/** The Constant VALUE. */
+	public static final String VALUE = "value";
+
+	/** The root element. */
+	private EObject rootElement;
+	
+	/** The editing domain. */
+	@SuppressWarnings("unused")
+	private final EditingDomain editingDomain;
+	
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+
+	/**
+	 * Instantiates a new emf properties container.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 */
+	public EmfPropertiesContainer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider) {
+		this.editingDomain = modelingContext.getEditingDomain();
+		this.adapterFactory = modelingContext.getAdapterFactory();
+
+		addContainerProperty(KEY, String.class, "");
+		addContainerProperty(VALUE, EmfItemPropertyDescritor.class, null);
+	}
+
+	/**
+	 * Gets the root element.
+	 *
+	 * @return the root element
+	 */
+	public EObject getRootElement() {
+		return rootElement;
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	@SuppressWarnings("unchecked")
+	public void setRootElement(EObject rootElement) {
+		if (this.rootElement == rootElement) {
+			return;
+		}
+
+		this.rootElement = rootElement;
+
+		removeAllItems();
+
+		if (rootElement != null) {
+			IItemPropertySource propertiesProvider = (IItemPropertySource) adapterFactory
+					.adapt(rootElement, IItemLabelProvider.class);
+			for (IItemPropertyDescriptor element : propertiesProvider
+					.getPropertyDescriptors(rootElement)) {
+				Item item = addItem(element);
+				item.getItemProperty(KEY).setValue(
+						element.getDisplayName(rootElement));
+
+				item.getItemProperty(VALUE).setValue(
+						new EmfItemPropertyDescritor(rootElement, element));
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmSubTypesContainer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmSubTypesContainer.java
new file mode 100644
index 0000000..37982dd
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmSubTypesContainer.java
@@ -0,0 +1,132 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data;
+
+import java.net.URL;
+import java.util.Set;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.IndexedContainer;
+import com.vaadin.server.Resource;
+
+/**
+ * The base container to provide SubTypes for a given type
+ * <p>
+ * ATTENTION: This container MUST be disposed!
+ */
+@SuppressWarnings("serial")
+public class JvmSubTypesContainer extends IndexedContainer {
+
+	/** The Constant ICON. */
+	public static final String ICON = "icon";
+
+	/** The Constant KEY. */
+	public static final String LABEL = "LABEL";
+
+	/** The root element. */
+	private JvmDeclaredType rootElement;
+
+	/** The editing domain. */
+	@SuppressWarnings("unused")
+	private final EditingDomain editingDomain;
+
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+
+	private final IResourceProvider resourceProvider;
+
+	private final SubTypesCallback callback;
+
+	/**
+	 * Instantiates a new emf properties container.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 */
+	public JvmSubTypesContainer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider, SubTypesCallback callback) {
+		this.editingDomain = modelingContext.getEditingDomain();
+		this.adapterFactory = modelingContext.getAdapterFactory();
+		this.resourceProvider = resourceProvider;
+		this.callback = callback;
+
+		addContainerProperty(LABEL, String.class, "");
+		addContainerProperty(ICON, Resource.class, null);
+	}
+
+	/**
+	 * Gets the root element.
+	 *
+	 * @return the root element
+	 */
+	public EObject getRootElement() {
+		return rootElement;
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	@SuppressWarnings("unchecked")
+	public void setRootElement(JvmDeclaredType rootElement) {
+		if (this.rootElement == rootElement) {
+			return;
+		}
+
+		this.rootElement = rootElement;
+
+		removeAllItems();
+
+		if (rootElement != null) {
+			for (JvmDeclaredType subType : callback.getSubTypes(rootElement)) {
+				IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory
+						.adapt(subType, IItemLabelProvider.class);
+				Item item = addItem(subType);
+				item.getItemProperty(LABEL).setValue(
+						labelProvider.getText(subType));
+				URL url = ((URL) labelProvider.getImage(subType));
+				item.getItemProperty(ICON).setValue(
+						resourceProvider.getResource(url.toString()));
+			}
+		}
+	}
+
+	/**
+	 * Returns a set with sub types for the given root type.
+	 */
+	public interface SubTypesCallback {
+
+		/**
+		 * Returns a set with sub types for the given root type.
+		 * 
+		 * @param type
+		 * @return
+		 */
+		Set<JvmDeclaredType> getSubTypes(JvmDeclaredType type);
+
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmTypeProperties.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmTypeProperties.java
new file mode 100644
index 0000000..a3d250b
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmTypeProperties.java
@@ -0,0 +1,703 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+
+package org.eclipse.osbp.vaadin.emf.data;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.xtext.common.types.JvmAnnotationReference;
+import org.eclipse.xtext.common.types.JvmAnnotationType;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmFeature;
+import org.eclipse.xtext.common.types.JvmField;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmPrimitiveType;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.common.types.util.RawSuperTypes;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Helper class to collect all properties for a given JvmType.
+ */
+@SuppressWarnings("restriction")
+public class JvmTypeProperties {
+
+	/**
+	 * Normalizes the method name.
+	 *
+	 * @param simpleName
+	 *            the simple name
+	 * @return the string
+	 */
+	public static String toPropertyName(String simpleName) {
+		if (simpleName == null) {
+			return null;
+		}
+		String tempName = null;
+		if (isSetter(simpleName)) {
+			tempName = StringExtensions.toFirstLower(simpleName.replaceFirst(
+					"set", ""));
+		} else if (isGetter(simpleName)) {
+			if (simpleName.startsWith("get")) {
+				tempName = StringExtensions.toFirstLower(simpleName
+						.replaceFirst("get", ""));
+			} else {
+				tempName = StringExtensions.toFirstLower(simpleName
+						.replaceFirst("is", ""));
+			}
+		}
+		return tempName;
+	}
+
+	/**
+	 * Checks if is getter.
+	 *
+	 * @param simpleName
+	 *            the simple name
+	 * @return true, if is getter
+	 */
+	public static boolean isGetter(String simpleName) {
+		if (simpleName == null) {
+			return false;
+		}
+		return simpleName.startsWith("get") || simpleName.startsWith("is");
+	}
+
+	/**
+	 * Checks if is setter.
+	 *
+	 * @param simpleName
+	 *            the simple name
+	 * @return true, if is setter
+	 */
+	public static boolean isSetter(String simpleName) {
+		return simpleName != null && simpleName.startsWith("set");
+	}
+
+	/**
+	 * Calculates the operation infos for the given type.
+	 *
+	 * @param type
+	 *            the type
+	 * @return the operation infos
+	 */
+	public static Map<String, Info> getOperationInfos(JvmDeclaredType type) {
+		return getOperationInfos(type, null);
+	}
+
+	/**
+	 * Calculates the operation infos for the given info.
+	 *
+	 * @param root
+	 *            the root
+	 * @return the operation infos
+	 */
+	public static Map<String, Info> getOperationInfos(Info root) {
+
+		JvmType type = null;
+		if (root.isMany()) {
+			type = root.getParameterizedType();
+		} else {
+			type = root.getType();
+		}
+
+		Map<String, Info> result = null;
+		if (type instanceof JvmDeclaredType) {
+			result = getOperationInfos((JvmDeclaredType) type);
+		} else {
+			result = new HashMap<String, JvmTypeProperties.Info>();
+		}
+		// apply the info as a parent
+		for (Info temp : result.values()) {
+			temp.setParent(root);
+		}
+
+		return result;
+	}
+
+	/**
+	 * Calculates the operation infos for the given type.
+	 *
+	 * @param type
+	 *            the type
+	 * @param filterName
+	 *            - is used to filter only methods property names matching the
+	 *            filter name.
+	 * @return the operation infos
+	 */
+	public static Map<String, Info> getOperationInfos(JvmDeclaredType type,
+			String filterName) {
+		Map<String, Info> infos = new HashMap<String, Info>();
+		for (JvmFeature feature : type.getAllFeatures()) {
+			if (!(feature instanceof JvmOperation)) {
+				continue;
+			}
+
+			JvmOperation operation = (JvmOperation) feature;
+			if (operation.getVisibility() != JvmVisibility.PUBLIC) {
+				continue;
+			}
+
+			if (!isSetter(operation.getSimpleName())
+					&& operation.getParameters().size() > 1) {
+				continue;
+			}
+
+			String propertyName = toPropertyName(operation.getSimpleName());
+			if (propertyName == null) {
+				continue;
+			}
+
+			if (filterName != null && !filterName.equals(propertyName)) {
+				continue;
+			}
+
+			if (operation.getSimpleName().equals("getClass")) {
+				continue;
+			}
+
+			if (!isGetter(operation.getSimpleName())
+					&& !isSetter(operation.getSimpleName())) {
+				continue;
+			}
+
+			String id = calcId(operation.getDeclaringType(),
+					operation.getSimpleName());
+			if (!infos.containsKey(id)) {
+				Info info = new Info();
+				info.id = id;
+				info.name = propertyName;
+				infos.put(id, info);
+			}
+
+			Info info = infos.get(id);
+			if (isGetter(operation.getSimpleName())) {
+				info.getter = operation;
+			} else {
+				if (!propertyName.equals("dirty")) {
+					info.setter = operation;
+				}
+			}
+		}
+
+		// apply readonly and create descriptions
+		for (Info info : infos.values()) {
+			if (info.getter == null) {
+				continue;
+			}
+			if (info.setter == null) {
+				info.readonly = true;
+			}
+
+			// TODO Pirchner - remove this workaround
+			if (info.name.equals("id") || info.name.equals("uuid")) {
+				info.idProperty = true;
+			}
+		}
+
+		for (JvmFeature member : type.getAllFeatures()) {
+			if (member instanceof JvmField) {
+				JvmField field = (JvmField) member;
+				String id = calcFieldId(field.getDeclaringType(),
+						field.getSimpleName());
+				if (infos.containsKey(id)) {
+					Info info = infos.get(id);
+					info.setField(field);
+					info.type = field.getType().getType();
+					info.primitive = info.type instanceof JvmPrimitiveType
+							|| info.type.getQualifiedName().equals(
+									String.class.getName());
+
+					// collect all super types and check if collection is part
+					// of them
+					Set<String> superTypes = new RawSuperTypes()
+							.collectNames(info.type);
+					for (String typeName : superTypes) {
+						if (typeName.equals(Collection.class.getName())) {
+							info.many = true;
+							break;
+						}
+					}
+
+					if (info.many) {
+						JvmParameterizedTypeReference typeRef = (JvmParameterizedTypeReference) field
+								.getType();
+						if (!typeRef.getArguments().isEmpty()) {
+							info.parameterizedType = typeRef.getArguments()
+									.get(0).getType();
+						}
+					}
+				}
+			}
+		}
+		return infos;
+	}
+
+	/**
+	 * Normalizes the name.
+	 *
+	 * @param declaringType
+	 *            the declaring type
+	 * @param simpleName
+	 *            the simple name
+	 * @return the string
+	 */
+	public static String calcId(JvmDeclaredType declaringType, String simpleName) {
+		String tempName = toPropertyName(simpleName);
+		if (tempName == null) {
+			return null;
+		}
+
+		return declaringType.getQualifiedName() + ":" + tempName;
+	}
+
+	/**
+	 * Normalizes the name.
+	 *
+	 * @param declaringType
+	 *            the declaring type
+	 * @param simpleName
+	 *            the simple name
+	 * @return the string
+	 */
+	public static String calcFieldId(JvmDeclaredType declaringType,
+			String simpleName) {
+		return declaringType.getQualifiedName() + ":" + simpleName;
+	}
+
+	/**
+	 * The Class Info.
+	 */
+	public static class Info implements Comparable<Info> {
+
+		/**
+		 * Can by any object that requested the info. For instance a YBeanSlot,
+		 * an Entity, a JvmField,... The root should only be set for the top
+		 * most parent.
+		 */
+		private Object root;
+		/**
+		 * The parent which requested this instance of info.
+		 */
+		private Info parent;
+
+		/** The id. */
+		private String id;
+
+		/** The name. */
+		private String name;
+
+		/** The readonly. */
+		private boolean readonly;
+
+		/** The primitive. */
+		private boolean primitive;
+
+		/** The getter. */
+		private JvmOperation getter;
+
+		/** The setter. */
+		private JvmOperation setter;
+
+		/** The field. */
+		private JvmField field;
+
+		/** The type. */
+		private JvmType type;
+
+		/** The parameterized type. */
+		private JvmType parameterizedType;
+
+		/** The many. */
+		private boolean many;
+
+		/** The id property. */
+		private boolean idProperty;
+
+		/** The children. */
+		private List<Info> children = new ArrayList<>();
+
+		/**
+		 * Gets the parent which requested this instance of info.
+		 *
+		 * @return the parent which requested this instance of info
+		 */
+		public Info getParent() {
+			return parent;
+		}
+
+		/**
+		 * Gets the children.
+		 *
+		 * @return the children
+		 */
+		public List<Info> getChildren() {
+			return children;
+		}
+
+		/**
+		 * Adds the child info.
+		 *
+		 * @param temp
+		 *            the temp
+		 */
+		public void addChildInfo(Info temp) {
+			children.add(temp);
+		}
+
+		/**
+		 * Sets the parent which requested this instance of info.
+		 *
+		 * @param parent
+		 *            the new parent which requested this instance of info
+		 */
+		public void setParent(Info parent) {
+			this.parent = parent;
+			parent.addChildInfo(this);
+		}
+
+		/**
+		 * Gets the top parent.
+		 *
+		 * @return the top parent
+		 */
+		public Info getTopParent() {
+			if (getParent() != null) {
+				return getParent().getTopParent();
+			}
+			return this;
+		}
+
+		/**
+		 * Gets the can by any object that requested the info.
+		 *
+		 * @return the can by any object that requested the info
+		 */
+		public Object getRoot() {
+			if (this.root == null && getParent() != null) {
+				return getParent().getRoot();
+			}
+			return root;
+		}
+
+		/**
+		 * Sets the can by any object that requested the info.
+		 *
+		 * @param root
+		 *            the new can by any object that requested the info
+		 */
+		public void setRoot(Object root) {
+			this.root = root;
+		}
+
+		/**
+		 * Gets the id.
+		 *
+		 * @return the id
+		 */
+		public String getId() {
+			return id;
+		}
+
+		/**
+		 * Sets the id.
+		 *
+		 * @param id
+		 *            the new id
+		 */
+		public void setId(String id) {
+			this.id = id;
+		}
+
+		/**
+		 * Gets the name.
+		 *
+		 * @return the name
+		 */
+		public String getName() {
+			return name;
+		}
+
+		/**
+		 * Sets the name.
+		 *
+		 * @param name
+		 *            the new name
+		 */
+		public void setName(String name) {
+			this.name = name;
+		}
+
+		/**
+		 * Checks if is readonly.
+		 *
+		 * @return true, if is readonly
+		 */
+		public boolean isReadonly() {
+			return readonly;
+		}
+
+		/**
+		 * Sets the readonly.
+		 *
+		 * @param readonly
+		 *            the new readonly
+		 */
+		public void setReadonly(boolean readonly) {
+			this.readonly = readonly;
+		}
+
+		/**
+		 * Gets the getter.
+		 *
+		 * @return the getter
+		 */
+		public JvmOperation getGetter() {
+			return getter;
+		}
+
+		/**
+		 * Sets the getter.
+		 *
+		 * @param getter
+		 *            the new getter
+		 */
+		public void setGetter(JvmOperation getter) {
+			this.getter = getter;
+		}
+
+		/**
+		 * Gets the setter.
+		 *
+		 * @return the setter
+		 */
+		public JvmOperation getSetter() {
+			return setter;
+		}
+
+		/**
+		 * Sets the setter.
+		 *
+		 * @param setter
+		 *            the new setter
+		 */
+		public void setSetter(JvmOperation setter) {
+			this.setter = setter;
+		}
+
+		/**
+		 * Gets the field.
+		 *
+		 * @return the field
+		 */
+		public JvmField getField() {
+			return field;
+		}
+
+		/**
+		 * The jvm type containing the field.
+		 *
+		 * @return the declaring type
+		 */
+		public JvmDeclaredType getDeclaringType() {
+			return field.getDeclaringType();
+		}
+
+		/**
+		 * Sets the field.
+		 *
+		 * @param field
+		 *            the new field
+		 */
+		public void setField(JvmField field) {
+			this.field = field;
+		}
+
+		/**
+		 * Checks if is primitive.
+		 *
+		 * @return true, if is primitive
+		 */
+		public boolean isPrimitive() {
+			return primitive;
+		}
+
+		/**
+		 * Sets the primitive.
+		 *
+		 * @param primitive
+		 *            the new primitive
+		 */
+		public void setPrimitive(boolean primitive) {
+			this.primitive = primitive;
+		}
+
+		/**
+		 * Gets the type.
+		 *
+		 * @return the type
+		 */
+		public JvmType getType() {
+			return type;
+		}
+
+		/**
+		 * Sets the type.
+		 *
+		 * @param type
+		 *            the new type
+		 */
+		public void setType(JvmType type) {
+			this.type = type;
+		}
+
+		/**
+		 * Checks if is many.
+		 *
+		 * @return true, if is many
+		 */
+		public boolean isMany() {
+			return many;
+		}
+
+		/**
+		 * Checks if is id property.
+		 *
+		 * @return true, if is id property
+		 */
+		public boolean isIdProperty() {
+			return idProperty;
+		}
+
+		/**
+		 * Sets the many.
+		 *
+		 * @param many
+		 *            the new many
+		 */
+		public void setMany(boolean many) {
+			this.many = many;
+		}
+
+		/**
+		 * Gets the parameterized type.
+		 *
+		 * @return the parameterized type
+		 */
+		public JvmType getParameterizedType() {
+			return parameterizedType;
+		}
+
+		/**
+		 * Sets the parameterized type.
+		 *
+		 * @param parameterizedType
+		 *            the new parameterized type
+		 */
+		public void setParameterizedType(JvmType parameterizedType) {
+			this.parameterizedType = parameterizedType;
+		}
+
+		/**
+		 * Returns true, if the info has an annotation matching the given
+		 * annotationType.
+		 *
+		 * @param annotationType
+		 *            the annotation type
+		 * @return true, if successful
+		 */
+		public boolean hasAnnotation(Class<?> annotationType) {
+			if (field == null) {
+				return false;
+			}
+			for (JvmAnnotationReference annotation : field.getAnnotations()) {
+				if (annotation.getAnnotation().getQualifiedName()
+						.equals(annotationType.getName())) {
+					return true;
+				}
+			}
+			return false;
+		}
+
+		/**
+		 * Returns the JvmAnnotationType instance or null.
+		 *
+		 * @param annotationType
+		 *            the annotation type
+		 * @return true, if successful
+		 */
+		public JvmAnnotationType getAnnotation(Class<?> annotationType) {
+			if (!hasAnnotation(annotationType)) {
+				return null;
+			}
+			for (JvmAnnotationReference annotation : field.getAnnotations()) {
+				if (annotation.getAnnotation().getQualifiedName()
+						.equals(annotationType.getName())) {
+					return annotation.getAnnotation();
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * Returns the dot'ed attribute path for this info and its parents. For
+		 * instance <code>person.address.name</code>.
+		 *
+		 * @return the attribute path
+		 */
+		public String getAttributePath() {
+			return getAttributePath(parent, name);
+		}
+
+		/**
+		 * Gets the attribute path.
+		 *
+		 * @param parent
+		 *            the parent
+		 * @param postFix
+		 *            the post fix
+		 * @return the attribute path
+		 */
+		protected String getAttributePath(Info parent, String postFix) {
+			if (parent != null) {
+				String temp = parent.getAttributePath();
+				return temp + "." + postFix;
+			} else {
+				return postFix;
+			}
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see java.lang.Comparable#compareTo(java.lang.Object)
+		 */
+		@Override
+		public int compareTo(Info other) {
+			if (name == null || other == null) {
+				return -1;
+			}
+			return name.compareTo(other.getName());
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmTypePropertiesTreeContainer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmTypePropertiesTreeContainer.java
new file mode 100644
index 0000000..8642eca
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/JvmTypePropertiesTreeContainer.java
@@ -0,0 +1,499 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.JvmTypeProperties.Info;
+import org.eclipse.osbp.vaadin.emf.views.UiSync;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.HierarchicalContainer;
+import com.vaadin.server.Resource;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The base container to provide all properties for a given JvmType.
+ * <p>
+ * ATTENTION: This container MUST be disposed!
+ */
+@SuppressWarnings("serial")
+public class JvmTypePropertiesTreeContainer extends HierarchicalContainer {
+
+	/** The Constant ICON. */
+	private static final String ICON = "icon";
+	
+	/** The Constant LABEL. */
+	private static final String LABEL = "label";
+
+	/** The root element. */
+	private EObject rootElement;
+	
+	/** The editing domain. */
+	@SuppressWarnings("unused")
+	private final EditingDomain editingDomain;
+	
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+	
+	/** The ui sync. */
+	private final UiSync uiSync;
+
+	/** The resolved. */
+	private Set<Object> resolved = new HashSet<Object>();
+	
+	/** The resource provider. */
+	private IResourceProvider resourceProvider;
+	
+	/** The change listener. */
+	private INotifyChangedListener changeListener;
+
+	/**
+	 * Instantiates a new jvm type properties tree container.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 * @param uiSync
+	 *            the ui sync
+	 */
+	public JvmTypePropertiesTreeContainer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider, UiSync uiSync) {
+		this.resourceProvider = resourceProvider;
+		this.editingDomain = modelingContext.getEditingDomain();
+		this.adapterFactory = modelingContext.getAdapterFactory();
+		this.uiSync = uiSync;
+
+		addContainerProperty(LABEL, String.class, "");
+		addContainerProperty(ICON, Resource.class, null);
+
+		// IChangeNotifier notifier = (IChangeNotifier) modelingContext
+		// .getAdapterFactory();
+		// notifier.addListener(getModelChangeListener());
+	}
+
+	/**
+	 * Gets the root element.
+	 *
+	 * @return the root element
+	 */
+	public EObject getRootElement() {
+		return rootElement;
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	public void setRootElement(JvmGenericType rootElement) {
+		if (this.rootElement == rootElement) {
+			return;
+		}
+
+		removeAllItems();
+		resolved.clear();
+
+		this.rootElement = rootElement;
+
+		loadRootElements();
+	}
+
+	/**
+	 * Load root elements.
+	 */
+	private void loadRootElements() {
+		if (rootElement != null) {
+			doAddItem(null, rootElement, -1);
+			resolveChildren(rootElement);
+		}
+	}
+
+	/**
+	 * Resolve children.
+	 *
+	 * @param itemId
+	 *            the item id
+	 */
+	public void resolveChildren(Object itemId) {
+		// if children are allowed and they have not been resolved so far
+		if (areChildrenAllowed(itemId)
+				&& (getChildren(itemId) == null || getChildren(itemId)
+						.isEmpty())) {
+			resolved.add(itemId);
+
+			// resolve children
+			if (itemId instanceof JvmDeclaredType) {
+				List<Info> children = createPropertyInfos((JvmDeclaredType) itemId);
+				for (Info newChild : children) {
+					doAddItem(itemId, newChild, -1);
+				}
+			} else {
+				JvmTypeProperties.Info info = (Info) itemId;
+				List<Info> children = createPropertyInfos(info);
+				for (Info newChild : children) {
+					doAddItem(info, newChild, -1);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Creates the property infos.
+	 *
+	 * @param type
+	 *            the type
+	 * @return the list
+	 */
+	private List<JvmTypeProperties.Info> createPropertyInfos(
+			JvmDeclaredType type) {
+		List<JvmTypeProperties.Info> result = new ArrayList<JvmTypeProperties.Info>(
+				JvmTypeProperties.getOperationInfos(type).values());
+		Collections.sort(result);
+		return result;
+	}
+
+	/**
+	 * Creates the property infos.
+	 *
+	 * @param info
+	 *            the info
+	 * @return the list
+	 */
+	private List<JvmTypeProperties.Info> createPropertyInfos(
+			JvmTypeProperties.Info info) {
+		List<JvmTypeProperties.Info> result = new ArrayList<JvmTypeProperties.Info>(
+				JvmTypeProperties.getOperationInfos(info).values());
+		Collections.sort(result);
+		return result;
+	}
+
+	/**
+	 * Refreshes the given node.
+	 *
+	 * @param itemId
+	 *            the item id
+	 */
+	public void refreshNode(Object itemId) {
+		for (Object child : new ArrayList<>(getChildren(itemId))) {
+			removeItemRecursively(child);
+		}
+		resolved.remove(itemId);
+		resolveChildren(itemId);
+	}
+
+	/**
+	 * Adds a new item.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param newChild
+	 *            the new child
+	 * @param index
+	 *            pass -1 for last index
+	 */
+	@SuppressWarnings("unchecked")
+	private void doAddItem(Object parent, EObject newChild, int index) {
+		if (newChild == null) {
+			return;
+		}
+		Item item;
+		if (index >= 0) {
+			item = addItemAt(index, newChild);
+		} else {
+			item = addItem(newChild);
+		}
+		IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory
+				.adapt(newChild, IItemLabelProvider.class);
+		item.getItemProperty(LABEL).setValue(labelProvider.getText(newChild));
+
+		// parse the platform uri
+		item.getItemProperty(ICON)
+				.setValue(
+						resourceProvider
+								.getResource("platform:/plugin/org.eclipse.osbp.vaadin.emf/images/class_obj.gif"));
+
+		// if the newChild is not root and the container is available in the
+		// tree
+		if (parent != null && containsId(parent)) {
+			setParent(newChild, parent);
+			// the new parent may have children again
+			// setChildrenAllowed(newChild.eContainer(), true);
+		}
+	}
+
+	/**
+	 * Adds a new item.
+	 *
+	 * @param parent
+	 *            the parent
+	 * @param newChild
+	 *            the new child
+	 * @param index
+	 *            pass -1 for last index
+	 */
+	@SuppressWarnings("unchecked")
+	private void doAddItem(Object parent, JvmTypeProperties.Info newChild,
+			int index) {
+		if (newChild == null) {
+			return;
+		}
+		Item item;
+		if (index >= 0) {
+			item = addItemAt(index, newChild);
+		} else {
+			item = addItem(newChild);
+		}
+
+		item.getItemProperty(LABEL).setValue(getText(newChild));
+		item.getItemProperty(ICON)
+				.setValue(
+						resourceProvider
+								.getResource("platform:/plugin/org.eclipse.osbp.vaadin.emf/images/field_public_obj.gif"));
+
+		// if the newChild is not root and the container is available in the
+		// tree
+		if (parent != null && containsId(parent)) {
+			setParent(newChild, parent);
+		}
+	}
+
+	/**
+	 * Gets the text.
+	 *
+	 * @param newChild
+	 *            the new child
+	 * @return the text
+	 */
+	private String getText(Info newChild) {
+		String result = newChild.getName();
+
+		if (newChild.getType() != null) {
+			if (newChild.isMany()) {
+				result += "[*]";
+				result += " : ";
+				if (newChild.getParameterizedType() != null) {
+					result += newChild.getParameterizedType()
+							.getQualifiedName();
+				}
+			} else {
+				result += " : ";
+				result += newChild.getType().getQualifiedName();
+			}
+		}
+
+		return result;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.HierarchicalContainer#hasChildren(java.lang.Object)
+	 */
+	@Override
+	public boolean hasChildren(Object itemId) {
+		boolean result = super.hasChildren(itemId);
+		if (!result) {
+			if (itemId instanceof EObject) {
+				// calculate children allowed
+				ITreeItemContentProvider treeProvider = (ITreeItemContentProvider) adapterFactory
+						.adapt(itemId, ITreeItemContentProvider.class);
+				result = treeProvider.hasChildren(itemId);
+			} else {
+				JvmTypeProperties.Info info = (Info) itemId;
+				return !info.isMany() && !info.isPrimitive();
+			}
+		}
+		return result;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.data.util.HierarchicalContainer#areChildrenAllowed(java.lang.Object)
+	 */
+	@Override
+	public boolean areChildrenAllowed(Object itemId) {
+		// calculate children allowed
+
+		if (itemId instanceof EObject) {
+			ITreeItemContentProvider treeProvider = (ITreeItemContentProvider) adapterFactory
+					.adapt(itemId, ITreeItemContentProvider.class);
+			return treeProvider.hasChildren(itemId);
+		} else {
+			JvmTypeProperties.Info info = (Info) itemId;
+			try {
+				return !info.isMany() && !info.isPrimitive();
+			} catch (Exception e) {
+				System.out.println("");
+			}
+			return false;
+		}
+	}
+
+	// private INotifyChangedListener getModelChangeListener() {
+	// this.changeListener = e -> handleNotification(e);
+	// return changeListener;
+	// }
+
+	// /**
+	// * Refreshes the item with the given eObject.
+	// *
+	// * @param eObject
+	// */
+	// protected void handleNotification(Notification notification) {
+	// if (notification.isTouch()) {
+	// return;
+	// }
+	//
+	// switch (notification.getEventType()) {
+	// case Notification.ADD:
+	// uiSync.sync(new Runnable() {
+	// @Override
+	// public void run() {
+	// if (notification.getNewValue() instanceof EObject) {
+	// EObject addItem = (EObject) notification.getNewValue();
+	// doAddItem(addItem, notification.getPosition());
+	// }
+	// }
+	// });
+	// break;
+	// case Notification.REMOVE:
+	// uiSync.sync(new Runnable() {
+	// @Override
+	// public void run() {
+	// if (notification.getOldValue() instanceof EObject) {
+	// EObject removeItem = (EObject) notification
+	// .getOldValue();
+	// removeItemRecursively(removeItem);
+	// }
+	// }
+	// });
+	// break;
+	// case Notification.MOVE:
+	// EObject moveItem = (EObject) notification.getNewValue();
+	// EStructuralFeature feature = moveItem.eContainingFeature();
+	// if (feature.isMany()) {
+	// EObject container = moveItem.eContainer();
+	// // if the parent is not visible, then leave
+	// if (!containsId(container)) {
+	// return;
+	// }
+	// uiSync.sync(new Runnable() {
+	// @SuppressWarnings("unchecked")
+	// @Override
+	// public void run() {
+	// List<EObject> eObjects = (List<EObject>) container
+	// .eGet(feature);
+	// EObject previousSibling = null;
+	// if (notification.getPosition() > 0) {
+	// previousSibling = eObjects.get(notification
+	// .getPosition() - 1);
+	// moveAfterSibling(moveItem, previousSibling);
+	// }
+	// }
+	// });
+	// }
+	// break;
+	// case Notification.SET:
+	// // update the property with the changed value
+	// uiSync.sync(new Runnable() {
+	// @Override
+	// public void run() {
+	// EObject notifier = (EObject) notification.getNotifier();
+	// if (notification.getNewValue() instanceof EObject) {
+	// EObject itemId = (EObject) notification.getNewValue();
+	// // the containment reference was set
+	// if (itemId.eContainingFeature() == notification
+	// .getFeature()) {
+	// removeItem(itemId);
+	// doAddItem(itemId, -1);
+	// } else {
+	// refreshLabel(notifier);
+	// }
+	// } else {
+	// refreshLabel(notifier);
+	// }
+	// }
+	//
+	// @SuppressWarnings({ "unchecked" })
+	// private void refreshLabel(EObject notifier) {
+	// Item item = getItem(notifier);
+	// if (item != null) {
+	// IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory
+	// .adapt(notifier, IItemLabelProvider.class);
+	// item.getItemProperty(LABEL).setValue(
+	// labelProvider.getText(notifier));
+	// }
+	// }
+	// });
+	// break;
+	// case Notification.ADD_MANY:
+	// uiSync.sync(new Runnable() {
+	// @SuppressWarnings("unchecked")
+	// @Override
+	// public void run() {
+	// if (notification.getOldValue() instanceof Collection) {
+	// Collection<Object> elements = (Collection<Object>) notification
+	// .getNewValue();
+	// for (Object element : elements) {
+	// EObject addItem = (EObject) element;
+	// doAddItem(addItem, notification.getPosition());
+	// }
+	// }
+	// }
+	// });
+	// break;
+	// case Notification.REMOVE_MANY:
+	// uiSync.sync(new Runnable() {
+	// @SuppressWarnings("unchecked")
+	// @Override
+	// public void run() {
+	// if (notification.getOldValue() instanceof Collection) {
+	// Collection<Object> elements = (Collection<Object>) notification
+	// .getOldValue();
+	// for (Object element : elements) {
+	// EObject removeItem = (EObject) element;
+	// removeItemRecursively(removeItem);
+	// }
+	// }
+	// }
+	// });
+	// break;
+	// }
+	// }
+
+	/**
+	 * This container MUST be disposed!.
+	 */
+	public void dispose() {
+		IChangeNotifier notifier = (IChangeNotifier) adapterFactory;
+		notifier.removeListener(changeListener);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EEnumComboBox.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EEnumComboBox.java
new file mode 100644
index 0000000..1fe17a9
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EEnumComboBox.java
@@ -0,0 +1,145 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data.fields;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CustomField;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A combobox to select {@link EEnumLiteral}.
+ */
+@SuppressWarnings("serial")
+public class EEnumComboBox extends CustomField<EEnumLiteral> {
+
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+
+	/** The combobox. */
+	private ComboBox combobox;
+	
+	/** The property. */
+	private ObjectProperty<EEnumLiteral> property;
+
+	/**
+	 * Instantiates a new e enum combo box.
+	 *
+	 * @param caption
+	 *            the caption
+	 * @param adapterFactory
+	 *            the adapter factory
+	 */
+	public EEnumComboBox(String caption, AdapterFactory adapterFactory) {
+		setCaption(caption);
+		this.adapterFactory = adapterFactory;
+
+		// eager init
+		initContent();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.CustomField#initContent()
+	 */
+	@Override
+	protected Component initContent() {
+		if (combobox != null) {
+			return combobox;
+		}
+
+		combobox = new ComboBox();
+		combobox.setWidth("100%");
+		combobox.setItemCaptionPropertyId("name");
+
+		combobox.addContainerProperty("name", String.class, "");
+
+		property = new ObjectProperty<EEnumLiteral>(null, EEnumLiteral.class);
+		combobox.setPropertyDataSource(property);
+
+		property.addValueChangeListener(e -> {
+			super.setValue((EEnumLiteral) e.getProperty().getValue());
+		});
+
+		return combobox;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#getType()
+	 */
+	@Override
+	public Class<EEnumLiteral> getType() {
+		return EEnumLiteral.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#setInternalValue(java.lang.Object)
+	 */
+	@Override
+	protected void setInternalValue(EEnumLiteral newValue) {
+		super.setInternalValue(newValue);
+
+		if (property != null) {
+			property.setValue(newValue);
+		}
+	}
+
+	/**
+	 * Sets the type which should be used to find all literals.
+	 *
+	 * @param eenum
+	 *            the new type
+	 */
+	@SuppressWarnings("unchecked")
+	public void setType(EEnum eenum) {
+		initContent();
+
+		combobox.removeAllItems();
+
+		for (EEnumLiteral lit : eenum.getELiterals()) {
+			if (lit == null) {
+				continue;
+			}
+
+			IItemLabelProvider provider = (IItemLabelProvider) adapterFactory
+					.adapt(lit, IItemLabelProvider.class);
+			Item item = combobox.addItem(lit);
+			String name = provider.getText(lit);
+			item.getItemProperty("name").setValue(name);
+		}
+	}
+
+	/**
+	 * Is used to filter all available literals.
+	 */
+	public static interface Filter {
+		
+		/**
+		 * Returns true, if feature should be available.
+		 *
+		 * @param feature
+		 *            the feature
+		 * @return true, if successful
+		 */
+		boolean matches(EStructuralFeature feature);
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EObjectComboBox.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EObjectComboBox.java
new file mode 100644
index 0000000..37db0af
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EObjectComboBox.java
@@ -0,0 +1,150 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data.fields;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CustomField;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A combobox to select referenced EObjects.
+ */
+@SuppressWarnings("serial")
+public class EObjectComboBox extends CustomField<EObject> {
+
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+
+	/** The combobox. */
+	private ComboBox combobox;
+
+	/** The property. */
+	private ObjectProperty<EObject> property;
+
+	/**
+	 * Instantiates a new e object combo box.
+	 *
+	 * @param adapterFactory
+	 *            the adapter factory
+	 */
+	public EObjectComboBox(AdapterFactory adapterFactory) {
+		this.adapterFactory = adapterFactory;
+
+		// eager init
+		initContent();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.vaadin.ui.CustomField#initContent()
+	 */
+	@Override
+	protected Component initContent() {
+		if (combobox != null) {
+			return combobox;
+		}
+
+		combobox = new ComboBox();
+		combobox.setWidth("100%");
+		combobox.setItemCaptionPropertyId("name");
+
+		combobox.addContainerProperty("name", String.class, "");
+
+		property = new ObjectProperty<EObject>(null, EObject.class);
+		combobox.setPropertyDataSource(property);
+
+		property.addValueChangeListener(e -> {
+			super.setValue((EObject) e.getProperty().getValue());
+		});
+
+		return combobox;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.vaadin.ui.AbstractField#getType()
+	 */
+	@Override
+	public Class<EObject> getType() {
+		return EObject.class;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.vaadin.ui.AbstractField#setInternalValue(java.lang.Object)
+	 */
+	@Override
+	protected void setInternalValue(EObject newValue) {
+		super.setInternalValue(newValue);
+
+		if (property != null) {
+			property.setValue(newValue);
+		}
+	}
+
+	/**
+	 * Gets the collection.
+	 *
+	 * @return the collection
+	 */
+	@SuppressWarnings("unchecked")
+	public Collection<EObject> getCollection() {
+		return (Collection<EObject>) combobox.getItemIds();
+	}
+
+	/**
+	 * Sets the collection.
+	 *
+	 * @param eObjects
+	 *            the new collection
+	 */
+	@SuppressWarnings("unchecked")
+	public void setCollection(Collection<? extends EObject> eObjects) {
+		initContent();
+
+		combobox.removeAllItems();
+
+		for (EObject eObject : eObjects) {
+			if (eObject == null) {
+				continue;
+			}
+			IItemLabelProvider provider = (IItemLabelProvider) adapterFactory
+					.adapt(eObject, IItemLabelProvider.class);
+			if (provider != null) {
+				Item item = combobox.addItem(eObject);
+				item.getItemProperty("name")
+						.setValue(provider.getText(eObject));
+			} else if (eObject.eClass().getEStructuralFeature("name") != null) {
+				Item item = combobox.addItem(eObject);
+				item.getItemProperty("name").setValue(
+						eObject.eGet(eObject.eClass().getEStructuralFeature(
+								"name")));
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EStructuralFeatureComboBox.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EStructuralFeatureComboBox.java
new file mode 100644
index 0000000..5db0e7c
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EStructuralFeatureComboBox.java
@@ -0,0 +1,160 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data.fields;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+
+import com.vaadin.data.Item;
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CustomField;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A combobox to select referenced EObjects.
+ */
+@SuppressWarnings("serial")
+public class EStructuralFeatureComboBox extends CustomField<EStructuralFeature> {
+
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+
+	/** The combobox. */
+	private ComboBox combobox;
+	
+	/** The property. */
+	private ObjectProperty<EStructuralFeature> property;
+
+	/** The filter. */
+	private Filter filter;
+
+	/**
+	 * Instantiates a new e structural feature combo box.
+	 *
+	 * @param caption
+	 *            the caption
+	 * @param adapterFactory
+	 *            the adapter factory
+	 */
+	public EStructuralFeatureComboBox(String caption,
+			AdapterFactory adapterFactory) {
+		setCaption(caption);
+		this.adapterFactory = adapterFactory;
+
+		// eager init
+		initContent();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.CustomField#initContent()
+	 */
+	@Override
+	protected Component initContent() {
+		if (combobox != null) {
+			return combobox;
+		}
+
+		combobox = new ComboBox();
+		combobox.setWidth("100%");
+		combobox.setItemCaptionPropertyId("name");
+
+		combobox.addContainerProperty("name", String.class, "");
+
+		property = new ObjectProperty<EStructuralFeature>(null,
+				EStructuralFeature.class);
+		combobox.setPropertyDataSource(property);
+
+		property.addValueChangeListener(e -> {
+			super.setValue((EStructuralFeature) e.getProperty().getValue());
+		});
+
+		return combobox;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#getType()
+	 */
+	@Override
+	public Class<EStructuralFeature> getType() {
+		return EStructuralFeature.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#setInternalValue(java.lang.Object)
+	 */
+	@Override
+	protected void setInternalValue(EStructuralFeature newValue) {
+		super.setInternalValue(newValue);
+
+		if (property != null) {
+			property.setValue(newValue);
+		}
+	}
+
+	/**
+	 * Sets the type which should be used to find all features.
+	 *
+	 * @param eClass
+	 *            the e class
+	 * @param filter
+	 *            the filter to filter features before displaying
+	 */
+	@SuppressWarnings("unchecked")
+	public void setType(EClass eClass, Filter filter) {
+		this.filter = filter;
+		initContent();
+
+		combobox.removeAllItems();
+
+		for (EStructuralFeature feature : eClass.getEAllStructuralFeatures()) {
+			if (feature == null) {
+				continue;
+			}
+
+			if (filter != null && !filter.matches(feature)) {
+				continue;
+			}
+
+			IItemLabelProvider provider = (IItemLabelProvider) adapterFactory
+					.adapt(feature, IItemLabelProvider.class);
+			Item item = combobox.addItem(feature);
+
+			String name = provider.getText(feature);
+			if (feature.isMany()) {
+				name += "[*]";
+			}
+			item.getItemProperty("name").setValue(name);
+		}
+	}
+
+	/**
+	 * Is used to filter all available features.
+	 */
+	public static interface Filter {
+		
+		/**
+		 * Returns true, if feature should be available.
+		 *
+		 * @param feature
+		 *            the feature
+		 * @return true, if successful
+		 */
+		boolean matches(EStructuralFeature feature);
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EmfItemPropertyEditorField.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EmfItemPropertyEditorField.java
new file mode 100644
index 0000000..328d53b
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/EmfItemPropertyEditorField.java
@@ -0,0 +1,397 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data.fields;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.EmfItemPropertyDescritor;
+
+import com.vaadin.data.Validator.InvalidValueException;
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.util.TransactionalPropertyWrapper;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CustomField;
+import com.vaadin.ui.Field;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This field is used in the property view to show different kind of datatypes.
+ */
+@SuppressWarnings("serial")
+public class EmfItemPropertyEditorField extends
+		CustomField<EmfItemPropertyDescritor> {
+
+	/** The domain. */
+	private final EditingDomain domain;
+	
+	/** The adapter factory. */
+	private final AdapterFactory adapterFactory;
+
+	/** The main layout. */
+	private VerticalLayout mainLayout;
+
+	/** The text field. */
+	// sources for datatransfer
+	private TextSource textField;
+	
+	/** The boolean field. */
+	private BooleanSource booleanField;
+
+	/** The e object combo. */
+	private EObjectComboBoxSource eObjectCombo;
+
+	/** The active source. */
+	private Source<?> activeSource;
+
+	/**
+	 * Instantiates a new emf item property editor field.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 */
+	public EmfItemPropertyEditorField(IModelingContext modelingContext) {
+		this.domain = modelingContext.getEditingDomain();
+		this.adapterFactory = modelingContext.getAdapterFactory();
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.CustomField#initContent()
+	 */
+	@Override
+	protected Component initContent() {
+		mainLayout = new VerticalLayout();
+		textField = new TextSource();
+		booleanField = new BooleanSource();
+		eObjectCombo = new EObjectComboBoxSource();
+
+		return mainLayout;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#getType()
+	 */
+	@Override
+	public Class<EmfItemPropertyDescritor> getType() {
+		return EmfItemPropertyDescritor.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#setInternalValue(java.lang.Object)
+	 */
+	@Override
+	protected void setInternalValue(EmfItemPropertyDescritor newValue) {
+		super.setInternalValue(newValue);
+
+		switchFieldType(newValue);
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#commit()
+	 */
+	@Override
+	public void commit() throws SourceException, InvalidValueException {
+		super.commit();
+
+		if (activeSource != null) {
+			activeSource.commit();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see com.vaadin.ui.AbstractField#discard()
+	 */
+	@Override
+	public void discard() throws SourceException {
+		super.discard();
+
+		if (activeSource != null) {
+			activeSource.rollback();
+		}
+	}
+
+	/**
+	 * Switch field type.
+	 *
+	 * @param newValue
+	 *            the new value
+	 */
+	private void switchFieldType(EmfItemPropertyDescritor newValue) {
+		if (newValue == null) {
+			return;
+		}
+		EStructuralFeature eFeature = (EStructuralFeature) newValue
+				.getFeature();
+		if (eFeature instanceof EAttribute) {
+			EAttribute eAttribute = (EAttribute) eFeature;
+			EDataType eAttType = eAttribute.getEAttributeType();
+			if (eAttType.getInstanceClass() == Boolean.TYPE) {
+				activateSource(booleanField, newValue);
+			} else {
+				if (eAttribute.isMany()) {
+					newValue.getChoiceOfValues();
+				} else {
+					activateSource(textField, newValue);
+				}
+
+			}
+		} else {
+			EReference eReference = (EReference) eFeature;
+			if (eReference.isMany()) {
+
+			} else {
+				activateSource(eObjectCombo, newValue);
+			}
+		}
+	}
+
+	/**
+	 * Activate source.
+	 *
+	 * @param source
+	 *            the source
+	 * @param descritor
+	 *            the descritor
+	 */
+	private void activateSource(Source<?> source,
+			EmfItemPropertyDescritor descritor) {
+
+		activeSource = source;
+		// setup collections,...
+		activeSource.initialize();
+		activeSource.setValue(descritor);
+
+		mainLayout.removeAllComponents();
+		mainLayout.addComponent(source.field);
+	}
+
+	/**
+	 * A source is a wrapper that wraps important parts.
+	 * <p>
+	 * The main issue using sources is to decouple the active field. Depending
+	 * on the {@link EmfItemPropertyDescritor descriptor}, a CheckBox, a
+	 * TextField, a ComboBox,... need to used as an input field. The sources
+	 * encapsulate the different types. There is one Source for each field type.
+	 * <p>
+	 * Additionally it is used as a grid editor. So it need transactional
+	 * behavior. Input may only be forwarded to the
+	 * {@link EmfItemPropertyDescritor descriptor}, if "save" is pressed in the
+	 * grid editor. Each field comes with its own property. This property is
+	 * wrapped by a {@link TransactionalPropertyWrapper} which ensures, that
+	 * inputs are not forwarded to the descriptor before commit was fired.<br>
+	 * If commit was fired, the value will be forwarded to the property and a
+	 * value change listener will trigger the set operation to the descriptor.
+	 *
+	 * @param <F>
+	 *            the generic type
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	private abstract class Source<F extends Field> {
+		
+		/** The field. */
+		protected final F field;
+		
+		/** The txn property. */
+		protected final TransactionalPropertyWrapper txnProperty;
+
+		/** The descriptor. */
+		protected EmfItemPropertyDescritor descriptor;
+
+		/**
+		 * Instantiates a new source.
+		 *
+		 * @param field
+		 *            the field
+		 * @param property
+		 *            the property
+		 */
+		Source(F field, ObjectProperty property) {
+			this.field = field;
+			txnProperty = new TransactionalPropertyWrapper(property);
+			field.setPropertyDataSource(txnProperty);
+		}
+
+		/**
+		 * Sets the value.
+		 *
+		 * @param descriptor
+		 *            the new value
+		 */
+		public void setValue(EmfItemPropertyDescritor descriptor) {
+			this.descriptor = descriptor;
+			if (descriptor != null) {
+				field.setValue(descriptor.getEditableValue());
+			} else {
+				field.clear();
+			}
+		}
+
+		/**
+		 * Commit.
+		 */
+		public void commit() {
+			if (field.isAttached()) {
+				txnProperty.commit();
+
+				doCommit();
+			}
+		}
+
+		/**
+		 * Do commit.
+		 */
+		protected abstract void doCommit();
+
+		/**
+		 * Rollback.
+		 */
+		public void rollback() {
+			if (field.isAttached()) {
+				txnProperty.rollback();
+			}
+		}
+
+		/**
+		 * A good place to initialize collections,...
+		 */
+		public void initialize() {
+
+		}
+
+		/**
+		 * Creates the set command.
+		 *
+		 * @return the sets the command
+		 */
+		protected SetCommand createSetCommand() {
+			SetCommand command = new SetCommand(domain,
+					descriptor.getEObject(),
+					(EStructuralFeature) descriptor.getFeature(),
+					txnProperty.getValue());
+			return command;
+		}
+
+		/**
+		 * Execute command.
+		 *
+		 * @param command
+		 *            the command
+		 */
+		protected void executeCommand(Command command) {
+			domain.getCommandStack().execute(createSetCommand());
+		}
+	}
+
+	/**
+	 * The Class BooleanSource.
+	 */
+	private class BooleanSource extends Source<CheckBox> {
+		
+		/**
+		 * Instantiates a new boolean source.
+		 */
+		BooleanSource() {
+			super(new CheckBox(), new ObjectProperty<Boolean>(false,
+					Boolean.class));
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.vaadin.emf.data.fields.EmfItemPropertyEditorField.Source#doCommit()
+		 */
+		@Override
+		protected void doCommit() {
+			executeCommand(createSetCommand());
+		}
+	}
+
+	/**
+	 * The Class TextSource.
+	 */
+	private class TextSource extends Source<TextField> {
+		
+		/**
+		 * Instantiates a new text source.
+		 */
+		TextSource() {
+			super(new TextField(), new ObjectProperty<String>("", String.class));
+			field.setNullRepresentation("");
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.vaadin.emf.data.fields.EmfItemPropertyEditorField.Source#doCommit()
+		 */
+		@Override
+		protected void doCommit() {
+			executeCommand(createSetCommand());
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.vaadin.emf.data.fields.EmfItemPropertyEditorField.Source#setValue(org.eclipse.osbp.vaadin.emf.data.EmfItemPropertyDescritor)
+		 */
+		public void setValue(EmfItemPropertyDescritor descriptor) {
+			this.descriptor = descriptor;
+			if (descriptor != null) {
+				field.setValue(String.valueOf(descriptor.getEditableValue()));
+			} else {
+				field.clear();
+			}
+		}
+	}
+
+	/**
+	 * The Class EObjectComboBoxSource.
+	 */
+	private class EObjectComboBoxSource extends Source<EObjectComboBox> {
+		
+		/**
+		 * Instantiates a new e object combo box source.
+		 */
+		EObjectComboBoxSource() {
+			super(new EObjectComboBox(adapterFactory),
+					new ObjectProperty<EObject>(null, EObject.class));
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.vaadin.emf.data.fields.EmfItemPropertyEditorField.Source#initialize()
+		 */
+		@SuppressWarnings("unchecked")
+		public void initialize() {
+			if (descriptor != null) {
+				field.setCollection((Collection<EObject>) descriptor
+						.getChoiceOfValues());
+			}
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.vaadin.emf.data.fields.EmfItemPropertyEditorField.Source#doCommit()
+		 */
+		@Override
+		protected void doCommit() {
+			executeCommand(createSetCommand());
+		}
+	}
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/JvmSubTypesComboBox.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/JvmSubTypesComboBox.java
new file mode 100644
index 0000000..8cd8c5d
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/data/fields/JvmSubTypesComboBox.java
@@ -0,0 +1,142 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.data.fields;
+
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.JvmSubTypesContainer;
+import org.eclipse.osbp.vaadin.emf.data.JvmSubTypesContainer.SubTypesCallback;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CustomField;
+
+/**
+ * A combobox to select referenced JvmDeclaredType.
+ */
+@SuppressWarnings("serial")
+public class JvmSubTypesComboBox extends CustomField<JvmDeclaredType> {
+
+	/** The combobox. */
+	private ComboBox combobox;
+
+	/** The property. */
+	private ObjectProperty<JvmDeclaredType> property;
+
+	JvmSubTypesContainer container;
+
+	/**
+	 * Instantiates a new e object combo box.
+	 *
+	 * @param adapterFactory
+	 *            the adapter factory
+	 */
+	public JvmSubTypesComboBox(IModelingContext modelingContext,
+			IResourceProvider resourceProvider, SubTypesCallback callback) {
+		container = new JvmSubTypesContainer(modelingContext, resourceProvider,
+				callback);
+
+		// eager init
+		initContent();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.vaadin.ui.CustomField#initContent()
+	 */
+	@Override
+	protected Component initContent() {
+		if (combobox != null) {
+			return combobox;
+		}
+
+		combobox = new ComboBox();
+		combobox.setWidth("100%");
+
+		combobox.setContainerDataSource(container);
+
+		combobox.setItemCaptionPropertyId(JvmSubTypesContainer.LABEL);
+		combobox.setItemIconPropertyId(JvmSubTypesContainer.ICON);
+
+		property = new ObjectProperty<JvmDeclaredType>(null,
+				JvmDeclaredType.class);
+		combobox.setPropertyDataSource(property);
+
+		property.addValueChangeListener(e -> {
+			super.setValue((JvmDeclaredType) e.getProperty().getValue());
+		});
+
+		return combobox;
+	}
+
+	/**
+	 * Returns the root type.
+	 * 
+	 * @return
+	 */
+	public EObject getRootType() {
+		return container.getRootElement();
+	}
+
+	/**
+	 * Sets the root type.
+	 * 
+	 * @param rootElement
+	 */
+	public void setRootType(JvmDeclaredType rootElement) {
+		container.setRootElement(rootElement);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.vaadin.ui.AbstractField#getType()
+	 */
+	@Override
+	public Class<JvmDeclaredType> getType() {
+		return JvmDeclaredType.class;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.vaadin.ui.AbstractField#setInternalValue(java.lang.Object)
+	 */
+	@Override
+	protected void setInternalValue(JvmDeclaredType newValue) {
+		super.setInternalValue(newValue);
+
+		if (property != null) {
+			property.setValue(newValue);
+		}
+	}
+
+	/**
+	 * Gets the collection.
+	 *
+	 * @return the collection
+	 */
+	@SuppressWarnings("unchecked")
+	public Collection<JvmDeclaredType> getCollection() {
+		return (Collection<JvmDeclaredType>) combobox.getItemIds();
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfCommandStackTableViewer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfCommandStackTableViewer.java
new file mode 100644
index 0000000..9e5fdee
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfCommandStackTableViewer.java
@@ -0,0 +1,113 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.views;
+
+import java.util.EventObject;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+
+import com.vaadin.data.Item;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class EmfCommandStackTableViewer.
+ */
+@SuppressWarnings({ "serial", "restriction" })
+public class EmfCommandStackTableViewer extends CustomComponent implements
+		CommandStackListener {
+
+	/** The Constant EVENT_TYPE_NAME. */
+	public static final String EVENT_TYPE_NAME = "eventType";
+
+	/** The table. */
+	private Table table;
+
+	/** The modeling context. */
+	private IModelingContext modelingContext;
+
+	/**
+	 * Instantiates a new emf command stack table viewer.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 */
+	public EmfCommandStackTableViewer(IModelingContext modelingContext) {
+		this.modelingContext = modelingContext;
+
+		modelingContext.getCommandStack().addCommandStackListener(this);
+
+		Panel mainLayout = new Panel();
+		mainLayout.setSizeFull();
+		setCompositionRoot(mainLayout);
+
+		VerticalLayout scrollArea = new VerticalLayout();
+		scrollArea.setMargin(true);
+		mainLayout.setContent(scrollArea);
+
+		table = new Table();
+		table.setSizeFull();
+		scrollArea.addComponent(table);
+
+		table.addContainerProperty("name", String.class, "");
+		// table.addContainerProperty("can undo", CheckBox.class, "");
+		// table.addContainerProperty("can redo", CheckBox.class, "");
+
+		fillTable();
+
+		table.setItemCaptionPropertyId("name");
+	}
+
+	/**
+	 * Fill table.
+	 */
+	@SuppressWarnings("unchecked")
+	private void fillTable() {
+		table.removeAllItems();
+
+		List<Command> commands = modelingContext.getCommandStack()
+				.getAllCommands();
+		for (int i = commands.size() - 1; i >= 0; i--) {
+			Item item = table.addItem(commands.get(i));
+			item.getItemProperty("name").setValue(commands.get(i).getLabel());
+		}
+
+		table.select(modelingContext.getCommandStack().getMostRecentCommand());
+		table.setValue(modelingContext.getCommandStack().getMostRecentCommand());
+	}
+
+	/**
+	 * Is required to be called.
+	 */
+	public void dispose() {
+		table = null;
+		modelingContext.getCommandStack().removeCommandStackListener(this);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.common.command.CommandStackListener#commandStackChanged(java.util.EventObject)
+	 */
+	@Override
+	public void commandStackChanged(EventObject event) {
+		fillTable();
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfModelTreeViewer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfModelTreeViewer.java
new file mode 100644
index 0000000..47aeeb0
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfModelTreeViewer.java
@@ -0,0 +1,191 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.views;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.actions.EObjectActionHandler;
+import org.eclipse.osbp.vaadin.emf.actions.EmfTreeDndHandler;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.EmfModelTreeContainer;
+
+import com.vaadin.event.ItemClickEvent.ItemClickListener;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.Tree.TreeDragMode;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Shows any emfmodel in a tree viewer style.
+ * <p>
+ * ATTENTION: This viewer MUST be disposed!
+ */
+@SuppressWarnings("serial")
+public class EmfModelTreeViewer extends CustomComponent {
+
+	/** The tree. */
+	private Tree tree;
+	
+	/** The container. */
+	private EmfModelTreeContainer container;
+
+	// private ContextMenu contextMenu;
+
+	/**
+	 * Instantiates a new emf model tree viewer.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 * @param callback
+	 *            the callback
+	 */
+	public EmfModelTreeViewer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider,
+			EObjectActionHandler.EditCallback callback) {
+		Panel mainLayout = new Panel();
+		mainLayout.setSizeFull();
+		setCompositionRoot(mainLayout);
+
+		VerticalLayout scrollArea = new VerticalLayout();
+		mainLayout.setContent(scrollArea);
+
+		tree = new Tree();
+		tree.setSizeFull();
+
+		// contextMenu = new ContextMenu(tree, false);
+		// contextMenu.addContextMenuOpenListener(e -> contextMenuOpens(e));
+
+		tree.setDragMode(TreeDragMode.NODE);
+		tree.setDropHandler(new EmfTreeDndHandler(modelingContext, tree));
+
+		tree.addActionHandler(new EObjectActionHandler(modelingContext,
+				resourceProvider, callback));
+		// resolve by ui request. Otherwise exception
+		tree.addExpandListener(e -> container.resolveChildren(e.getItemId()));
+		scrollArea.addComponent(tree);
+
+		container = new EmfModelTreeContainer(modelingContext,
+				resourceProvider, new UiSync(UI.getCurrent()));
+		tree.setContainerDataSource(container);
+
+		tree.setItemCaptionPropertyId("label");
+		tree.setItemIconPropertyId("icon");
+	}
+
+	// private void contextMenuOpens(ContextMenuOpenEvent event) {
+	// event.getContextClickEvent().getComponent();
+	// }
+
+	/**
+	 * Adds the item click listener.
+	 *
+	 * @param listener
+	 *            the listener
+	 */
+	public void addItemClickListener(ItemClickListener listener) {
+		tree.addItemClickListener(listener);
+	}
+
+	/**
+	 * Removes the item click listener.
+	 *
+	 * @param listener
+	 *            the listener
+	 */
+	public void removeItemClickListener(ItemClickListener listener) {
+		tree.removeItemClickListener(listener);
+	}
+
+	/**
+	 * Gets the selection.
+	 *
+	 * @return the selection
+	 */
+	public EObject getSelection() {
+		return (EObject) tree.getValue();
+	}
+
+	/**
+	 * Sets the selection.
+	 *
+	 * @param selection
+	 *            the new selection
+	 */
+	public void setSelection(EObject selection) {
+		tree.setValue(selection);
+	}
+
+	/**
+	 * Gets the root element.
+	 *
+	 * @return the root element
+	 */
+	public EObject getRootElement() {
+		return container.getRootElement();
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	public void setRootElement(EObject rootElement) {
+		container.setRootElement(rootElement);
+	}
+
+	/**
+	 * Expand.
+	 *
+	 * @param element
+	 *            the element
+	 */
+	public void expand(EObject element) {
+		if(element == null) {
+			return;
+		}
+		if (tree.containsId(element)) {
+			tree.expandItem(element);
+
+			// expand parent up to the root
+			if (!tree.isRoot(element)) {
+				expand(element.eContainer());
+			}
+		} else if (element.eContainer() != null) {
+			// expand parent
+			expand(element.eContainer());
+
+			// now expand child
+			if (tree.containsId(element)) {
+				tree.expandItem(element);
+			}
+		}
+	}
+
+	/**
+	 * Is required to be called.
+	 */
+	public void dispose() {
+		tree = null;
+		container.dispose();
+		container = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfPropertyViewer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfPropertyViewer.java
new file mode 100644
index 0000000..ebc58f6
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/EmfPropertyViewer.java
@@ -0,0 +1,82 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.views;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.EmfItemPropertyDescritorValueConverter;
+import org.eclipse.osbp.vaadin.emf.data.EmfPropertiesContainer;
+import org.eclipse.osbp.vaadin.emf.data.fields.EmfItemPropertyEditorField;
+
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Show properties for any given EObject.
+ */
+@SuppressWarnings("serial")
+public class EmfPropertyViewer extends CustomComponent {
+
+	/** The grid. */
+	private Grid grid;
+	
+	/** The container. */
+	private EmfPropertiesContainer container;
+
+	/**
+	 * Instantiates a new emf property viewer.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 */
+	public EmfPropertyViewer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider) {
+
+		VerticalLayout mainLayout = new VerticalLayout();
+		mainLayout.setSizeFull();
+		setCompositionRoot(mainLayout);
+
+		grid = new Grid();
+		grid.setSizeFull();
+		grid.setEditorEnabled(true);
+		mainLayout.addComponent(grid);
+
+		container = new EmfPropertiesContainer(modelingContext, resourceProvider);
+		grid.setContainerDataSource(container);
+
+		grid.getColumn(EmfPropertiesContainer.KEY)
+				.setEditorField(new TextField()).setEditable(false);
+		grid.getColumn(EmfPropertiesContainer.VALUE)
+				.setConverter(new EmfItemPropertyDescritorValueConverter())
+				.setEditorField(new EmfItemPropertyEditorField(modelingContext));
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	public void setRootElement(EObject rootElement) {
+		container.setRootElement(rootElement);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/JvmTypePropertiesTreeViewer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/JvmTypePropertiesTreeViewer.java
new file mode 100644
index 0000000..96b7b9f
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/JvmTypePropertiesTreeViewer.java
@@ -0,0 +1,210 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.views;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.access.IJvmTypeProvider;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.JvmTypePropertiesTreeContainer;
+
+import com.vaadin.event.ItemClickEvent.ItemClickListener;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.Tree.TreeDragMode;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Shows any {@link JvmGenericType} in a tree viewer style. Only properties
+ * (getter and setter available) are shown as details.
+ * <p>
+ * ATTENTION: This viewer MUST be disposed!
+ */
+@SuppressWarnings({ "serial", "restriction" })
+public class JvmTypePropertiesTreeViewer extends CustomComponent {
+
+	/** The tree. */
+	private Tree tree;
+	
+	/** The container. */
+	private JvmTypePropertiesTreeContainer container;
+	
+	/** The type provider. */
+	private IJvmTypeProvider typeProvider;
+
+	/**
+	 * Instantiates a new jvm type properties tree viewer.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 * @param typeProvider
+	 *            the type provider
+	 */
+	public JvmTypePropertiesTreeViewer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider, IJvmTypeProvider typeProvider) {
+		this.typeProvider = typeProvider;
+		Panel mainLayout = new Panel();
+		mainLayout.setSizeFull();
+		setCompositionRoot(mainLayout);
+
+		VerticalLayout scrollArea = new VerticalLayout();
+		scrollArea.setMargin(true);
+		mainLayout.setContent(scrollArea);
+
+		tree = new Tree();
+		tree.setSizeFull();
+
+		tree.setDragMode(TreeDragMode.NODE);
+		// tree.setDropHandler(new EmfTreeDndHandler(modelingContext, tree));
+
+		// tree.addActionHandler(new EObjectActionHandler(modelingContext,
+		// resourceProvider));
+		// resolve by ui request. Otherwise exception
+		tree.addExpandListener(e -> container.resolveChildren(e.getItemId()));
+		scrollArea.addComponent(tree);
+
+		container = new JvmTypePropertiesTreeContainer(modelingContext,
+				resourceProvider, new UiSync(UI.getCurrent()));
+		tree.setContainerDataSource(container);
+
+		tree.setItemCaptionPropertyId("label");
+		tree.setItemIconPropertyId("icon");
+	}
+
+	// private void contextMenuOpens(ContextMenuOpenEvent event) {
+	// event.getContextClickEvent().getComponent();
+	// }
+
+	/**
+	 * Adds the item click listener.
+	 *
+	 * @param listener
+	 *            the listener
+	 */
+	public void addItemClickListener(ItemClickListener listener) {
+		tree.addItemClickListener(listener);
+	}
+
+	/**
+	 * Removes the item click listener.
+	 *
+	 * @param listener
+	 *            the listener
+	 */
+	public void removeItemClickListener(ItemClickListener listener) {
+		tree.removeItemClickListener(listener);
+	}
+
+	/**
+	 * Gets the selection.
+	 *
+	 * @return the selection
+	 */
+	public EObject getSelection() {
+		return (EObject) tree.getValue();
+	}
+
+	/**
+	 * Sets the value.
+	 *
+	 * @param selection
+	 *            the new value
+	 */
+	public void setValue(EObject selection) {
+		tree.setValue(selection);
+	}
+
+	/**
+	 * Gets the root element.
+	 *
+	 * @return the root element
+	 */
+	public JvmGenericType getRootElement() {
+		return (JvmGenericType) container.getRootElement();
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	public void setRootElement(JvmGenericType rootElement) {
+		container.setRootElement(rootElement);
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param rootElement
+	 *            the new root element
+	 */
+	public void setRootElement(Class<?> rootElement) {
+		container.setRootElement((JvmGenericType) typeProvider
+				.findTypeByName(rootElement.getName()));
+	}
+
+	/**
+	 * Sets the root element.
+	 *
+	 * @param className
+	 *            the new root element
+	 */
+	public void setRootElement(String className) {
+		container.setRootElement((JvmGenericType) typeProvider
+				.findTypeByName(className));
+	}
+
+	/**
+	 * Expand.
+	 *
+	 * @param element
+	 *            the element
+	 */
+	public void expand(EObject element) {
+		if (tree.containsId(element)) {
+			tree.expandItem(element);
+
+			// expand parent up to the root
+			if (!tree.isRoot(element)) {
+				expand(element.eContainer());
+			}
+		} else if (element.eContainer() != null) {
+			// expand parent
+			expand(element.eContainer());
+
+			// now expand child
+			if (tree.containsId(element)) {
+				tree.expandItem(element);
+			}
+		}
+	}
+
+	/**
+	 * Is required to be called.
+	 */
+	public void dispose() {
+		tree = null;
+		container.dispose();
+		container = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/PaletteViewer.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/PaletteViewer.java
new file mode 100644
index 0000000..e60fcaf
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/PaletteViewer.java
@@ -0,0 +1,69 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.views;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.runtime.web.vaadin.common.resource.IResourceProvider;
+import org.eclipse.osbp.vaadin.emf.api.IModelingContext;
+import org.eclipse.osbp.vaadin.emf.data.EmfModelTreeContainer;
+
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Shows any emfmodel in a tree viewer style.
+ */
+@SuppressWarnings("serial")
+public class PaletteViewer extends CustomComponent {
+
+	/** The tree. */
+	private Tree tree;
+	
+	/** The container. */
+	private EmfModelTreeContainer container;
+
+	/**
+	 * Instantiates a new palette viewer.
+	 *
+	 * @param modelingContext
+	 *            the modeling context
+	 * @param resourceProvider
+	 *            the resource provider
+	 */
+	public PaletteViewer(IModelingContext modelingContext,
+			IResourceProvider resourceProvider) {
+		Panel mainLayout = new Panel();
+		mainLayout.setSizeFull();
+		setCompositionRoot(mainLayout);
+
+		VerticalLayout scrollArea = new VerticalLayout();
+		mainLayout.setContent(scrollArea);
+
+	}
+
+	/**
+	 * Sets the selected element.
+	 *
+	 * @param rootElement
+	 *            the new selected element
+	 */
+	public void setSelectedElement(EObject rootElement) {
+		container.setRootElement(rootElement);
+	}
+
+}
diff --git a/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/UiSync.java b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/UiSync.java
new file mode 100644
index 0000000..2ecdeeb
--- /dev/null
+++ b/org.eclipse.osbp.vaadin.emf/src/org/eclipse/osbp/vaadin/emf/views/UiSync.java
@@ -0,0 +1,50 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Florian Pirchner - Initial implementation
+ *     Loetz GmbH&Co.KG                               
+ * 
+ */
+package org.eclipse.osbp.vaadin.emf.views;
+
+import com.vaadin.ui.UI;
+
+// TODO: Auto-generated Javadoc
+/**
+ * An abstraction to sync changes with the UI. Is required to sync model changes
+ * with the UI, since the model could also become modified in a NON-UI-Thread.
+ */
+public class UiSync {
+
+	/** The ui. */
+	private final UI ui;
+
+	/**
+	 * Instantiates a new ui sync.
+	 *
+	 * @param ui
+	 *            the ui
+	 */
+	public UiSync(UI ui) {
+		super();
+		this.ui = ui;
+	}
+
+	/**
+	 * Syncs the runnable with the UI-Thread.
+	 *
+	 * @param runnable
+	 *            the runnable
+	 */
+	public void sync(Runnable runnable) {
+		ui.accessSynchronously(runnable);
+	}
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..f79a07e
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.osbp.releng.maven</groupId>
+		<artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath/>
+	</parent>
+
+	<groupId>org.eclipse.osbp.vaadin.emf</groupId>
+	<artifactId>org.eclipse.osbp.vaadin.emf.aggregator</artifactId>
+	<version>0.9.0-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<url>${osbp.site.repository.url}</url>
+	<scm>
+		<url>${osbp.scm.url}</url>
+		<connection>${osbp.scm.connection}</connection>
+		<developerConnection>${osbp.scm.connection.dev}</developerConnection>
+		<tag>HEAD</tag>
+	</scm>
+	<distributionManagement>
+		<site>
+			<id>gh-pages</id>
+			<name>OSBP GitHub Pages</name>
+			<url>${distribution.site.url}</url>
+		</site>
+	</distributionManagement>
+
+	<properties>
+		<osbp.releng.version>0.12.5-SNAPSHOT</osbp.releng.version>
+		<osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+	</properties>
+
+	<modules>
+		<module>org.eclipse.osbp.vaadin.emf</module>
+		<module>org.eclipse.osbp.vaadin.emf.api</module>
+		<module>org.eclipse.osbp.vaadin.emf.feature</module>
+	</modules>
+
+	<profiles>
+        <profile>
+			<!-- switch off jarsigner if not properly configured in settings.xml --> 
+            <id>donotsign</id>
+            <activation>
+                <property>
+                    <name>!maven-jarsigner-plugin.keystore</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-jarsigner-plugin</artifactId>
+                        <version>1.3.2</version>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+	</profiles>
+	<build>
+		<pluginManagement>
+			<plugins>
+		       <plugin>
+		         <groupId>nl.geodienstencentrum.maven</groupId>
+		         <artifactId>sass-maven-plugin</artifactId>
+		         <version>2.13</version>
+		       </plugin>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-javadoc-plugin</artifactId>
+					<configuration>
+						<skip>true</skip>
+					</configuration>
+				</plugin>
+				<plugin>
+					<groupId>org.eclipse.tycho</groupId>
+					<artifactId>target-platform-configuration</artifactId>
+					<version>${tycho-version}</version>
+					<configuration>
+						<resolver>p2</resolver>
+						<pomDependencies>consider</pomDependencies>
+						<environments>
+							<environment>
+								<os>win32</os>
+								<ws>win32</ws>
+								<arch>x86_64</arch>
+							</environment>
+							<environment>
+								<os>linux</os>
+								<ws>gtk</ws>
+								<arch>x86</arch>
+							</environment>
+							<environment>
+								<os>linux</os>
+								<ws>gtk</ws>
+								<arch>x86_64</arch>
+							</environment>
+							<environment>
+								<os>macosx</os>
+								<ws>cocoa</ws>
+								<arch>x86_64</arch>
+							</environment>
+						</environments>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+</project>