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..ee40ce9
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.ide.core.ui.softwarefactory.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..5c5f3b2
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,26 @@
+<?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.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ecview.extension</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.action</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.authorization</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datainterchange</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart</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.ide.core.ui.softwarefactory.feature/.project b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.project
new file mode 100644
index 0000000..dc75549
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.ide.core.ui.softwarefactory.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.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</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.ide.core.ui.softwarefactory.feature/LICENSE.txt b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.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.ide.core.ui.softwarefactory.feature/build.properties b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/build.properties
new file mode 100644
index 0000000..b8920ff
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = license.html,  epl-v10.html,  feature.xml,\
+               feature.properties
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/epl-v10.html b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.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.ide.core.ui.softwarefactory.feature/feature.properties b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.properties
new file mode 100644
index 0000000..8548bfe
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.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 IDE core UI 
+
+# "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 IDE core UI.
+
+# "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.ide.core.ui.softwarefactory.feature/feature.xml b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
new file mode 100644
index 0000000..4e1d5a5
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
@@ -0,0 +1,38 @@
+<?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.ide.core.ui.softwarefactory.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.ide.core.ui.softwarefactory"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>       
+        
+</feature>
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/license.html b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.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.ide.core.ui.softwarefactory.feature/pom.xml b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/pom.xml
new file mode 100644
index 0000000..ce7273d
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/pom.xml
@@ -0,0 +1,74 @@
+<?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 implementation 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.ide.core.ui.softwarefactory</groupId>
+        <artifactId>org.eclipse.osbp.ide.core.ui.softwarefactory.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.ide.core.ui.softwarefactory.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>
+                </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>
+
+</project>
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.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.ide.core.ui.softwarefactory.feature/src/overview.html b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/src/overview.html
new file mode 100644
index 0000000..a7e251d
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/src/overview.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP Tools Graphical Entity</title>
+</head>
+<body>
+<p>The <strong>OSBP&nbsp;IDE Core UI Softwarefactory</strong>&nbsp;contains the OSBP2 builder.</p>
+
+<p>It implements an extension to eclipse to be integrated in the build process of xtext. Its tasks are:</p>
+
+<ol>
+	<li>copy entity attributes to related datamarts that hold the tracking keyword.</li>
+	<li>recursively touch all upstream models when a&nbsp;DSL is changed.</li>
+</ol>
+
+<p>This should guarantee the generation of upstream dependencies when a downstream resource changes.</p>
+
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.project b/org.eclipse.osbp.ide.core.ui.softwarefactory/.project
new file mode 100644
index 0000000..65272d2
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.ide.core.ui.softwarefactory</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.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</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.ide.core.ui.softwarefactory/LICENSE.txt b/org.eclipse.osbp.ide.core.ui.softwarefactory/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/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.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF b/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..942b4e3
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
@@ -0,0 +1,45 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.ide.core.ui.softwarefactory
+Bundle-SymbolicName: org.eclipse.osbp.ide.core.ui.softwarefactory;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.apache.log4j,
+ org.slf4j.api;bundle-version="1.7.2",
+ osgi.enterprise;bundle-version="4.2.0",
+ org.eclipse.ui;resolution:=optional,
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.eclipse.compare.core;bundle-version="3.5.400",
+ org.eclipse.core.runtime;bundle-version="3.10.0",
+ org.eclipse.core.resources,
+ org.eclipse.emf.ecore;bundle-version="2.10.0",
+ org.eclipse.jdt.core,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.ui.access;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.ui.access;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.extension.strategy;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamartdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.authorizationdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datainterchange
+Import-Package: javax.validation,
+ org.osgi.framework;version="1.8.0"
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.osbp.ide.core.ui.softwarefactory.CoreUiActivator
+Bundle-Vendor: Eclipse OSBP
+Export-Package: org.eclipse.osbp.ide.core.ui.softwarefactory;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.ide.core.ui.softwarefactory.api;version="0.9.0",
+ org.eclipse.osbp.ide.core.ui.softwarefactory.builder;version="0.9.0",
+ org.eclipse.osbp.ide.core.ui.softwarefactory.constants;version="0.9.0",
+ org.eclipse.osbp.ide.core.ui.softwarefactory.extender;version="0.9.0",
+ org.eclipse.osbp.ide.core.ui.softwarefactory.nature;version="0.9.0",
+ org.eclipse.osbp.ide.core.ui.softwarefactory.util;version="0.9.0",
+ org.eclipse.osbp.ide.core.ui.softwarefactory.view;version="0.9.0"
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/about.html b/org.eclipse.osbp.ide.core.ui.softwarefactory/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/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.ide.core.ui.softwarefactory/about.ini b/org.eclipse.osbp.ide.core.ui.softwarefactory/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/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.ide.core.ui.softwarefactory/about.mappings b/org.eclipse.osbp.ide.core.ui.softwarefactory/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/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.ide.core.ui.softwarefactory/about.properties b/org.eclipse.osbp.ide.core.ui.softwarefactory/about.properties
new file mode 100644
index 0000000..c43a515
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/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:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.ide.core.ui.softwarefactory
+
+################ 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\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties b/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
new file mode 100644
index 0000000..502727e
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
@@ -0,0 +1,23 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               plugin.xml,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html,\
+               icons/,\
+               build.properties
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html,\
+               icons/,\
+               plugin.xml,\
+               META-INF/,\
+               .settings/,\
+               .project,\
+               .classpath,\
+               build.properties
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/epl-v10.html b/org.eclipse.osbp.ide.core.ui.softwarefactory/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/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.ide.core.ui.softwarefactory/icons/Index-ExportedContainer.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ExportedContainer.gif
new file mode 100644
index 0000000..dcc524e
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ExportedContainer.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ImportedNameContainer.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ImportedNameContainer.gif
new file mode 100644
index 0000000..dcc524e
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ImportedNameContainer.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ReferenceContainer.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ReferenceContainer.gif
new file mode 100644
index 0000000..dcc524e
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ReferenceContainer.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ReferenceDescription.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ReferenceDescription.gif
new file mode 100644
index 0000000..d2f257c
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-ReferenceDescription.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-Resource.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-Resource.gif
new file mode 100644
index 0000000..c27fba4
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Index-Resource.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Project.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Project.gif
new file mode 100644
index 0000000..dcc524e
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Project.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Property.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Property.gif
new file mode 100644
index 0000000..d2f257c
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Property.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Resource.gif b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Resource.gif
new file mode 100644
index 0000000..c27fba4
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/Resource.gif
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/nature_overlay.png b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/nature_overlay.png
new file mode 100644
index 0000000..652cf2c
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/icons/nature_overlay.png
Binary files differ
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/license.html b/org.eclipse.osbp.ide.core.ui.softwarefactory/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/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.ide.core.ui.softwarefactory/plugin.xml b/org.eclipse.osbp.ide.core.ui.softwarefactory/plugin.xml
new file mode 100644
index 0000000..e0bb6c0
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/plugin.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+	  <extension
+         point="org.eclipse.ui.popupMenus">
+      <objectContribution
+            adaptable="true"
+            id="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.addNature"
+            objectClass="org.eclipse.core.resources.IProject">
+         <action
+               class="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.ToggleOSBP2NatureAction"
+               icon="icons/nature_overlay.png"
+               id="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.AddOSBP2NatureAction"
+               label="Convert to OSBP2 project"
+               menubarPath="org.eclipse.ui.projectConfigure/additions">
+         </action>
+         <visibility>
+         	<not>
+	            <objectState
+    	              name="nature"
+        	          value="org.eclipse.osbp.ide.core.ui.softwarefactory.OSBP2Nature">
+            	</objectState>
+            </not>
+         </visibility>
+      </objectContribution>
+      <objectContribution
+            adaptable="true"
+            id="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.removeNature"
+            objectClass="org.eclipse.core.resources.IProject">
+         <action
+               class="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.ToggleOSBP2NatureAction"
+               icon="icons/nature_overlay.png"
+               id="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.RemoveXtextNatureAction"
+               label="Remove OSBP2 Nature"
+               menubarPath="org.eclipse.ui.projectConfigure/additions">
+         </action>
+         <visibility>
+               <objectState
+    	              name="nature"
+        	          value="org.eclipse.osbp.ide.core.ui.softwarefactory.OSBP2Nature">
+            	</objectState>
+         </visibility>
+      </objectContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.decorators">
+      <decorator
+            adaptable="true"
+            icon="icons/nature_overlay.png"
+            id="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.overlay"
+            label="OSBP2 Nature"
+            lightweight="true"
+            location="TOP_LEFT"
+            state="true">
+         <enablement>
+         	<and>
+		     	<objectClass
+		              name="org.eclipse.core.resources.IProject"/>
+		        <objectState
+		              name="nature"
+		              value="org.eclipse.osbp.ide.core.ui.softwarefactory.OSBP2Nature">
+		        </objectState>
+            </and>
+         </enablement>
+      </decorator>
+   </extension>
+   <extension
+         id="OSBP2Nature"
+         point="org.eclipse.core.resources.natures">
+   	 <runtime>
+         <run
+               class="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.OSBP2Nature">
+         </run>
+      </runtime>
+         <builder
+           id="org.eclipse.osbp.ide.core.ui.softwarefactory.OSBP2Builder">
+     	</builder>
+   </extension>
+   <extension
+        id="OSBP2Builder" 
+        name="OSBP2 Builder"
+        point="org.eclipse.core.resources.builders">
+     	<builder
+           hasNature="true">
+        <run
+              class="org.eclipse.osbp.ide.core.ui.softwarefactory.ExecutableExtensionFactory">
+        	<parameter name="guicekey" value="org.eclipse.osbp.ide.core.ui.softwarefactory.builder.OSBP2Builder"/>
+        </run>
+     </builder>
+  </extension>
+  <extension
+     id="XtextIndexView"
+     point="org.eclipse.ui.views">
+     <category
+        id="org.eclipse.osbp.ide.core.ui.softwarefactory.views.category.Resources"
+        name="OSBP2 Views">
+     </category>
+     <view
+        category="org.eclipse.osbp.ide.core.ui.softwarefactory.views.category.Resources"
+        class="org.eclipse.osbp.ide.core.ui.softwarefactory.ExecutableExtensionFactory:org.eclipse.osbp.ide.core.ui.softwarefactory.view.XtextIndexView"
+        icon="icons/Index-Resource.gif"
+        id="org.eclipse.osbp.ide.core.ui.softwarefactory.view.xtextindex"
+        name="Xtext-Index View"
+        restorable="true">
+     </view>
+  </extension>  
+   <extension
+         point="org.eclipse.xtext.ui.shared.sharedStateContributingModule">
+      <module
+            class="org.eclipse.osbp.ide.core.ui.softwarefactory.SharedStateContribution">
+      </module>
+   </extension>
+</plugin>
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/pom.xml b/org.eclipse.osbp.ide.core.ui.softwarefactory/pom.xml
new file mode 100644
index 0000000..fccfb73
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/pom.xml
@@ -0,0 +1,28 @@
+<?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>
+    <artifactId>org.eclipse.osbp.ide.core.ui.softwarefactory</artifactId>
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <plugins>
+        </plugins>
+    </build>
+    <parent>
+        <groupId>org.eclipse.osbp.ide.core.ui.softwarefactory</groupId>
+        <artifactId>org.eclipse.osbp.ide.core.ui.softwarefactory.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/schema/org.eclipse.osbp.ide.core.nature.AddOSBP2NatureAction.exsd b/org.eclipse.osbp.ide.core.ui.softwarefactory/schema/org.eclipse.osbp.ide.core.nature.AddOSBP2NatureAction.exsd
new file mode 100644
index 0000000..8a072e1
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/schema/org.eclipse.osbp.ide.core.nature.AddOSBP2NatureAction.exsd
@@ -0,0 +1,84 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osbp.ide.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.osbp.ide.core" id="org.eclipse.osbp.ide.core.ui.softwarefactory.nature.AddOSBP2NatureAction" name="Convert to OSBP2 project"/>
+      </appinfo>
+      <documentation>
+         [Enter description of this extension point.]
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/CoreUiActivator.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/CoreUiActivator.java
new file mode 100644
index 0000000..8d368d5
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/CoreUiActivator.java
@@ -0,0 +1,64 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.util.Modules;
+
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.ModelExtenderModule;
+
+
+public class CoreUiActivator extends AbstractUIPlugin {
+
+	public static final String PLUGIN_ID = "org.eclipse.osbp.ide.core.ui.softwarefactory"; //$NON-NLS-1$
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(CoreUiActivator.class);
+	private static CoreUiActivator plugin;
+
+	private Injector injector;
+
+	public static CoreUiActivator getDefault() {
+		return plugin;
+	}
+
+
+	public Injector getInjector() {
+		if (injector == null) {
+			injector = Guice.createInjector(Modules.override(
+					new SharedStateModule()).with(
+					new ModelExtenderModule()));
+		}
+		return injector;
+	}
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this; // NOSONAR
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		plugin = null; // NOSONAR
+		injector = null;
+		super.stop(context);
+	}
+}
+
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/ExecutableExtensionFactory.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/ExecutableExtensionFactory.java
new file mode 100644
index 0000000..0d6269b
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/ExecutableExtensionFactory.java
@@ -0,0 +1,38 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+public class ExecutableExtensionFactory extends
+		AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return CoreUiActivator.getDefault().getBundle();
+	}
+
+	@Override
+	protected Injector getInjector() {
+		return CoreUiActivator.getDefault().getInjector();
+	}
+
+	public Object create() throws CoreException {
+		return super.create();
+	}
+
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/SharedStateContribution.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/SharedStateContribution.java
new file mode 100644
index 0000000..a5d9366
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/SharedStateContribution.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:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+ package org.eclipse.osbp.ide.core.ui.softwarefactory;
+
+import com.google.inject.Binder;
+import com.google.inject.Module;
+
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.Access;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.IModelExtenderProvider;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.ModelExtenderEventSource;
+
+/**
+ * The {@link IModelExtenderProvider.Event.Source} implemented by {@link ModelExtenderEventSource} works as communication 
+ * link between an Xtext builder and a model extender. After each piece of work of the extender, the builder must force
+ * a rebuild to update the Xtext index. After this, the extender workflow must be notified to continue its work with the next
+ * model to be extended. Modifies ResourceDescription deltas along with other dsl package properties are shared between the two
+ * parties.
+ * This class contributes bindings to the Xtext framework. This module is registered by
+ * plugin.xml. Xtext will use the bindings to create a child injector. <br>
+ * <br>
+ * Modules that want to use the singleton {@link IModelExtenderProvider.Event.Source} needs to add
+ * {@link Access#getIModelExtenderProvider()} in their module description. It will create
+ * a provider, that delegates to the extension cache. Then the
+ * {@link IModelExtenderProvider.Event.Source} will automatically become injected.<br>
+ * <br>
+ * If {@link IModelExtenderProvider.Event.Source} is requested, the injector will take a look into the
+ * extension registry. See
+ * {@link org.eclipse.xtext.ui.shared.Access#contributedProvider(Class)}. So
+ * only one instance is available at a time.
+ */
+
+public class SharedStateContribution implements Module {
+
+	@Override
+	public void configure(Binder binder) {
+		binder.bind(IModelExtenderProvider.Event.Source.class).to(
+				ModelExtenderEventSource.class);
+	}
+
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/api/CoreUtil.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/api/CoreUtil.java
new file mode 100644
index 0000000..ffd434d
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/api/CoreUtil.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:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ide.core.ui.softwarefactory.api;
+
+import org.eclipse.core.resources.ICommand;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.eclipse.osbp.ide.core.ui.softwarefactory.constants.Constants;
+
+public class CoreUtil {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(CoreUtil.class);
+
+	public static final String EVENT_TOPIC__BUILDER = "org/eclipse/osbp/ide/core/ui/softwarefactory/builder";
+
+	/**
+	 * Returns true, if the given project contains the OSBP Nature.
+	 * 
+	 * @param project
+	 * @return
+	 */
+	public static boolean hasNature(IProject project) {
+		try {
+			if (project.isAccessible()) {
+				return project.hasNature(Constants.NATURE_ID);
+			}
+		} catch (CoreException e) {
+			LOGGER.error(e.getMessage(), e);
+		}
+		return false;
+	}
+
+	/**
+	 * Returns true, if the given project contains the OSBP Builder.
+	 * 
+	 * @param project
+	 * @return
+	 */
+	public static boolean hasBuilder(IProject project) {
+		if (project.isAccessible()) {
+			try {
+				for (ICommand command : project.getDescription().getBuildSpec()) {
+					if (Constants.BUILDER_ID.equals(command.getBuilderName())) {
+						return true;
+					}
+				}
+			} catch (CoreException e) {
+				LOGGER.error("Can't build due to an exception.", e);
+			}
+		}
+		return false;
+	}
+
+}
+
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
new file mode 100644
index 0000000..566d306
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
@@ -0,0 +1,645 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.builder;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IResourceVisitor;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.ProgressMonitorWrapper;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.constants.Constants;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.IModelExtenderProvider;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.IModelExtenderProvider.Event.Listener;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.ModelExtendedEvent;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.ModelInstanceDescription;
+import org.eclipse.osbp.xtext.action.ActionModel;
+import org.eclipse.osbp.xtext.action.ActionPackage;
+import org.eclipse.osbp.xtext.action.ActionToolbar;
+import org.eclipse.osbp.xtext.action.DatainterchangeActionEnum;
+import org.eclipse.osbp.xtext.addons.EObjectHelper;
+import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationModel;
+import org.eclipse.osbp.xtext.authorizationdsl.Role;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeModel;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLFactory;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartModel;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.xtext.builder.builderState.IBuilderState;
+import org.eclipse.xtext.resource.IReferenceDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescription.Delta;
+import org.eclipse.xtext.resource.SaveOptions;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.ui.editor.findrefs.IReferenceFinder;
+import org.eclipse.xtext.ui.resource.IStorage2UriMapper;
+import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
+import org.eclipse.xtext.util.IAcceptor;
+import org.eclipse.xtext.util.Pair;
+import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+
+class DatamartMetadata {
+	IProject project;
+	Resource resource;
+	DatamartModel datamartModel;
+	List<DatamartEntity> trackingEntities;
+}
+
+public class OSBP2Builder extends IncrementalProjectBuilder {
+
+	public static final String BUILDER_ID = Constants.BUILDER_ID;
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(OSBP2Builder.class);
+
+	public final static String MODELS_BASE_SRC_DIRECTORY = "models";
+	public final static String SOURCE_BASE_SRC_DIRECTORY = "src";
+
+	public final static String ENTITY_MODEL_EXTENSION = "entity";
+	public final static String AUTHORIZATION_MODEL_EXTENSION = "authorization";
+	public final static String DATAMART_MODEL_EXTENSION = "datamart";
+	public final static String DATAINTERCHANGE_MODEL_EXTENSION = "data";
+	public final static String DTO_MODEL_EXTENSION = "dto";
+	public final static String SERVICE_MODEL_EXTENSION = "service";
+	public final static String ACTION_MODEL_EXTENSION = "action";
+	public final static String TABLE_MODEL_EXTENSION = "table";
+	public final static String DIALOG_MODEL_EXTENSION = "dialog";
+	public final static String UIMODEL_MODEL_EXTENSION = "ui";
+	public final static String PERSPECTIVE_MODEL_EXTENSION = "perspective";
+	public final static String MENU_MODEL_EXTENSION = "menu";
+
+	@Inject
+	private XtextResourceSetProvider rsProvider;
+
+	@SuppressWarnings("restriction")
+	@Inject
+	private IReferenceFinder referenceFinder;
+
+	@Inject
+	private IStorage2UriMapper uriStorageMapper;
+
+	@Inject
+	private IModelExtenderProvider.Event.Source modelExtenderBuilder;
+
+	private boolean firstBuild = true;
+
+	@Override
+	protected IProject[] build(int kind, Map<String, String> args,
+			IProgressMonitor monitor) throws CoreException {
+		LOGGER.info("build started for " + getProject());
+		long startTime = System.currentTimeMillis();
+		SubMonitor progress = null;
+
+		boolean isModelExtending = false;
+		List<String> extensionsRebuilt = new CopyOnWriteArrayList<String>();
+		for (String fileExtension : modelExtenderBuilder.getPending()) {
+			for (Listener listener : modelExtenderBuilder.getListenerList()) {
+				Map<String, ModelInstanceDescription> modelInstanceDecriptionMap = modelExtenderBuilder
+						.getModelInstanceDescriptionMap(listener);
+				isModelExtending = true;
+				for (String extension : modelInstanceDecriptionMap.keySet()) {
+					if (extension.equals(fileExtension)
+							&& modelInstanceDecriptionMap.get(extension)
+									.getProject().equals(getProject())
+							&& modelInstanceDecriptionMap.get(extension)
+									.isDone()
+							&& !modelInstanceDecriptionMap.get(extension)
+									.isBuilt()) {
+						LOGGER.debug("rebuild for " + extension);
+						modelInstanceDecriptionMap.get(extension)
+								.setBuilt(true);
+						needRebuild();
+						extensionsRebuilt.add(extension);
+						modelExtenderBuilder.getPending().remove(fileExtension);
+					}
+				}
+			}
+		}
+
+		if (!isModelExtending) { // this disturbs the model extender workflow
+			try {
+				final String taskName = "Building" + getProject().getName()
+						+ ": "; //$NON-NLS-1$
+				progress = SubMonitor.convert(new ProgressMonitorWrapper(
+						monitor) { // NOSONAR - lambda
+							@Override
+							public void subTask(String name) { // NOSONAR
+								super.subTask(taskName + name);
+							}
+						}, 8);
+				if (kind == FULL_BUILD || firstBuild) {
+					firstBuild = false;
+					fullBuild(progress.newChild(1));
+				} else {
+					IResourceDelta delta = getDelta(getProject());
+					if (delta == null || isOpened(delta)) {
+						fullBuild(progress.newChild(1));
+					} else {
+						incrementalBuild(delta, progress.newChild(1));
+					}
+				}
+				progress.worked(8);
+			} catch (CoreException e) {
+				LOGGER.error(e.getMessage(), e);
+				throw e;
+			} catch (OperationCanceledException e) {
+				forgetLastBuiltState();
+				throw e;
+			} catch (Exception e) {
+				LOGGER.error(e.getMessage(), e);
+			} finally {
+				if (progress != null) {
+					progress.done();
+				}
+				LOGGER.info("Build " + getProject().getName() + " in "
+						+ (System.currentTimeMillis() - startTime) + " ms");
+			}
+		}
+		if (extensionsRebuilt.size() > 0) {
+			for (String extension : extensionsRebuilt) {
+				LOGGER.debug("extending finished for " + extension);
+				modelExtenderBuilder
+						.notifyListeners(new ModelExtendedEvent(extension));
+			}
+		}
+		return getProject().getReferencedProjects();
+	}
+
+	private boolean checkFolder(IFolder folder) { // NOSONAR - complexity
+		if (MODELS_BASE_SRC_DIRECTORY.equals(folder.getName())) {
+			return true;
+		}
+		if (SOURCE_BASE_SRC_DIRECTORY.equals(folder.getName())) {
+			return true;
+		}
+		return false;
+	}
+
+	private boolean checkFile(IFile file) {
+		if (file.getFileExtension() != null) {
+			try {
+				if (file.getFileExtension().equals(ENTITY_MODEL_EXTENSION)) {
+					modifyModel(file);
+					touchReferenced(file);
+				}
+				if (file.getFileExtension().equals(AUTHORIZATION_MODEL_EXTENSION)) {
+					touchReferenced(file);
+				}
+				if (file.getFileExtension().equals(DATAMART_MODEL_EXTENSION)) {
+					touchReferenced(file);
+				}
+				if (file.getFileExtension().equals(ACTION_MODEL_EXTENSION)) {
+					touchReferenced(file);
+				}
+				if (file.getFileExtension().equals(DATAINTERCHANGE_MODEL_EXTENSION)) {
+					touchReferenced(file);
+				}
+			} catch (IOException e) { // NOSONAR - is logged
+				LOGGER.error(e.getLocalizedMessage());
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * @param monitor
+	 *            the progress monitor to use for reporting progress to the
+	 *            user. It is the caller's responsibility to call done() on the
+	 *            given monitor. Accepts null, indicating that no progress
+	 *            should be reported and that the operation cannot be cancelled.
+	 */
+	protected void incrementalBuild(IResourceDelta delta,
+			final IProgressMonitor monitor) throws CoreException {
+		final SubMonitor progress = SubMonitor.convert(monitor,
+				"Updating references", 4);
+		progress.subTask("Updating references");
+		if (progress.isCanceled())
+			throw new OperationCanceledException();
+		progress.worked(2);
+
+		IProject project = getProject();
+		if (!project.getDescription().hasNature(Constants.NATURE_ID)) {
+			return;
+		}
+
+		delta.accept(new IResourceDeltaVisitor() { // NOSONAR - anonymous to
+													// lambda
+			@Override
+			public boolean visit(IResourceDelta delta) throws CoreException {
+				if (progress.isCanceled()) {
+					throw new OperationCanceledException();
+				}
+				if (delta.getResource() instanceof IProject) {
+					return delta.getResource() == getProject();
+				} else if (delta.getResource() instanceof IFolder) {
+					return checkFolder((IFolder) delta.getResource());
+				} else if (delta.getResource() instanceof IFile) {
+					return checkFile((IFile) delta.getResource());
+				}
+				return false;
+			}
+		});
+
+		if (progress.isCanceled())
+			throw new OperationCanceledException();
+		progress.worked(4);
+
+	}
+
+	/**
+	 * @param monitor
+	 *            the progress monitor to use for reporting progress to the
+	 *            user. It is the caller's responsibility to call done() on the
+	 *            given monitor. Accepts null, indicating that no progress
+	 *            should be reported and that the operation cannot be cancelled.
+	 */
+	protected void fullBuild(final IProgressMonitor monitor)
+			throws CoreException {
+
+		IProject project = getProject();
+		if (!project.getDescription().hasNature(Constants.NATURE_ID)) {
+			return;
+		}
+
+		monitor.worked(2);
+		project.accept(new IResourceVisitor() {
+			@Override
+			// NOSONAR - anonymous to lambda
+			public boolean visit(IResource resource) throws CoreException {
+				if (resource == getProject()) {
+					return true;
+				} else if (resource instanceof IFolder) {
+					return checkFolder((IFolder) resource);
+				} else if (resource instanceof IFile) {
+					return checkFile((IFile) resource);
+				}
+				return false;
+			}
+		});
+		monitor.worked(6);
+	}
+
+	/**
+	 * touches all model resources referencing this root model resource file
+	 * 
+	 * @param modifiedFile
+	 */
+	protected void touchReferenced(IFile modifiedFile) throws IOException { // NOSONAR
+																			// -
+																			// complexity
+
+		if (modifiedFile == null) {
+			LOGGER.error("Skipping build since modifiedFile is null!");
+			return;
+		}
+
+		EObject model = loadSemanticModel(modifiedFile);
+		if (model == null) {
+			LOGGER.error("Skipping build since SemanticModel could not be loaded from "
+					+ modifiedFile.getName());
+			return;
+		}
+
+		if (model instanceof AuthorizationModel) {
+			AuthorizationModel authorizationModel = (AuthorizationModel) model;
+			Set<URI> roles = new HashSet<>();
+			for (Role role : authorizationModel.getPckg().getRoles()) {
+				roles.add(EcoreUtil.getURI(role));
+			}
+			touchReferencingModel(modifiedFile.getName(), roles, model
+					.eResource().getResourceSet());
+		}
+
+		if (model instanceof DatamartModel) {
+			DatamartModel datamartModel = (DatamartModel) model;
+			Set<URI> datamarts = new HashSet<>();
+			for (DatamartPackage datamartPkg : datamartModel.getPackages()) {
+				for (DatamartDefinition datamart : datamartPkg
+						.getDefinitions()) {
+					datamarts.add(EcoreUtil.getURI(datamart));
+				}
+			}
+			touchReferencingModel(modifiedFile.getName(), datamarts, model
+					.eResource().getResourceSet());
+		}
+		if (model instanceof ActionModel) {
+			ActionModel actionModel = (ActionModel) model;
+			Set<URI> actionToolbars = new HashSet<>();
+			for (ActionPackage actionPkg : actionModel.getPackages()) {
+				for (ActionToolbar actionToolbar : actionPkg.getToolbars()) {
+					actionToolbars.add(EcoreUtil.getURI(actionToolbar)); // NOSONAR
+				}
+			}
+			touchReferencingModel(modifiedFile.getName(), actionToolbars, model
+					.eResource().getResourceSet());
+		}
+		if (model instanceof DataInterchangeModel) {
+			DataInterchangeModel dataInterchangeModel = (DataInterchangeModel) model;
+			Set<URI> dataInterchanges = new HashSet<>();
+			for (DataInterchangePackage actionPkg : dataInterchangeModel.getPackages()) {
+				for (DataInterchange dataInterchange : actionPkg.getDatInts()) {
+					dataInterchanges.add(EcoreUtil.getURI(dataInterchange)); // NOSONAR
+				}
+			}
+			touchReferencingModel(modifiedFile.getName(), dataInterchanges, model
+					.eResource().getResourceSet());
+		}
+	}
+
+	@SuppressWarnings("restriction")
+	protected void touchReferencingModel(String triggerModel, Set<URI> items,
+			ResourceSet sourceResourceSet) {
+		final List<IReferenceDescription> referenceTargets = new ArrayList<>();
+		referenceFinder.findAllReferences(items, new LocalResourceAccess(
+				sourceResourceSet), new IAcceptor<IReferenceDescription>() {
+			@Override
+			public void accept(IReferenceDescription t) {
+				if (!referenceTargets.contains(t)) {
+					referenceTargets.add(t);
+				}
+			}
+		}, null);
+
+		List<Resource> affectedResources = new LinkedList<>();
+		Map<IProject, XtextResourceSet> targetResourceSets = new HashMap<>();
+		for (IReferenceDescription desc : referenceTargets) {
+			IProject project = null;
+			Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper
+					.getStorages(desc.getSourceEObjectUri());
+			if (pairs.iterator().hasNext()) {
+				project = pairs.iterator().next().getSecond();
+			}
+
+			if (project == null) {
+				LOGGER.error("No project could be found for "
+						+ desc.getSourceEObjectUri());
+				continue;
+			}
+
+			XtextResourceSet resourceSet;
+			if (targetResourceSets.containsKey(project)) {
+				resourceSet = targetResourceSets.get(project);
+			} else {
+				resourceSet = (XtextResourceSet) rsProvider.get(getProject());
+				targetResourceSets.put(project, resourceSet);
+			}
+
+			// load the resource by the resource set
+			Resource modelResource = resourceSet.getResource(desc
+					.getSourceEObjectUri().trimFragment(), true);
+			if (!affectedResources.contains(modelResource)) {
+				affectedResources.add(modelResource);
+			}
+		}
+		try {
+			for (Resource resource : affectedResources) {
+				LOGGER.info("writing from " + triggerModel
+						+ " affected resource "
+						+ resource.getURI().lastSegment());
+				resource.save(SaveOptions.newBuilder().format().getOptions()
+						.toOptionsMap());
+				LOGGER.info("finished writing from " + triggerModel
+						+ " affected resource "
+						+ resource.getURI().lastSegment());
+			}
+		} catch (IOException e) {
+			LOGGER.error("{}", e);
+		}
+	}
+
+	/**
+	 * Modifies the datamart model for which the changed entity model has a
+	 * tracking reference match.
+	 * 
+	 * @param modifiedFile
+	 */
+	@SuppressWarnings("restriction")
+	protected void modifyModel(IFile modifiedFile) throws IOException {
+		if (modifiedFile == null) {
+			LOGGER.error("Skipping datamart build since 'modifiedFile' is null!");
+			return;
+		}
+
+		LEntityModel lEntityModel = loadSemanticModel(modifiedFile);
+		if (lEntityModel == null) {
+			LOGGER.error("Skipping datamart build since SemanticModel can not be loaded from file "
+					+ modifiedFile.getName());
+			return;
+		}
+
+		Set<URI> entities = new HashSet<>();
+		for (LTypedPackage lPkg : lEntityModel.getPackages()) {
+			for (LType lType : lPkg.getTypes()) {
+				if (lType instanceof LEntity) {
+					entities.add(EcoreUtil.getURI(lType));
+				}
+			}
+		}
+
+		final List<IReferenceDescription> referenceTargets = new ArrayList<>();
+		referenceFinder.findAllReferences(entities, new LocalResourceAccess(
+				lEntityModel.eResource().getResourceSet()),
+				new IAcceptor<IReferenceDescription>() {
+					@Override
+					public void accept(IReferenceDescription t) {
+						if (t.getEReference() == DatamartDSLPackage.Literals.DATAMART_ENTITY__ENTITY_REF) {
+							referenceTargets.add(t);
+						}
+					}
+				}, null);
+
+		List<Resource> affectedResources = new LinkedList<>();
+		Map<IProject, XtextResourceSet> datamartResourceSets = new HashMap<>();
+		for (IReferenceDescription desc : referenceTargets) {
+			IProject datamartProject = null;
+			Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper
+					.getStorages(desc.getSourceEObjectUri());
+			if (pairs.iterator().hasNext()) {
+				datamartProject = pairs.iterator().next().getSecond();
+			}
+
+			if (datamartProject == null) {
+				LOGGER.error("No project could be found for "
+						+ desc.getSourceEObjectUri());
+				continue;
+			}
+
+			XtextResourceSet resourceSet;
+			if (datamartResourceSets.containsKey(datamartProject)) {
+				resourceSet = datamartResourceSets.get(datamartProject);
+			} else {
+				resourceSet = (XtextResourceSet) rsProvider.get(getProject());
+				datamartResourceSets.put(datamartProject, resourceSet);
+			}
+
+			// load the resource by the resource set
+			Resource datamartModelResource = resourceSet.getResource(desc
+					.getSourceEObjectUri().trimFragment(), true);
+			DatamartEntity dmEntity = (DatamartEntity) EObjectHelper
+					.getSemanticElement(datamartModelResource, desc
+							.getSourceEObjectUri().fragment());
+
+			if (!dmEntity.isTracking()) {
+				continue;
+			}
+
+			if (!affectedResources.contains(datamartModelResource)) {
+				affectedResources.add(datamartModelResource);
+			}
+
+			// clear properties section
+			DatamartDSLFactory dmFactory = DatamartDSLFactory.eINSTANCE;
+			EList<DatamartProperty> properties = dmEntity
+					.getProperties();
+			if (properties != null) {
+				properties.clear();
+				// rebuild properties section
+				for (LEntityAttribute eAttr : dmEntity.getEntityRef()
+						.getAllAttributes()) {
+					if (!eAttr.isId() && !eAttr.isUuid()) {
+						DatamartProperty property = dmFactory
+								.createDatamartProperty();
+						property.setAggregated(false);
+						property.setFiltered(false);
+						property.setOptional(false);
+						property.setScaled(false);
+						property.setSelected(false);
+						property.setPlaced(true);
+						property.setAxis(AxisEnum.COLUMNS);
+						property.setPropertyRef(eAttr);
+						properties.add(property);
+					}
+				}
+			}
+		}
+
+		try {
+			LOGGER.info("writing datamart");
+			for (Resource resource : affectedResources) {
+				resource.save(SaveOptions.newBuilder().format().getOptions()
+						.toOptionsMap());
+			}
+			LOGGER.info("finished writing datamart");
+		} catch (IOException e) {
+			LOGGER.error("{}", e);
+		}
+	}
+
+	/**
+	 * Returns the entityModel which is to be build, identified by file.
+	 * 
+	 * @param file
+	 * @return
+	 */
+	protected <A extends EObject> A loadSemanticModel(IFile file) {
+		LOGGER.info("loading:" + file.getName());
+		org.eclipse.emf.common.util.URI entityDSLURI = org.eclipse.emf.common.util.URI
+				.createPlatformResourceURI(file.getFullPath().toString(), false);
+		XtextResourceSet rs = (XtextResourceSet) rsProvider.get(getProject());
+		Resource entityResource = rs.getResource(entityDSLURI, true);
+		try {
+			entityResource.load(null);
+		} catch (IOException e) { // NOSONAR - is logged
+			LOGGER.error(e.getLocalizedMessage());
+			return null;
+		}
+		@SuppressWarnings("unchecked")
+		A entityModel = (A) EObjectHelper.getSemanticElement(entityResource);
+		LOGGER.info("finished loading:" + file.getName());
+		return entityModel;
+	}
+
+	/**
+	 * Returns true, if delta is from our projectentity is contained in
+	 * entityModel.
+	 * 
+	 * @param entity
+	 * @param entityModel
+	 * @return
+	 */
+	protected boolean isOpened(IResourceDelta delta) {
+		return delta.getResource() instanceof IProject
+				&& (delta.getFlags() & IResourceDelta.OPEN) != 0
+				&& ((IProject) delta.getResource()).isOpen();
+	}
+
+	@Override
+	protected void clean(IProgressMonitor monitor) throws CoreException {
+		if (monitor != null) {
+			monitor.done();
+		}
+	}
+
+	public static class LocalResourceAccess implements
+			IReferenceFinder.ILocalResourceAccess {
+
+		private ResourceSet resourceSet;
+
+		public LocalResourceAccess(ResourceSet resourceSet) {
+			this.resourceSet = resourceSet;
+		}
+
+		public <R> R readOnly(URI targetURI, IUnitOfWork<R, ResourceSet> work) {
+			try {
+				return work.exec(resourceSet);
+			} catch (OperationCanceledException e) {
+				throw e;
+			} catch (Exception exc) {
+				throw new WrappedException(exc);
+			}
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/constants/Constants.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/constants/Constants.java
new file mode 100644
index 0000000..5a2c7d1
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/constants/Constants.java
@@ -0,0 +1,18 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.constants;
+
+public class Constants {
+	public static final String NATURE_ID = "org.eclipse.osbp.ide.core.ui.softwarefactory.OSBP2Nature";
+	public static final String BUILDER_ID = "org.eclipse.osbp.ide.core.ui.softwarefactory.OSBP2Builder";
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/Access.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/Access.java
new file mode 100644
index 0000000..2a4fbde
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/Access.java
@@ -0,0 +1,22 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import com.google.inject.Provider;
+
+public class Access extends org.eclipse.xtext.ui.shared.Access {
+
+	public static Provider<IModelExtenderProvider.Event.Source> getIModelExtenderProvider() {
+		return Access.<IModelExtenderProvider.Event.Source> contributedProvider(IModelExtenderProvider.Event.Source.class);
+	}
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
new file mode 100644
index 0000000..44828ce
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
@@ -0,0 +1,53 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+
+public abstract class BaseExtender {
+	@Inject
+	protected XtextResourceSetProvider 		provider;
+	@Inject
+	protected IResourceDescriptions 		descs;
+
+	protected static final Logger LOGGER = LoggerFactory
+			.getLogger(BaseExtender.class);
+	protected IModelExtenderAdapter adapter;
+	protected Map<String, ModelInstanceDescription> packageDeltas = new HashMap<String, ModelInstanceDescription>();
+	protected String extension;
+
+	public BaseExtender(IModelExtenderAdapter adapter, String extension) {
+		this.adapter = adapter;
+		this.extension = extension;
+	}
+
+	protected abstract boolean extendModel(Map<String, ModelInstanceDescription> packageDeltas);
+
+	public String getExtension() {
+		return extension;
+	}
+
+	public IModelExtenderAdapter getAdapter() {
+		return adapter;
+	}
+	
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
new file mode 100644
index 0000000..9dd7a91
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
@@ -0,0 +1,32 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import java.util.Map;
+
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.ModelExtenderUtils.DataType;
+import org.eclipse.osbp.xtext.builder.ui.access.IXtextUtilService;
+
+public interface IModelExtenderAdapter {
+	String getIdentifier();
+	String getFileName();
+	String getModelPath(String modelExtension);
+	String getPersistenceUnit();
+	Map<String, DataType> getColInfo();
+	char getCustomDelimiter();
+	char getTextQualifier();
+	Map<String, String> getAttributeMap();
+	void setAttributeMap(Map<String, String> attributeMap);
+	void setXtextUtilService(IXtextUtilService xtextUtilService);
+	IXtextUtilService getXtextUtilService();
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
new file mode 100644
index 0000000..068e4fb
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
@@ -0,0 +1,40 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+public interface IModelExtenderProvider {
+	interface Event {
+		String getExtension();
+		interface Source {
+			void addListener(Listener listener);
+			void removeListener(Listener listener);
+			void notifyListeners(IModelExtenderProvider.Event event);
+			Collection<IModelExtenderProvider.Event.Listener> getListenerList();
+			void addExtension(IModelExtenderProvider.Event.Listener listener, String extension, IModelExtenderAdapter adapter) throws Exception;
+			void addExtension(IModelExtenderProvider.Event.Listener listener, BaseExtender baseExtender) throws Exception;
+			Map<String, ModelInstanceDescription> getModelInstanceDescriptionMap(IModelExtenderProvider.Event.Listener listener);
+			Set<String> getPending();
+		}
+	
+		/**
+		 * A listener for events raised by a {@link Event.Source}.
+		 */
+		interface Listener {
+			void modelExtended(Event event);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtendedEvent.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtendedEvent.java
new file mode 100644
index 0000000..2517fa8
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtendedEvent.java
@@ -0,0 +1,28 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+public class ModelExtendedEvent implements IModelExtenderProvider.Event {
+
+	private String extension;
+	
+	public ModelExtendedEvent(String extension) {
+		this.extension = extension;
+	}
+
+	@Override
+	public String getExtension() {
+		return extension;
+	}
+
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
new file mode 100644
index 0000000..7182f0f
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
@@ -0,0 +1,193 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.builder.OSBP2Builder;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.IModelExtenderProvider.Event.Listener;
+import org.eclipse.xtext.builder.builderState.IBuilderState;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescription.Delta;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class ModelExtenderEventSource implements IModelExtenderProvider.Event.Source, IResourceDescription.Event.Listener {
+
+	private CopyOnWriteArraySet<IModelExtenderProvider.Event.Listener> listenerList;
+	private ConcurrentHashMap<IModelExtenderProvider.Event.Listener, ConcurrentHashMap<String, ModelInstanceDescription>> packageDeltaMap;
+	private Set<String> pending = new CopyOnWriteArraySet<String>();
+
+	/** The adapter. */
+	private IModelExtenderAdapter adapter;
+
+	@Inject
+	protected IWorkspace workspace;
+
+	@Inject
+	private IBuilderState builderState;
+
+	@Inject
+	public ModelExtenderEventSource() {
+		listenerList = new CopyOnWriteArraySet<IModelExtenderProvider.Event.Listener>();
+		packageDeltaMap = new ConcurrentHashMap<IModelExtenderProvider.Event.Listener, ConcurrentHashMap<String, ModelInstanceDescription>>();
+	}
+
+	@Override
+	public void addListener(IModelExtenderProvider.Event.Listener listener) {
+		packageDeltaMap.put(listener, new ConcurrentHashMap<String, ModelInstanceDescription>());
+		listenerList.add(listener);
+		// request builderstate notification
+		builderState.addListener(this);
+	}
+
+	@Override
+	public void removeListener(IModelExtenderProvider.Event.Listener listener) {
+		listenerList.remove(listener);
+		packageDeltaMap.remove(listener);
+		builderState.removeListener(this);
+	}
+
+	public ConcurrentHashMap<IModelExtenderProvider.Event.Listener, ConcurrentHashMap<String, ModelInstanceDescription>> getPackageDeltaMap() {
+		return packageDeltaMap;
+	}
+
+	public void setPackageDeltaMap(
+			ConcurrentHashMap<IModelExtenderProvider.Event.Listener, ConcurrentHashMap<String, ModelInstanceDescription>> packageDeltaMap) {
+		this.packageDeltaMap = packageDeltaMap;
+	}
+
+	public Collection<IModelExtenderProvider.Event.Listener> getListenerList() {
+		return listenerList;
+	}
+
+	@Override
+	public void notifyListeners(IModelExtenderProvider.Event event) {
+		if (event == null)
+			throw new IllegalArgumentException("event may not be null");
+		for (IModelExtenderProvider.Event.Listener listener : listenerList) {
+			listener.modelExtended(event);
+		}
+	}
+
+	@Override
+	public void addExtension(Listener listener, BaseExtender baseExtender) throws Exception {
+		addExtension(listener, baseExtender.getExtension(), baseExtender.getAdapter());
+	}
+
+	@Override
+	public void addExtension(IModelExtenderProvider.Event.Listener listener, String extension, IModelExtenderAdapter adapter) throws Exception {
+		this.adapter = adapter;
+		ModelInstanceDescription pd = new ModelInstanceDescription();
+		String projectPath = adapter.getModelPath(extension);
+		pd.setModelPath(projectPath);
+		if (projectPath != null) {
+			URI path = URI.createFileURI(projectPath);
+			// find the bundle segment
+			for (IProject proj : workspace.getRoot().getProjects()) {
+				String modelFile = null;
+				for (int i = 0; i < path.segmentCount(); i++) {
+					if (modelFile != null) {
+						modelFile += "/" + path.segment(i);
+					}
+					if (proj.getName().equals(path.segment(i))) {
+						pd.setProject(proj);
+						modelFile = "";
+					}
+				}
+				if (modelFile != null) {
+					pd.setModelFile(modelFile);
+					break;
+				}
+			}
+			try {
+				pd.setModelURI(URI.createPlatformResourceURI(pd.getProject().getFullPath().toString() + pd.getModelFile(), false));
+			} catch (NullPointerException npe){
+				throw new Exception("No project found for the extension: '" + extension + "'. \nPossible reasons: \n1. Incorrect path to the model. \n2. Not existing bundle containing this model.");
+			}
+		}
+		packageDeltaMap.get(listener).put(extension, pd);
+	}
+
+	@Override
+	public Map<String, ModelInstanceDescription> getModelInstanceDescriptionMap(IModelExtenderProvider.Event.Listener listener) {
+		return packageDeltaMap.get(listener);
+	}
+
+	@Override
+	public Set<String> getPending() {
+		return pending;
+	}
+
+	@Override
+	public void descriptionsChanged(org.eclipse.xtext.resource.IResourceDescription.Event event) {
+		Map<String, IResourceDescription> toBeRebuilt = new HashMap<String, IResourceDescription>();
+		for (Delta delta : event.getDeltas()) {
+			if ((delta.haveEObjectDescriptionsChanged() && delta.getNew() != null) || authorizationChanged(delta)) {
+				toBeRebuilt.put(delta.getUri().fileExtension(), delta.getNew());
+			}
+		}
+		for (String extension : toBeRebuilt.keySet()) {
+			for (Listener listener : getListenerList()) {
+				Map<String, ModelInstanceDescription> modelInstanceDecriptionMap = getModelInstanceDescriptionMap(listener);
+				if (modelInstanceDecriptionMap.containsKey(extension)) {
+					if (modelInstanceDecriptionMap.get(extension).isDone()) {
+						if (!modelInstanceDecriptionMap.get(extension).isBuilt()) {
+							modelInstanceDecriptionMap.get(extension).setResourceDescription(toBeRebuilt.get(extension));
+							if (!contains(extension)) {
+								pending.add(extension);
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	boolean authorizationChanged(Delta delta) {
+		if (delta.getUri().fileExtension().contains(OSBP2Builder.AUTHORIZATION_MODEL_EXTENSION)) {
+			return (contains(delta.getNew().getImportedNames()) && !contains(delta.getOld().getImportedNames()));
+		}
+		return false;
+	}
+
+	boolean contains(Iterable<QualifiedName> iterable) {
+		String identifier = adapter.getIdentifier().toLowerCase();
+		for (QualifiedName qn : iterable) {
+			boolean idFound = qn.getLastSegment().contains(identifier);
+			if (idFound)
+				return idFound;
+		}
+		return false;
+	}
+
+	boolean contains(String extension) {
+		for (String ext : pending) {
+			if (ext.equals(extension)) {
+				return true;
+			}
+		}
+		return false;
+	}
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderModule.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderModule.java
new file mode 100644
index 0000000..f8211d1
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderModule.java
@@ -0,0 +1,24 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import org.eclipse.xtext.service.AbstractGenericModule;
+
+import com.google.inject.Provider;
+
+public class ModelExtenderModule extends AbstractGenericModule {
+
+	public Provider<IModelExtenderProvider.Event.Source> provideModelExtenderEventSource() {
+		return Access.getIModelExtenderProvider();
+	}
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
new file mode 100644
index 0000000..cc2cd44
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
@@ -0,0 +1,149 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import java.io.IOException;
+import java.text.Normalizer;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.SaveOptions;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.eclipse.osbp.xtext.addons.EObjectHelper;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.services.DatamartDSLGrammarAccess;
+
+public class ModelExtenderUtils {
+	public static enum	DataType	{ NONE("none"), DOUBLE("double"), DOUBLECOLON("double"), INT("int"), TEXT("String"), DATE("date"), BOOLEAN("boolean"); 
+		private String value;
+	
+	    private DataType(String value) {
+	            this.value = value;
+	    }
+	
+		public String getValue() {
+			return value;
+		}
+	};   
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(ModelExtenderUtils.class);
+
+	// persist the modified model
+	public static void writeModel(EObject model, String id) {
+		try {
+			LOGGER.info("running diagnostic for "+id);
+			Diagnostic diagnostic = Diagnostician.INSTANCE
+					.validate(model.eResource().getContents().get(0));
+			int sev = diagnostic.getSeverity();
+			if (sev <= Diagnostic.WARNING) {
+				LOGGER.info("writing "+id);
+				model.eResource().save(
+						SaveOptions.newBuilder().format().getOptions()
+								.toOptionsMap());
+			} else {
+				LOGGER.error(model.eResource().getErrors().get(0)
+						.toString());
+			}
+			LOGGER.info("finished writing "+id);
+		} catch (IOException e) {
+			LOGGER.error("{}", e);
+		}
+	}
+	
+	// get a name without characters from locale anomaly or punctuation, replace blanks with underscores
+	// avoid some keywords
+	public static String normalizeName(String name) {
+		String normalized = Normalizer.normalize(name, Normalizer.Form.NFKD).toLowerCase().replaceAll("[^a-z0-9 ]", "").replace(" ", "_");
+		if(normalized.toLowerCase().equals("description")) {
+			normalized = "_"+normalized;
+		}
+		return normalized;
+	}
+	
+	// get an EObject from a full qualified datatype name
+	public static EObject findAllEObject(IResourceDescriptions descs, EClass type, String fqn) {
+		Iterable<IEObjectDescription> result = descs.getExportedObjects(type, QualifiedName.create(fqn.split("\\.")), true);
+		if(result.iterator().hasNext()) {
+			IEObjectDescription desc = result.iterator().next();
+			return desc.getEObjectOrProxy();
+		}
+		return null;
+	}
+
+	// get an EObject list
+	public static boolean findAllEObjects(IResourceDescriptions descs, EClass type, List<EObject> objects) {
+		Iterable<IEObjectDescription> result = descs.getExportedObjectsByType(type);
+		Iterator<IEObjectDescription> iter = result.iterator();
+		while(iter.hasNext()) {
+			IEObjectDescription desc = iter.next();
+			objects.add(desc.getEObjectOrProxy());
+		}
+		return objects.size()>0;
+	}
+
+	// get an EObject from a full qualified datatype name
+	public static EObject findEObject(IResourceDescription descs, EClass type, String fqn) {
+		Iterable<IEObjectDescription> result = descs.getExportedObjects(type, QualifiedName.create(fqn.split("\\.")), true);
+		if(result.iterator().hasNext()) {
+			IEObjectDescription desc = result.iterator().next();
+			return desc.getEObjectOrProxy();
+		}
+		return null;
+	}
+	
+	// get all EObjects from a class
+	public static boolean findEObjects(IResourceDescription descs, EClass type, List<EObject> objects) {
+		Iterable<IEObjectDescription> result = descs.getExportedObjectsByType(type);
+		Iterator<IEObjectDescription> iter = result.iterator();
+		while(iter.hasNext()) {
+			IEObjectDescription desc = iter.next();
+			objects.add(desc.getEObjectOrProxy());
+		}
+		return objects.size()>0;
+	}
+	
+	/**
+	 * Returns the model which is to be modified, identified by projectPath.
+	 * 
+	 * @param projectPath
+	 * @return
+	 */
+	public static <A extends EObject> A loadSemanticModel(ModelInstanceDescription packageDelta, XtextResourceSetProvider provider) {
+		LOGGER.info("loading:" + packageDelta.getProject().getName());
+		XtextResourceSet rs = (XtextResourceSet) provider.get(packageDelta.getProject());
+		Resource modelResource = rs.getResource(packageDelta.getModelURI(), true);
+		try {
+			modelResource.load(null);
+		} catch (IOException e) {
+			LOGGER.error(e.getLocalizedMessage());
+			return null;
+		}
+		@SuppressWarnings("unchecked")
+		A model = (A) EObjectHelper.getSemanticElement(modelResource);
+		LOGGER.info("finished loading:" + packageDelta.getProject().getName());
+		return model;
+	}
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
new file mode 100644
index 0000000..f004fca
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
@@ -0,0 +1,84 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.extender;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescription.Delta;
+
+public class ModelInstanceDescription {
+	private String packageName;
+	private IResourceDescription resourceDescription;
+	private String modelPath;
+	private IProject project;
+	private String modelFile;
+	private URI modelURI;
+	private boolean done = false;
+	private boolean built = false;
+
+	public ModelInstanceDescription() {
+		this.resourceDescription = null;
+		this.packageName = null;
+		this.setDone(false);
+	}
+	public String getPackageName() {
+		return packageName;
+	}
+	public void setPackageName(String packageName) {
+		this.packageName = packageName;
+	}
+	public IResourceDescription getResourceDescription() {
+		return resourceDescription;
+	}
+	public void setResourceDescription(IResourceDescription resourceDescription) {
+		this.resourceDescription = resourceDescription;
+	}
+	public boolean isDone() {
+		return done;
+	}
+	public void setDone(boolean done) {
+		this.done = done;
+	}
+	public String getModelPath() {
+		return modelPath;
+	}
+	public void setModelPath(String modelPath) {
+		this.modelPath = modelPath;
+	}
+	public IProject getProject() {
+		return project;
+	}
+	public void setProject(IProject project) {
+		this.project = project;
+	}
+	public String getModelFile() {
+		return modelFile;
+	}
+	public void setModelFile(String modelFile) {
+		this.modelFile = modelFile;
+	}
+	public URI getModelURI() {
+		return modelURI;
+	}
+	public void setModelURI(URI modelURI) {
+		this.modelURI = modelURI;
+	}
+	public boolean isBuilt() {
+		return built;
+	}
+	public void setBuilt(boolean built) {
+		this.built = built;
+	}
+}
+
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/nature/OSBP2Nature.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/nature/OSBP2Nature.java
new file mode 100644
index 0000000..e889245
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/nature/OSBP2Nature.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:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ide.core.ui.softwarefactory.nature;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.ICommand;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IProjectNature;
+import org.eclipse.core.runtime.CoreException;
+
+import org.eclipse.osbp.ide.core.ui.softwarefactory.builder.OSBP2Builder;
+import org.eclipse.osbp.ide.core.ui.softwarefactory.constants.Constants;
+
+public class OSBP2Nature implements IProjectNature {
+
+	public static String NATURE_ID = Constants.NATURE_ID;
+
+	private IProject project;
+
+	public void configure() throws CoreException {
+		IProjectDescription desc = project.getDescription();
+		ICommand[] commands = desc.getBuildSpec();
+
+		List<ICommand> temp = new ArrayList<ICommand>(Arrays.asList(commands));
+		if (!contains(temp, OSBP2Builder.BUILDER_ID)) {
+			ICommand command = desc.newCommand();
+			command.setBuilderName(OSBP2Builder.BUILDER_ID);
+			temp.add(command);
+		}
+
+		temp.sort(new Comparator<ICommand>() {
+			@Override
+			public int compare(ICommand o1, ICommand o2) {
+				return getIndex(o1.getBuilderName())
+						- getIndex(o2.getBuilderName());
+			}
+
+			private int getIndex(String bsn) {
+				if (bsn.equals("org.eclipse.xtext.ui.shared.xtextBuilder")) {
+					return 0;
+				} else if (bsn.startsWith("org.eclipse.osbp")) {
+					return 1;
+				} else if (bsn.startsWith("org.eclipse.osbp")) {
+					return 2;
+				} else if (bsn.equals("org.eclipse.jdt.core.javabuilder")) {
+					return 3;
+				}
+				return 3;
+			}
+
+		});
+		
+		desc.setBuildSpec(temp.toArray(new ICommand[temp.size()]));
+		project.setDescription(desc, null);
+	}
+
+	private boolean contains(List<ICommand> temp, String builderId) {
+		for (ICommand cmd : temp) {
+			if (cmd.getBuilderName().equals(builderId)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private void remove(List<ICommand> temp, String builderId) {
+		for (Iterator<ICommand> iterator = temp.iterator(); iterator.hasNext();) {
+			ICommand iCommand = iterator.next();
+			if (iCommand.getBuilderName().equals(builderId)) {
+				iterator.remove();
+				return;
+			}
+		}
+	}
+
+	public void deconfigure() throws CoreException {
+		IProjectDescription description = getProject().getDescription();
+		ICommand[] commands = description.getBuildSpec();
+		List<ICommand> temp = new ArrayList<ICommand>(Arrays.asList(commands));
+
+		remove(temp, OSBP2Builder.BUILDER_ID);
+
+		description.setBuildSpec(temp.toArray(new ICommand[temp.size()]));
+		project.setDescription(description, null);
+	}
+
+	public IProject getProject() {
+		return project;
+	}
+
+	public void setProject(IProject project) {
+		this.project = project;
+	}
+
+}
+
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/nature/ToggleOSBP2NatureAction.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/nature/ToggleOSBP2NatureAction.java
new file mode 100644
index 0000000..42cb2b1
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/nature/ToggleOSBP2NatureAction.java
@@ -0,0 +1,98 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.nature;
+
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+import org.eclipse.osbp.ide.core.ui.softwarefactory.api.CoreUtil;
+
+import org.slf4j.LoggerFactory;
+
+public class ToggleOSBP2NatureAction implements IObjectActionDelegate {
+
+	private static final org.slf4j.Logger log = LoggerFactory
+			.getLogger(ToggleOSBP2NatureAction.class);
+
+	private ISelection selection;
+
+	public void run(IAction action) {
+		if (selection instanceof IStructuredSelection) {
+			for (Iterator<?> it = ((IStructuredSelection) selection).iterator(); it
+					.hasNext();) {
+				Object element = it.next();
+				IProject project = null;
+				if (element instanceof IProject) {
+					project = (IProject) element;
+				} else if (element instanceof IAdaptable) {
+					project = (IProject) ((IAdaptable) element)
+							.getAdapter(IProject.class);
+				}
+				if (project != null) {
+					toggleNature(project);
+				}
+			}
+		}
+	}
+
+	public void selectionChanged(IAction action, ISelection selection) {
+		this.selection = selection;
+	}
+
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	public void toggleNature(IProject project) {
+		try {
+			IProjectDescription description = project.getDescription();
+			String[] natures = description.getNatureIds();
+
+			for (int i = 0; i < natures.length; ++i) {
+				if (OSBP2Nature.NATURE_ID.equals(natures[i])) {
+					// Remove the nature
+					String[] newNatures = new String[natures.length - 1];
+					System.arraycopy(natures, 0, newNatures, 0, i);
+					System.arraycopy(natures, i + 1, newNatures, i,
+							natures.length - i - 1);
+					description.setNatureIds(newNatures);
+					project.setDescription(description, null);
+					return;
+				}
+			}
+
+			// Add the nature
+			String[] newNatures = new String[natures.length + 1];
+			System.arraycopy(natures, 0, newNatures, 0, natures.length);
+			newNatures[natures.length] = OSBP2Nature.NATURE_ID;
+			description.setNatureIds(newNatures);
+			project.setDescription(description, null);
+		} catch (CoreException e) {
+			log.error("{}", e);
+		}
+	}
+
+	public boolean hasNature(IProject project) {
+		return CoreUtil.hasNature(project);
+	}
+
+}
+
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/util/CoreUiUtil.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/util/CoreUiUtil.java
new file mode 100644
index 0000000..0c8b32d
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/util/CoreUiUtil.java
@@ -0,0 +1,68 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.util;
+
+import java.util.Locale;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider;
+
+import com.google.inject.Inject;
+
+/**
+ * Util class that offers convenient methods.
+ */
+public class CoreUiUtil {
+
+	@Inject
+	private IJavaProjectProvider projectProvider;
+
+	/**
+	 * Returns the project where the xtextModel is located in.
+	 * 
+	 * @param xtextElement
+	 * @return
+	 */
+	public IProject getProject(EObject xtextElement) {
+		IJavaProject javaProject = getJavaProject(xtextElement);
+		if (javaProject == null) {
+			return null;
+		}
+		return javaProject.getProject();
+	}
+
+	/**
+	 * Returns the javaProject where the xtextModel is located in.
+	 * 
+	 * @param xtextElement
+	 * @return
+	 */
+	public IJavaProject getJavaProject(EObject xtextElement) {
+		return projectProvider.getJavaProject(xtextElement.eResource()
+				.getResourceSet());
+	}
+
+	/**
+	 * Returns the current locale. For now {@link Locale#getDefault()} is used.
+	 * Later maybe a value from preferences is returned.
+	 * 
+	 * @return
+	 */
+	public Locale getLocale() {
+		return Locale.getDefault();
+	}
+
+}
+
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/util/ResourceChangeListener.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/util/ResourceChangeListener.java
new file mode 100644
index 0000000..615fe85
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/util/ResourceChangeListener.java
@@ -0,0 +1,61 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.util;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+
+public class ResourceChangeListener implements IResourceChangeListener {
+
+	@Override
+	public void resourceChanged(IResourceChangeEvent event) {
+		String doing = "";
+		int type = event.getType();
+		if ((type & org.eclipse.core.resources.IResourceChangeEvent.POST_CHANGE)==org.eclipse.core.resources.IResourceChangeEvent.POST_CHANGE) {
+			doing += "POST_CHANGE-";
+		}
+		if ((type & org.eclipse.core.resources.IResourceChangeEvent.PRE_CLOSE)==org.eclipse.core.resources.IResourceChangeEvent.PRE_CLOSE) {
+			doing += "PRE_CLOSE-";
+		}
+		if ((type & org.eclipse.core.resources.IResourceChangeEvent.PRE_DELETE)==org.eclipse.core.resources.IResourceChangeEvent.PRE_DELETE) {
+			doing += "PRE_DELETE-";
+		}
+		if ((type & org.eclipse.core.resources.IResourceChangeEvent.PRE_BUILD)==org.eclipse.core.resources.IResourceChangeEvent.PRE_BUILD) {
+			doing += "PRE_BUILD-";
+		}
+		if ((type & org.eclipse.core.resources.IResourceChangeEvent.POST_BUILD)==org.eclipse.core.resources.IResourceChangeEvent.POST_BUILD) {
+			doing += "POST_BUILD-";
+		}
+		if ((type & org.eclipse.core.resources.IResourceChangeEvent.PRE_REFRESH)==org.eclipse.core.resources.IResourceChangeEvent.PRE_REFRESH) {
+			doing += "PRE_REFRESH-";
+		}
+		doing = iterateChildren(doing, event.getDelta().getAffectedChildren());
+		System.err.println(doing);
+	}
+	
+	private String iterateChildren(String inDoing, IResourceDelta[] deltas) {
+		String doing = inDoing;
+		if (deltas != null) {
+			for(IResourceDelta delta:deltas) {
+				IResource resource = delta.getResource();
+				if (resource != null) {
+					doing += " "+resource.getName();
+				}
+				doing = iterateChildren(doing, delta.getAffectedChildren());
+			}
+		}
+		return doing;
+	}
+}
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/view/XtextIndexView.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/view/XtextIndexView.java
new file mode 100644
index 0000000..4a74706
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/view/XtextIndexView.java
@@ -0,0 +1,349 @@
+/**
+ *                                                                            
+ * 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.ide.core.ui.softwarefactory.view;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.xtext.builder.builderState.IBuilderState;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IReferenceDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.XtextEditor;
+import org.eclipse.xtext.ui.editor.model.IXtextDocument;
+import org.eclipse.xtext.ui.editor.model.IXtextModelListener;
+import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+import org.eclipse.xtext.xbase.lib.Functions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+import com.google.inject.Inject;
+
+import org.eclipse.osbp.ide.core.ui.softwarefactory.CoreUiActivator;
+
+@SuppressWarnings("restriction")
+public class XtextIndexView extends ViewPart implements IPartListener,
+		IXtextModelListener {
+
+	public static final String ID = "org.eclipse.osbp.ide.core.ui.softwarefactory.view.xtextindex";
+
+	@Inject
+	private IBuilderState builderState;
+
+	private Image indexImage = CoreUiActivator.imageDescriptorFromPlugin(
+			CoreUiActivator.PLUGIN_ID, "icons/Index-Resource.gif")
+			.createImage();
+	private Image exportedContainerImage = CoreUiActivator
+			.imageDescriptorFromPlugin(CoreUiActivator.PLUGIN_ID,
+					"icons/Index-ExportedContainer.gif").createImage();
+	private Image importedNameContainerImage = CoreUiActivator
+			.imageDescriptorFromPlugin(CoreUiActivator.PLUGIN_ID,
+					"icons/Index-ImportedNameContainer.gif").createImage();
+	private Image referenceContainerImage = CoreUiActivator
+			.imageDescriptorFromPlugin(CoreUiActivator.PLUGIN_ID,
+					"icons/Index-ReferenceContainer.gif").createImage();
+	private Image referenceImage = CoreUiActivator.imageDescriptorFromPlugin(
+			CoreUiActivator.PLUGIN_ID, "icons/Index-ReferenceDescription.gif")
+			.createImage();
+
+	private TreeViewer treeViewer;
+
+	private IXtextDocument lastActiveDocument;
+
+	public XtextIndexView() {
+
+	}
+
+	@Override
+	public void createPartControl(Composite parent) {
+
+		treeViewer = new TreeViewer(parent);
+		treeViewer.setContentProvider(new ContentProvider());
+		treeViewer.setLabelProvider(new LabelProvider() {
+			@Override
+			public Image getImage(Object element) {
+				if (element instanceof IResourceDescription) {
+					return indexImage;
+				} else if (element instanceof ExportedObjects) {
+					return exportedContainerImage;
+				} else if (element instanceof ImportedNames) {
+					return importedNameContainerImage;
+				} else if (element instanceof ReferenceDescriptions) {
+					return referenceContainerImage;
+				} else if (element instanceof IReferenceDescription) {
+					return referenceImage;
+				}
+				return super.getImage(element);
+			}
+
+			@Override
+			public String getText(Object element) {
+				if (element instanceof String) {
+					return (String) element;
+				} else if (element instanceof IResourceDescription) {
+					return ((IResourceDescription) element).getURI().toString();
+				} else if (element instanceof ExportedObjects) {
+					return "exported Objects";
+				} else if (element instanceof ImportedNames) {
+					return "imported Names";
+				} else if (element instanceof ReferenceDescriptions) {
+					return "reference Descriptions";
+				} else if (element instanceof IReferenceDescription) {
+					IReferenceDescription desc = (IReferenceDescription) element;
+					return desc.getEReference().getName() + "--"
+							+ desc.getContainerEObjectURI().toString();
+				} else if (element instanceof Entry) {
+					Entry entry = (Entry) element;
+					return entry.key + ":  " + entry.value;
+				} else if (element instanceof IEObjectDescription) {
+					IEObjectDescription desc = (IEObjectDescription) element;
+					StringBuilder b = new StringBuilder();
+					b.append(" - ");
+					b.append(desc.getEClass().getName());
+					b.append("(");
+					b.append(desc.getName());
+					b.append(")  -->  ");
+					b.append(desc.getEObjectURI());
+					return b.toString();
+				} else if (element instanceof URI) {
+					return element.toString();
+				}
+				return "";
+			}
+		});
+
+		start(getViewSite());
+	}
+
+	@Override
+	public void setFocus() {
+
+	}
+
+	@Override
+	public void dispose() {
+
+		stop(getViewSite());
+
+		exportedContainerImage.dispose();
+		importedNameContainerImage.dispose();
+		referenceContainerImage.dispose();
+		referenceImage.dispose();
+		indexImage.dispose();
+
+		super.dispose();
+	}
+
+	public void start(IWorkbenchPartSite site) {
+		updateView(site.getPage().getActiveEditor());
+		site.getWorkbenchWindow().getPartService().addPartListener(this);
+	}
+
+	public void stop(IWorkbenchPartSite site) {
+		site.getWorkbenchWindow().getPartService().removePartListener(this);
+		lastActiveDocument = null;
+	}
+
+	public void partActivated(IWorkbenchPart part) {
+		updateView(part);
+	}
+
+	private void updateView(IWorkbenchPart part) {
+		if (part instanceof XtextEditor) {
+			XtextEditor xtextEditor = (XtextEditor) part;
+			IXtextDocument xtextDocument = xtextEditor.getDocument();
+			if (xtextDocument != lastActiveDocument) {
+				if (lastActiveDocument != null) {
+					lastActiveDocument.removeModelListener(this);
+				}
+
+				lastActiveDocument = xtextDocument;
+				lastActiveDocument.addModelListener(this);
+				lastActiveDocument
+						.readOnly(new IUnitOfWork<Boolean, XtextResource>() {
+							@Override
+							public Boolean exec(XtextResource state)
+									throws Exception {
+								modelChanged(state);
+								return true;
+							}
+						});
+			}
+		}
+	}
+
+	public void partBroughtToTop(IWorkbenchPart part) {
+	}
+
+	public void partClosed(IWorkbenchPart part) {
+	}
+
+	public void partDeactivated(IWorkbenchPart part) {
+	}
+
+	public void partOpened(IWorkbenchPart part) {
+	}
+
+	public void modelChanged(final XtextResource resource) {
+		if (resource == null) {
+			return;
+		}
+		getSite().getWorkbenchWindow().getShell().getDisplay()
+				.asyncExec(new Runnable() {
+					@Override
+					public void run() {
+						treeViewer.setInput(resource);
+					}
+				});
+
+	}
+
+	private class ContentProvider implements ITreeContentProvider {
+
+		@Override
+		public void dispose() {
+
+		}
+
+		@Override
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		}
+
+		@Override
+		public Object[] getElements(Object inputElement) {
+			Resource resource = (Resource) inputElement;
+			return new Object[] { builderState.getResourceDescription(resource
+					.getURI()) };
+		}
+
+		@Override
+		public Object[] getChildren(Object parentElement) {
+			if (parentElement instanceof IResourceDescription) {
+				IResourceDescription desc = (IResourceDescription) parentElement;
+				List<Object> objects = new ArrayList<Object>();
+				objects.add(new ExportedObjects(desc.getExportedObjects()));
+				objects.add(new ImportedNames(desc.getImportedNames()));
+				objects.add(new ReferenceDescriptions(desc
+						.getReferenceDescriptions()));
+				return objects.toArray();
+			} else if (parentElement instanceof ExportedObjects) {
+				ExportedObjects exportedObjects = (ExportedObjects) parentElement;
+				return exportedObjects.exported.toArray();
+			} else if (parentElement instanceof ImportedNames) {
+				ImportedNames names = (ImportedNames) parentElement;
+				return names.importedNames.toArray();
+			} else if (parentElement instanceof ReferenceDescriptions) {
+				ReferenceDescriptions resDescs = (ReferenceDescriptions) parentElement;
+				return resDescs.refDescs.toArray();
+			} else if (parentElement instanceof IReferenceDescription) {
+				IReferenceDescription desc = (IReferenceDescription) parentElement;
+				List<Object> elements = new ArrayList<Object>();
+				elements.add(new Entry(" - eReference", desc.getEReference()
+						.getName()));
+				elements.add(new Entry(" - index", Integer.toString(desc
+						.getIndexInList())));
+				elements.add(new Entry(" - container", desc
+						.getContainerEObjectURI().toString()));
+				elements.add(new Entry(" - source", desc.getSourceEObjectUri()
+						.toString()));
+				elements.add(new Entry(" - target", desc.getTargetEObjectUri()
+						.toString()));
+				return elements.toArray();
+			}
+			return null;
+		}
+
+		@Override
+		public Object getParent(Object element) {
+			return null;
+		}
+
+		@Override
+		public boolean hasChildren(Object element) {
+			if (element instanceof IResourceDescription) {
+				return true;
+			} else if (element instanceof ExportedObjects) {
+				ExportedObjects exportedObjects = (ExportedObjects) element;
+				return !exportedObjects.exported.isEmpty();
+			} else if (element instanceof ImportedNames) {
+				ImportedNames names = (ImportedNames) element;
+				return !names.importedNames.isEmpty();
+			} else if (element instanceof ReferenceDescriptions) {
+				ReferenceDescriptions resDescs = (ReferenceDescriptions) element;
+				return !resDescs.refDescs.isEmpty();
+			} else if (element instanceof IReferenceDescription) {
+				return true;
+			}
+			return false;
+		}
+	}
+
+	private static class ExportedObjects {
+
+		private List<IEObjectDescription> exported;
+
+		public ExportedObjects(Iterable<IEObjectDescription> exportedObjects) {
+			exported = IterableExtensions.toList(exportedObjects);
+		}
+
+	}
+
+	private static class ImportedNames {
+		private List<String> importedNames;
+
+		public ImportedNames(Iterable<QualifiedName> importedNames) {
+			Iterable<String> mapped = IterableExtensions
+					.<QualifiedName, String> map(importedNames,
+							new Functions.Function1<QualifiedName, String>() {
+								@Override
+								public String apply(QualifiedName input) {
+									return " - " + input.toString();
+								}
+							});
+			this.importedNames = IterableExtensions.toList(mapped);
+		}
+	}
+
+	private static class ReferenceDescriptions {
+
+		private List<IReferenceDescription> refDescs;
+
+		public ReferenceDescriptions(
+				Iterable<IReferenceDescription> referenceDescriptions) {
+			refDescs = IterableExtensions.toList(referenceDescriptions);
+		}
+	}
+
+	private static class Entry {
+		private String key;
+		private String value;
+
+		public Entry(String key, String value) {
+			this.key = key;
+			this.value = value;
+		}
+	}
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..1cc863f
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,109 @@
+<?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 implementation 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.ide.core.ui.softwarefactory</groupId>
+    <artifactId>org.eclipse.osbp.ide.core.ui.softwarefactory.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.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+    </properties>
+
+    <modules>
+        <module>org.eclipse.osbp.ide.core.ui.softwarefactory</module>
+        <module>org.eclipse.osbp.ide.core.ui.softwarefactory.feature</module>
+        <!-- <module>org.eclipse.osbp.ide.core.ui.softwarefactory.p2</module> -->
+    </modules>
+
+    <profiles>
+        <profile>
+            <id>build.p2</id>
+            <activation>
+                <property>
+                    <name>osbp.build.p2</name>
+                </property>
+            </activation>
+            <modules>
+                <!-- <module>org.eclipse.osbp.ide.core.ui.softwarefactory.p2</module> -->
+            </modules>
+        </profile>
+    </profiles>
+    <build>
+        <pluginManagement>
+            <plugins>
+                <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>