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..d2e8493
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.osgi.hybrid.api.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..1ff5579
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,31 @@
+<?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.bpm.api</jenkins.build.dependency>
+                <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.ecview.extension.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.persistence</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.preferences</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.webserver.messagequeue</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.osgi.hybrid.api.feature/.project b/org.eclipse.osbp.osgi.hybrid.api.feature/.project
new file mode 100644
index 0000000..707e2f4
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.osgi.hybrid.api.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.osgi.hybrid.api.feature/LICENSE.txt b/org.eclipse.osbp.osgi.hybrid.api.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.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.osgi.hybrid.api.feature/build.properties b/org.eclipse.osbp.osgi.hybrid.api.feature/build.properties
new file mode 100644
index 0000000..b8920ff
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = license.html,  epl-v10.html,  feature.xml,\
+               feature.properties
diff --git a/org.eclipse.osbp.osgi.hybrid.api.feature/epl-v10.html b/org.eclipse.osbp.osgi.hybrid.api.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.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.osgi.hybrid.api.feature/feature.properties b/org.eclipse.osbp.osgi.hybrid.api.feature/feature.properties
new file mode 100644
index 0000000..fa581ac
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.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 Hybrid API
 
+
+# "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 OSBP OSGi hybrid API.
+
+# "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.osgi.hybrid.api.feature/feature.xml b/org.eclipse.osbp.osgi.hybrid.api.feature/feature.xml
new file mode 100644
index 0000000..99c2a80
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.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.osgi.hybrid.api.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.osgi.hybrid.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.osgi.hybrid.api.feature/license.html b/org.eclipse.osbp.osgi.hybrid.api.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.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.osgi.hybrid.api.feature/pom.xml b/org.eclipse.osbp.osgi.hybrid.api.feature/pom.xml
new file mode 100644
index 0000000..7464a40
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.feature/pom.xml
@@ -0,0 +1,82 @@
+<?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.osgi.hybrid.api</groupId>
+        <artifactId>org.eclipse.osbp.osgi.hybrid.api.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.osgi.hybrid.api.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>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.osbp.osgi.hybrid.api</groupId>
+            <artifactId>org.eclipse.osbp.osgi.hybrid.api</artifactId>
+            <version>0.9.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.osgi.hybrid.api.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.osgi.hybrid.api.feature/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.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.osgi.hybrid.api.feature/src/overview.html b/org.eclipse.osbp.osgi.hybrid.api.feature/src/overview.html
new file mode 100644
index 0000000..414051f
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api.feature/src/overview.html
@@ -0,0 +1,11 @@
+<!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;Hyprid API&nbsp;</strong>contains the functionality needed to integrate OSBP into the existing Compex Commerce client.</p>
+
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.osgi.hybrid.api/.project b/org.eclipse.osbp.osgi.hybrid.api/.project
new file mode 100644
index 0000000..76494ac
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.osgi.hybrid.api</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</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.osgi.hybrid.api/LICENSE.txt b/org.eclipse.osbp.osgi.hybrid.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
+OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
+its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
+and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
+form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
+apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
+rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
+grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
+the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
+the Program in a commercial product offering should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
+brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
+ participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
+Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
+noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
+is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
+new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
+new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.osgi.hybrid.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.osgi.hybrid.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..89f7a1f
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/META-INF/MANIFEST.MF
@@ -0,0 +1,53 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.osgi.hybrid.api
+Bundle-SymbolicName: org.eclipse.osbp.osgi.hybrid.api;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.apache.log4j,
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ javax.inject;bundle-version="1.0.0",
+ javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.apache.commons.codec,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.core.services,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.osgi.services,
+ org.eclipse.core.databinding,
+ org.eclipse.core.runtime,
+ org.eclipse.core.databinding.beans,
+ org.apache.httpcomponents.httpcore,
+ org.apache.httpcomponents.httpclient,
+ org.jsoup,
+ org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
+ refresher.osgi;bundle-version="[1.2.3.7,1.2.4)",
+ org.eclipse.osbp.preferences;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.webserver.messagequeue;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.persistence;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.osgi.hybrid.api;version="0.9.0"
+Import-Package: javax.jms;version="1.1.0",
+ org.apache.commons.lang3,
+ org.eclipse.e4.core.di.annotations,
+ org.eclipse.e4.core.di.extensions,
+ org.eclipse.emf.common.notify,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.util,
+ org.eclipse.osbp.bpm.api;version="0.9.0",
+ org.eclipse.osbp.dsl.common.datatypes;version="0.9.0",
+ org.eclipse.osbp.ecview.extension.api;version="0.9.0",
+ org.eclipse.osbp.ecview.extension.model;version="0.9.0",
+ org.eclipse.osbp.ecview.extension.strategy;version="0.9.0",
+ org.eclipse.osbp.eventbroker;version="0.9.0",
+ org.eclipse.osbp.ui.api.themes;version="0.9.0",
+ org.eclipse.osbp.ui.api.useraccess,
+ org.osgi.service.event;version="1.3.0"
+Bundle-Activator: org.eclipse.osbp.osgi.hybrid.api.Activator
+Service-Component: OSGI-INF/*.xml
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.osgi.hybrid.api/OSGI-INF/Authentication.xml b/org.eclipse.osbp.osgi.hybrid.api/OSGI-INF/Authentication.xml
new file mode 100644
index 0000000..dcc2b68
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/OSGI-INF/Authentication.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.osgi.hybrid.api.UserAccessService">
+   <implementation class="org.eclipse.osbp.osgi.hybrid.api.HybridServiceBinder"/>
+   <reference bind="bindUserAccessService" cardinality="1..1" interface="org.eclipse.osbp.ui.api.useraccess.IUserAccessService" name="IUserAccessService" policy="dynamic" unbind="unbindUserAccessService"/>
+</scr:component>
diff --git a/org.eclipse.osbp.osgi.hybrid.api/OSGI-INF/PresentationRenderer.xml b/org.eclipse.osbp.osgi.hybrid.api/OSGI-INF/PresentationRenderer.xml
new file mode 100644
index 0000000..4f569e4
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/OSGI-INF/PresentationRenderer.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.osgi.hybrid.api.PresentationRenderer">
+   <implementation class="org.eclipse.osbp.osgi.hybrid.api.HybridServiceBinder"/>
+   <reference bind="bindPresentationRenderer" cardinality="1..1" interface="org.eclipse.osbp.osgi.hybrid.api.IPresentationRenderer" policy="static" name="IPresentationRenderer" unbind="unbindPresentationRenderer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.osgi.hybrid.api/about.html b/org.eclipse.osbp.osgi.hybrid.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.osgi.hybrid.api/about.ini b/org.eclipse.osbp.osgi.hybrid.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.osgi.hybrid.api/about.mappings b/org.eclipse.osbp.osgi.hybrid.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.osgi.hybrid.api/about.properties b/org.eclipse.osbp.osgi.hybrid.api/about.properties
new file mode 100644
index 0000000..4df5c48
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.osgi.hybrid.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.osgi.hybrid.api/build.properties b/org.eclipse.osbp.osgi.hybrid.api/build.properties
new file mode 100644
index 0000000..72a2fec
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               OSGI-INF/,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html			   
diff --git a/org.eclipse.osbp.osgi.hybrid.api/epl-v10.html b/org.eclipse.osbp.osgi.hybrid.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.osgi.hybrid.api/license.html b/org.eclipse.osbp.osgi.hybrid.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are
+ currently may have restrictions on the import, possession, and use, 
+and/or re-export to
+   another country, of encryption software. BEFORE using any encryption 
+software, please check the country's laws, regulations and policies 
+concerning the import,
+   possession, or use, and re-export of encryption software, to see if 
+this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.osgi.hybrid.api/pom.xml b/org.eclipse.osbp.osgi.hybrid.api/pom.xml
new file mode 100644
index 0000000..c9c648e
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.eclipse.osbp.osgi.hybrid.api</groupId>
+        <artifactId>org.eclipse.osbp.osgi.hybrid.api.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.osgi.hybrid.api</artifactId>
+    <packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaaclipseView.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaaclipseView.java
new file mode 100644
index 0000000..56e7016
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaaclipseView.java
@@ -0,0 +1,557 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+
+import org.apache.commons.lang3.StringUtils;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.extensions.EventUtils;
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.IPartListener;
+import org.eclipse.osbp.bpm.api.IBlipBPMConstants;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.eventbroker.EventBrokerMsg;
+import org.eclipse.osbp.persistence.IPersistenceService;
+import org.eclipse.osbp.runtime.web.vaadin.databinding.VaadinObservables;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Permission;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.PermissionResult;
+import org.eclipse.osbp.ui.api.useraccess.AbstractPosition;
+import org.eclipse.osbp.ui.api.useraccess.IPermissionList;
+import org.eclipse.osbp.utils.common.IEntityIdModificationListenerView;
+import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageAttribute;
+import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageEvent;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.FormLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+public abstract class AbstractHybridVaaclipseView implements IHybridVaadinVaaclipseListener, IPartListener, IEntityIdModificationListenerView {
+	
+	@Inject
+	IEventBroker eventBroker;
+
+	@Inject
+	protected IPersistenceService persistenceService;
+
+	//
+	// @Inject
+	// private AbstractBlipBPMFunctionProvider taskProvider;
+	//
+	// @Inject
+	// protected IBPMTaskClient taskClient;
+	//
+	// private String workloadDtoFqn;
+	// private IDto initialWorkloadDto;
+	// private Class<?> operativeDtoClass;
+	// private List<IDto> initialOperativeDtos;
+
+	private static final Logger LOGGER = LoggerFactory.getLogger(AbstractHybridVaaclipseView.class);
+
+	public static enum RenderMode {
+		SYNCHRONOUSLY, ASYNCHRONOUSLY
+	}
+
+	private final IEclipseContext fEclipseContext;
+	private final MApplication fE4App;
+	private final VerticalLayout fParent;
+	private boolean fViewInitialized;
+	protected final EventHandler fModifiedEntityIdsListener;
+	private Map<String, Set<Object>> fListeningForEntityIdsModifications = new HashMap<>();
+
+	private RenderMode renderMode = RenderMode.ASYNCHRONOUSLY;
+	private boolean firstTime = true;
+	private int pollingInterval = 2000;
+
+	private RecursiveFocusBlurListener fRecursiveFocusBlurListener;
+
+	/**
+	 * <b><i><u>Warning:</u> never use initializing class attributes in the definition!<br>
+	 * Due to Java specific internals the overriden method createView() will be called before that initializing will be done!<br>
+	 * Instead put any initializing inside the overriden method createView()!</i></b>
+	 * 
+	 * @param parent
+	 * @param context
+	 * @param app
+	 */
+	public AbstractHybridVaaclipseView(final VerticalLayout parent, final IEclipseContext context, final MApplication app) {
+		fE4App = app;
+		fEclipseContext = context;
+		fViewInitialized = false;
+		fParent = parent;
+		fModifiedEntityIdsListener = new EventHandler() {
+
+			@Override
+			public void handleEvent(Event event) {
+				Object data = event.getProperty(EventUtils.DATA);
+				// --- only if data contains an event broker message ---
+				if (data instanceof EventBrokerMsg) {
+					EventBrokerMsg eventBrokerMsg = (EventBrokerMsg) data;
+					// eventBrokerMsg.getInt() == 1 means INSERT and no id check is required
+					// otherwise it is an UPDATE and a id check is mandatory
+					if (eventBrokerMsg.getInt() == 1) {
+						refreshViewDueToModifiedEntityId(eventBrokerMsg.getName(), eventBrokerMsg.getId());
+					} else {
+						checkOnModifiedEntityId(eventBrokerMsg, true);
+					}
+				}
+			}
+		};
+		fRecursiveFocusBlurListener = RecursiveFocusBlurListener.attachFor(fParent);
+	}
+
+	@PostConstruct
+	public void initView() {
+		preInit();
+		VaadinObservables.getRealm(UI.getCurrent());
+		UI.getCurrent().setPollInterval(pollingInterval);
+		createView(fParent);
+		postInit(null);
+		renderData(true);
+	}
+
+	public void promptSecurityMessage(String message, AbstractOrderedLayout layout) {
+		layout.removeAllComponents();
+		FormLayout area = new FormLayout();
+		layout.addComponent(area);
+
+		Label msg = new Label(message);
+		msg.setPrimaryStyleName("osbp");
+		msg.setStyleName("osbpSecurityPrompt");
+		if	(getThemeResourceService() != null) {
+			msg.setIcon(getThemeResourceService().getThemeResource("locksview.gif", ThemeResourceType.IMAGE));
+		}
+		else {
+			LOGGER.error("themeResourceService not set!");
+		}
+		area.addComponent(msg);
+	}
+
+	private String beautifyEntityName(String entityName) {
+		return StringUtils.strip(entityName.replace('.', '/'), "/").toLowerCase();
+	}
+
+	private Object beautifyEntityId(Object id) {
+		if (id instanceof String) {
+			id = ((String) id).trim();
+			try {
+				Double.parseDouble((String) id);
+				// --- if it's a double ---
+				id = StringUtils.removeEnd((String) id, "0");
+				id = StringUtils.removeEnd((String) id, ".");
+			} catch (Exception e) {
+				// NOTHING CAN BE DONE
+			}
+		}
+		return id;
+	}
+
+	@Override
+	public void resetListeningForEntityIdsModifications() {
+		fListeningForEntityIdsModifications = null;
+	}
+
+	public boolean broadcastEntityIdModified(String packageName, String entityName, String id) {
+		if (eventBroker != null) {
+			return eventBroker.send(EventBrokerMsg.REFRESH_VIEW + EventBrokerMsg.getEntityIdModifiedCategory(packageName, entityName), new EventBrokerMsg(id, entityName));
+		} else {
+			return false;
+		}
+	}
+
+	@Override
+	public boolean checkOnModifiedEntityId(EventBrokerMsg message, boolean doRefresh) {
+		return checkOnModifiedEntityId(message.getName(), message.getId(), doRefresh);
+	}
+
+	@Override
+	public boolean checkOnModifiedEntityId(String entityName, Object id, boolean doRefresh) {
+		// --- check if the entity sent is known ---
+		entityName = beautifyEntityName(entityName);
+		id = beautifyEntityId(id);
+		Set<Object> ids = fListeningForEntityIdsModifications.get(entityName);
+		if (ids instanceof Set) {
+			// --- if the id for that entity is known ---
+			if (ids.contains(id)) {
+				// --- force refresh of the report ---
+				if (doRefresh) {
+					refreshViewDueToModifiedEntityId(entityName, id);
+				}
+				return true;
+			}
+		}
+		return false;
+	}
+
+	@Override
+	public void refreshViewDueToModifiedEntityId(String entity, Object id) {
+		addEntityIdToModifyListener(entity, id);
+	}
+
+	@Override
+	public void addEntityIdToModifyListener(String entityName, Object id) {
+		// --- build the entity map if necessary ---
+		if (fListeningForEntityIdsModifications == null) {
+			fListeningForEntityIdsModifications = new HashMap<>();
+		}
+		entityName = beautifyEntityName(entityName);
+		Set<Object> ids = fListeningForEntityIdsModifications.get(entityName);
+		// --- build the ids set if necessary ---
+		if (ids == null) {
+			ids = new HashSet<>();
+			fListeningForEntityIdsModifications.put(entityName, ids);
+		}
+		// --- put the primary key ---
+		ids.add(beautifyEntityId(id));
+	}
+
+	@Override
+	public void removeEntityIdFromModifyListener(String entityName, Object id) {
+		// --- build the entity map if necessary ---
+		if (fListeningForEntityIdsModifications != null) {
+			Set<Object> ids = fListeningForEntityIdsModifications.get(beautifyEntityName(entityName));
+			// --- build the ids set if necessary ---
+			if (ids != null) {
+				// --- put the primary key ---
+				ids.remove(id);
+			}
+		}
+	}
+
+	public final MApplication getApplication() {
+		return fE4App;
+	}
+
+	public final VerticalLayout getParent() {
+		return fParent;
+	}
+
+	public final IEclipseContext getContext() {
+		return fEclipseContext;
+	}
+
+	public final MPart getPart() {
+		return (MPart) fEclipseContext.get(MPart.class);
+	}
+
+	public final String getProcessWorkloadDtoFqn() {
+		return (String) getTransientDataVariable(IBlipBPMConstants.VARIABLE_PROCESS_WORKLOAD_DTO_FQN);
+	}
+
+	public final IDto getProcessInitialWorkloadDto() {
+		return (IDto) getTransientDataVariable(IBlipBPMConstants.VARIABLE_PROCESS_WORKLOAD_DTO);
+	}
+
+	public final Class<?> getTaskOperativeDtoClass() {
+		return (Class<?>) getTransientDataVariable(IBlipBPMConstants.VARIABLE_TASK_OPERATIVE_DTO_CLASS);
+	}
+
+	public final String getTaskOperativeDtoFqn() {
+		return (String) getTransientDataVariable(IBlipBPMConstants.VARIABLE_TASK_OPERATIVE_DTO_FQN);
+	}
+
+	public final List<IDto> getTaskInitialOperativeDtos() {
+		return (List<IDto>) getTransientDataVariable(IBlipBPMConstants.VARIABLE_TASK_OPERATIVE_DTOS);
+	}
+
+	public final Object getTransientDataVariable(String variable) {
+		MPerspective perspective = getPerspective();
+		if (perspective != null) {
+			Map<String, Object> data = perspective.getTransientData();
+			if (data != null) {
+				return data.get(variable);
+			}
+		}
+		return null;
+	}
+
+	public final MPerspective getPerspective() {
+		MUIElement step = getPart();
+		while ((step != null) && !(step instanceof MPerspective)) {
+			step = step.getParent();
+		}
+		return (MPerspective) step;
+	}
+
+	public final IPersistenceService getPersistenceService() {
+		return (IPersistenceService) fEclipseContext.get(IPersistenceService.class);
+	}
+
+	protected final boolean isViewInitialized() {
+		return fViewInitialized;
+	}
+
+	/**
+	 * <b><i><u>Warning:</u> put any initializing inside the your overriden method createView()!<br>
+	 * Due to Java specific internals the overriden method createView() will be called before that initializing will be done!</i></b>
+	 * 
+	 * @param parent
+	 */
+	abstract protected void createView(final VerticalLayout parent);
+
+	abstract protected void createComponents();
+
+	// renderData is used for components that are not fully embedded in vaadin's connector structure
+	// and must be repainted when parent window resizes
+	// but can also be used to make component rendering asynchronously from view creation
+	public void renderData() {
+		LOGGER.debug("renderData not firsttime");
+		renderData(false);
+	}
+
+	public void renderData(boolean firstTime) {
+		// the first time we only want to be triggered by the initial createView process, not by changeLocale
+		if (this.firstTime) {
+			if (!firstTime) {
+				LOGGER.debug("renderData ignored because not firsttime");
+				return;
+			} else {
+				this.firstTime = false;
+			}
+		}
+		if (UI.getCurrent() == null) {
+			LOGGER.debug("renderData has no current ui");
+			return;
+		}
+		if (renderMode == RenderMode.SYNCHRONOUSLY) {
+			LOGGER.debug("render synchronously");
+			UI.getCurrent().accessSynchronously(new Runnable() {
+				@Override
+				public void run() {
+					createComponents();
+				}
+			});
+		} else {
+			LOGGER.debug("render asynchronously");
+			UI.getCurrent().access(new Runnable() {
+				@Override
+				public void run() {
+					createComponents();
+				}
+			});
+		}
+	}
+
+	private IThemeResourceService getThemeResourceService() {
+		if (fEclipseContext.containsKey(IThemeResourceService.class)) {
+			return fEclipseContext.get(IThemeResourceService.class);
+		}
+		return null;
+	}
+
+	private EPartService getPartService() {
+		if (fEclipseContext.containsKey(EPartService.class)) {
+			return fEclipseContext.get(EPartService.class);
+		}
+		return null;
+	}
+
+	protected void preInit() {
+		getPartService().addPartListener(this);
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).addListener(this);
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).setE4Application(fE4App);
+	}
+
+	@PreDestroy
+	public void preDestroy() {
+		fRecursiveFocusBlurListener.detach();
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).removeListener(this);
+		fListeningForEntityIdsModifications = null;
+	}
+
+	/**
+	 * You <b>must call this at the end of the overridden init()</b>
+	 */
+	protected final void postInit(VaadinRequest request) {
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).postInit(request);
+		fViewInitialized = true;
+		if (isAuthenticated()) {
+			setAuthenticated(isAuthenticated());
+		}
+	}
+
+	/**
+	 * React in the application according to <code>authenticated</code>
+	 * 
+	 * @param authenticated
+	 *            true if the user is authenticated now!
+	 */
+	public void setAuthenticated(boolean authenticated) {
+		// now send the list of perspectives
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).updatePerspectiveList();
+	}
+
+	protected final boolean isAuthenticated() {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).isAuthenticated();
+	}
+
+	protected final IDto getAuthenticatedUser() {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).getUser();
+	}
+
+	protected final AbstractPosition getAuthenticatedPosition() {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).getPosition();
+	}
+
+	protected final Collection<String> getAuthenticatedRoles() {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).getRoles();
+	}
+
+	protected final IPermissionList getAuthenticatedPermissions() {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).getPermissions();
+	}
+
+	protected final PermissionResult isAuthenticatedPermitted(Permission permission) {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).isPermitted(permission);
+	}
+
+	protected final Set<String> getAllUsers() {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).getAllUsers();
+	}
+
+	/**
+	 * Try to authenticate with the credentials given!<br>
+	 * {@link #setAuthenticated(boolean)} will explicit be called!
+	 * 
+	 * @param portalId
+	 * @param userName
+	 * @param password
+	 * @return true if the user was authenticated successful
+	 */
+	// protected boolean tryToAuthenticate(String portalId, String userName, String password) {
+	// return HybridVaadinVaaclipseConnector.instance().tryToAuthenticate(portalId, userName, password);
+	// }
+
+	/**
+	 * Logout from the Shiro API and send a LOGOUT event via ActiveMQ
+	 */
+	protected void logout() {
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).logout();
+	}
+
+	/**
+	 * handle any message received via ActiveMQ
+	 * 
+	 * @param event
+	 * @param body
+	 */
+	@Override
+	public final boolean onMessage(ECXMqMessageEvent event, Map<ECXMqMessageAttribute, Object> body) {
+		boolean retcode = false;
+		switch (event) {
+		// !!! handled by connector ...
+		case TRY_AUTHENTICATE:
+		case DISPOSE:
+		case LOGOUT:
+			break;
+		// ... handled by connector !!!
+		case FOCUS_PERSPECTIVE:
+			retcode = HybridVaadinVaaclipseConnector.instance(fEclipseContext).onFocusPerspective(body.get(ECXMqMessageAttribute.PERSPECTIVE_ID).toString());
+			break;
+		case REQUEST_ICON:
+			retcode = HybridVaadinVaaclipseConnector.instance(fEclipseContext).requestIcon(body.get(ECXMqMessageAttribute.PERSPECTIVE_ID).toString());
+			break;
+		default:
+			break;
+		}
+		return retcode;
+	}
+
+	@Override
+	public void partActivated(MPart part) {
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).activatePartStateRefresher(part);
+		MPerspective active = HybridVaadinVaaclipseConnector.findCurrentPerspectiveFor(part == null ? getPartService().getActivePart() : part);
+		if (active instanceof MPerspective) {
+			HybridVaadinVaaclipseConnector.instance(fEclipseContext).updatePerspectiveList();
+			HybridVaadinVaaclipseConnector.instance(fEclipseContext).updateFocusPerspective(active.getElementId());
+		} else if ((part != null || getPartService().getActivePart() != null)) {
+			LOGGER.debug("part activated:" + (part == null ? "<null>" : part.getElementId() + " '" + part.getLabel() + "'"));
+			List<MPerspective> existing = HybridVaadinVaaclipseConnector.instance(fEclipseContext).findPerspectives();
+			for (MPerspective perspective : existing) {
+				LOGGER.debug("    perspective:" + perspective.getElementId() + " '" + perspective.getLabel() + "'");
+			}
+			LOGGER.debug("  COULD NOT find the corresponding perspective :-(");
+		}
+	}
+
+	@Override
+	public void partBroughtToTop(MPart part) {
+		HybridVaadinVaaclipseConnector.instance(fEclipseContext).activatePartStateRefresher(part);
+	}
+
+	@Override
+	public void partDeactivated(MPart part) {
+	} // NOP
+
+	@Override
+	public void partHidden(MPart part) {
+	} // NOP
+
+	@Override
+	public void partVisible(MPart part) {
+	} // NOP
+
+	/**
+	 * Try to authenticate with the credentials given!<br>
+	 * {@link #setAuthenticated(boolean)} will explicit be called!
+	 * 
+	 * @param portalId
+	 * @param userName
+	 * @param password
+	 * @return true if the user was authenticated successful
+	 */
+	protected boolean tryToAuthenticate(String portalId, String userName, String password) {
+		return HybridVaadinVaaclipseConnector.instance(fEclipseContext).tryToAuthenticate(portalId, userName, password);
+	}
+
+	public RenderMode getRenderMode() {
+		return renderMode;
+	}
+
+	public void setRenderMode(RenderMode renderMode) {
+		this.renderMode = renderMode;
+	}
+
+	public int getPollingInterval() {
+		return pollingInterval;
+	}
+
+	public void setPollingInterval(int pollingInterval) {
+		this.pollingInterval = pollingInterval;
+	}
+
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaadinUI.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaadinUI.java
new file mode 100644
index 0000000..9660df2
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/AbstractHybridVaadinUI.java
@@ -0,0 +1,102 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import java.util.Map;
+
+import com.vaadin.server.Extension;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.UI;
+
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
+import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageAttribute;
+import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageEvent;
+
+/**
+ * This abstract class has to be used as extended class in all Vaadin applications, which need
+ * Shiro Authentication support and/or CCNG Hybrid support!
+ * Just extend this class and add any extending functionality!
+ */
+@SuppressWarnings("serial")
+abstract public class AbstractHybridVaadinUI extends UI implements IHybridVaadinVaaclipseListener {
+
+	private HybridVaadinVaaclipseConnector fConnector;
+	
+	protected IUserAccessService getUserAccessService() {
+		return fConnector.getUserAccessService();
+	}
+	
+	/**
+	 * You <b>must call this at the start of the overriden init()</b>
+	 */
+	protected final Extension preInit(VaadinRequest request) {
+		fConnector = HybridVaadinVaaclipseConnector.instance(null);
+		fConnector.addListener(this);
+		return null; // fConnector.createRefresher();
+	}
+	
+	/**
+	 * You <b>must call this  at the end of the overriden init()</b>
+	 */
+	protected final void postInit(VaadinRequest request) {
+		fConnector.postInit(request);
+	}
+
+	/**
+	 * React in the application according to <code>authenticated</code>
+	 * @param authenticated true if the user is authenticated now!
+	 */
+	public void setAuthenticated(boolean authenticated) {
+		fConnector.setAuthenticated(authenticated);
+	}
+	
+	/**
+	 * Try to authenticate with the credentials given!<br>
+	 * {@link #setAuthenticated(boolean)} will explicit be called!
+	 * @param portalId
+	 * @param userName
+	 * @param password
+	 * @return true if the user was authenticated successful
+	 */
+	protected boolean tryToAuthenticate(String portalId, String userName, String password) {
+		return fConnector.tryToAuthenticate(portalId, userName, password);
+	}
+	
+	/**
+	 * Logout from the Shiro API and send a LOGOUT event via ActiveMQ
+	 */
+	protected void logout() {
+		fConnector.logout();
+	}
+	
+	/**
+	 * handle any message received via ActiveMQ
+	 * @param event
+	 * @param body
+	 */
+	@Override
+	public final boolean onMessage(ECXMqMessageEvent event, Map<ECXMqMessageAttribute, Object> body) {
+		boolean retcode = false;
+		switch (event) {
+			// !!! handled by connector ...
+			case TRY_AUTHENTICATE:
+			case DISPOSE:
+			case LOGOUT:
+				break;
+			// ... handled by connector !!!
+			default:
+				break;
+		}
+		return false;
+	}
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/Activator.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/Activator.java
new file mode 100644
index 0000000..1f1052c
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/Activator.java
@@ -0,0 +1,54 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.osbp.gitinfo.Loginfo;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class Activator extends Plugin implements BundleActivator {
+
+	private static BundleContext context;
+	private static final Logger LOGGER = LoggerFactory.getLogger("activator");
+
+	public static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		super.start(bundleContext);
+		Activator.context = bundleContext;
+		Loginfo li = new Loginfo();
+		li.print( Activator.class.getCanonicalName(), Activator.class.getClassLoader());
+		LOGGER.info(Activator.class.getCanonicalName()+": started");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		super.stop(bundleContext);
+		Activator.context = null;
+		LOGGER.info(Activator.class.getCanonicalName()+": stopped");
+	}
+
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridCredentials.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridCredentials.java
new file mode 100644
index 0000000..402a84c
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridCredentials.java
@@ -0,0 +1,48 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.List;
+
+import org.apache.http.NameValuePair;
+import org.apache.http.client.utils.URLEncodedUtils;
+
+import com.vaadin.server.Page;
+import com.vaadin.ui.UI;
+
+public class HybridCredentials {
+
+	private final String portalId;
+	private final String userName;
+	private final String password;
+	
+	protected HybridCredentials(String portalId, String userName, String password) {
+		this.portalId = portalId;
+		this.userName = userName;
+		this.password = password;
+	}
+	
+	public String getPortalId() {
+		return portalId;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridPartStateRefresher.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridPartStateRefresher.java
new file mode 100644
index 0000000..fb7394e
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridPartStateRefresher.java
@@ -0,0 +1,43 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import com.github.wolfie.refresher.Refresher;
+
+import org.eclipse.osbp.preferences.ProductConfiguration;
+
+public class HybridPartStateRefresher extends Refresher {
+
+	private static final long serialVersionUID = 2627881764074882845L;
+	private boolean fActive;
+	private final int fIntervalActive;
+	private final int fIntervalInactive;
+	
+	public HybridPartStateRefresher(RefreshListener listener) {
+		fIntervalActive = ProductConfiguration.getHybridRefresherMilliSecsActive();
+		fIntervalInactive = ProductConfiguration.getHybridRefresherMilliSecsInactive();
+		addListener(listener);
+		setActive(true);
+	}
+	
+	public void setActive(boolean active) {
+		if	(fActive != active) {
+			fActive = active;
+			setRefreshInterval(fActive ? fIntervalActive : fIntervalInactive);
+		}
+	}
+	
+	public boolean isActive() {
+		return fActive;
+	}
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridServiceBinder.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridServiceBinder.java
new file mode 100644
index 0000000..8110c7c
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridServiceBinder.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.osgi.hybrid.api;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class HybridServiceBinder {
+
+	private static final Set<IPresentationRenderer> sPresentationRenderers = new HashSet<>();
+	private final static Logger log = LoggerFactory.getLogger("servicebinder");
+	private static IUserAccessService userAccessService;
+
+
+	public static void processContents(MPerspectiveStack perspectiveStack, MElementContainer<MUIElement> perspectiveStackElement) {
+		for	(IPresentationRenderer presentationRenderer : sPresentationRenderers) {
+			presentationRenderer.processContents(perspectiveStack, perspectiveStackElement);
+			break;
+		}
+	}
+
+	/**
+	 * @param presentationRenderer declarative service loaded
+	 */
+	public static void bindPresentationRenderer(IPresentationRenderer presentationRenderer) {
+		log.debug(HybridServiceBinder.class.getCanonicalName()+": "+presentationRenderer.getClass().getCanonicalName()+" bound");
+		sPresentationRenderers.add(presentationRenderer);
+	}
+
+	/**
+	 * @param presentationRenderer declarative service unloaded
+	 */
+	public static void unbindPresentationRenderer(IPresentationRenderer presentationRenderer) {
+		log.debug(HybridServiceBinder.class.getCanonicalName()+": "+presentationRenderer.getClass().getCanonicalName()+" unbound");
+		sPresentationRenderers.remove(presentationRenderer);
+	}
+
+	public static IUserAccessService getUserAccessService() {
+		return userAccessService;
+	}
+	
+	public synchronized void bindUserAccessService(final IUserAccessService userAccessService) {
+		this.userAccessService = userAccessService;
+		log.debug("HybridAuthenticationService bound");
+	}
+
+	public synchronized void unbindUserAccessService(final IUserAccessService userAccessService) {
+		this.userAccessService = null;
+		log.debug("HybridAuthenticationService unbound");
+	}
+
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridVaadinVaaclipseConnector.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridVaadinVaaclipseConnector.java
new file mode 100644
index 0000000..35eebf8
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/HybridVaadinVaaclipseConnector.java
@@ -0,0 +1,922 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.imageio.ImageIO;
+
+import org.apache.commons.codec.binary.Hex;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.utils.URLEncodedUtils;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.osgi.hybrid.api.IEventForNextRefresh.FocusPerspective;
+import org.eclipse.osbp.osgi.hybrid.api.IEventForNextRefresh.TryToAuthenticate;
+import org.eclipse.osbp.preferences.ProductConfiguration;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Permission;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.PermissionResult;
+import org.eclipse.osbp.ui.api.useraccess.AbstractPosition;
+import org.eclipse.osbp.ui.api.useraccess.IPermissionList;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
+import org.eclipse.osbp.utils.session.VaadinSessionAttributes;
+import org.eclipse.osbp.webserver.messagequeue.CXMqConsumer;
+import org.eclipse.osbp.webserver.messagequeue.CXMqMessagePerspectiveData;
+import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageAttribute;
+import org.eclipse.osbp.webserver.messagequeue.ECXMqMessageEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.github.wolfie.refresher.Refresher;
+import com.github.wolfie.refresher.Refresher.RefreshListener;
+import com.vaadin.server.AbstractClientConnector;
+import com.vaadin.server.Extension;
+import com.vaadin.server.Page;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.UI;
+
+public class HybridVaadinVaaclipseConnector implements RefreshListener, IHybridVaadinVaaclipseListener {
+
+	private static final long serialVersionUID = 7239729235615118954L;
+	private static final Logger LOGGER = LoggerFactory.getLogger(HybridVaadinVaaclipseConnector.class);
+	
+	/**
+	 * @param element to search the containing perspective
+	 * @return the perspective
+	 */
+	public static MPerspective findCurrentPerspectiveFor(MUIElement element) {
+		MPerspective perspective = null;
+		if	(element != null) {
+			if	(element instanceof MPerspective) {
+				perspective = (MPerspective) element;
+			}
+			else {
+				if  (element.getCurSharedRef() != null) {
+					perspective = findCurrentPerspectiveFor(element.getCurSharedRef());
+				}
+				if  ((perspective == null) && (element.getParent() != null)) {
+					perspective = findCurrentPerspectiveFor(element.getParent());
+				}
+			}
+		}
+		return perspective;
+	}
+	
+	private final IEclipseContext fEclipseContext;
+	private MApplication fE4Application;
+	private String fLastFocusPerspectiveId = "";
+	private Queue<Map<String,Object>> fLastListOfPerspectives = new LinkedList<Map<String,Object>>();
+	private Queue<IEventForNextRefresh> fEventsForNextRefresh = null;
+	private HybridPartStateRefresher fPartStateRefresher = null;
+	private MPart fLastActivePart;
+	private AbstractClientConnector fLastExtensionHolder;
+	private boolean fPostInitForSessionHandled;
+	private boolean fPostInitForAuthenticationHandled;
+	private String fMqBrokerHost;
+	private int fMqBrokerPort;
+	private CXMqConsumer fMqConsumer;
+	protected String fSessionId;
+	private Set<IHybridVaadinVaaclipseListener> fListeners = new HashSet<IHybridVaadinVaaclipseListener>();
+
+	private IThemeResourceService getThemeResourceService() {
+		if (fEclipseContext.containsKey(IThemeResourceService.class)) {
+			return fEclipseContext.get(IThemeResourceService.class);
+		}
+		return null;
+	}
+	
+	private EPartService getPartService() {
+		if (fEclipseContext.containsKey(EPartService.class)) {
+			return fEclipseContext.get(EPartService.class);
+		}
+		return null;
+	}
+
+	private EModelService getModelService() {
+		if (fEclipseContext.containsKey(EModelService.class)) {
+			return fEclipseContext.get(EModelService.class);
+		}
+		return null;
+	}
+
+	/**
+	 *  Send message via ActiveMQ
+	 *  @param event
+	 *  @param args
+	 *  @see CXMqConsumer#sendMessage(ECXMqMessageEvent, Object...)
+	 */
+	public void sendMessage(ECXMqMessageEvent event, Object... args) {
+		if	(fMqConsumer == null) {
+			LOGGER.error("Messagequeue consumer is null");
+		}
+		else {
+			fMqConsumer.sendMessage(event, args);
+		}
+	}
+
+	/**
+	 *  @return true if a refresher is already added to the one-and-only TrimmedWindowContent
+	 */
+	public boolean isTrimmedWindowContent() {
+		return isTrimmedWindowContent(fLastExtensionHolder);
+	}
+	
+	/**
+	 *  @param component to be checked
+	 *  @return true if the component is of instance TrimmedWindowContent
+	 */
+	public static boolean isTrimmedWindowContent(AbstractClientConnector component) {
+		return ((component != null) && "org.eclipse.osbp.vaaclipse.presentation.widgets.TrimmedWindowContent".equals(component.getClass().getCanonicalName()));
+	}
+	
+	@Override
+	public void refresh(Refresher source) {
+		// --- if not yet on TrimmedWindowContent ---
+		if	(!isTrimmedWindowContent()) {
+			// --- re-active a part state refresher ---
+			activatePartStateRefresher();
+		}
+		// --- handle all events received via ActiveMq ---
+		while	(!fEventsForNextRefresh.isEmpty()) {
+			IEventForNextRefresh event = fEventsForNextRefresh.poll();
+			if	(event instanceof TryToAuthenticate) {
+				TryToAuthenticate tryToAuthenticate = (TryToAuthenticate) event;
+				tryToAuthenticate(tryToAuthenticate.getPortalId(), tryToAuthenticate.getUserName(), tryToAuthenticate.getPassword());
+			}
+			if	(event instanceof FocusPerspective) {
+				FocusPerspective focusPerspective = (FocusPerspective) event;
+				String perspectiveId = focusPerspective.getSwitchingPerspective();
+				switchPerspective(perspectiveId);
+			}
+		}
+	}
+
+	/**
+	 *  Try to load the icon for the perspective and send it via ActiveMq back to the requester
+	 *  @param perspectiveId the perspective whose icon is requested
+	 *  @return always true, because the corresponding request has always been answered
+	 */
+	public boolean requestIcon(String perspectiveId) {
+		MPerspective perspective = findPerspective(perspectiveId);
+		if	(perspective != null) {
+			String iconURI = perspective.getIconURI();
+			String iconSerialized = null; // get the icon from resource;
+			if	(getThemeResourceService() != null) {
+				try {
+					InputStream stream = getThemeResourceService().getThemeResourceInputStream(iconURI);
+					String[] tokens = iconURI.split("\\.");
+					String extension = tokens[tokens.length-1];
+					BufferedImage originalImage = ImageIO.read(stream);
+					ByteArrayOutputStream baos = new ByteArrayOutputStream();
+					ImageIO.write(originalImage, extension, baos);
+					baos.flush();
+					byte[] imageInByte = baos.toByteArray();
+					baos.close();
+					iconSerialized = new String(Hex.encodeHex(imageInByte));
+	//				byte[] h = Hex.decodeHex(iconSerialized.toCharArray());
+				}
+				catch (Exception e) {
+					LOGGER.error(e.getLocalizedMessage());
+				}
+			}
+			else {
+				LOGGER.error("themeResourceService not set!");
+			}
+			if	(iconSerialized != null) {
+				sendMessage(ECXMqMessageEvent.GET_ICON,
+						ECXMqMessageAttribute.PERSPECTIVE_ID, perspectiveId,
+						ECXMqMessageAttribute.ICON_URI, iconURI,
+						ECXMqMessageAttribute.ICON_SERIALIZED, iconSerialized
+				);
+			}
+		}
+		return true;
+	}
+
+	/**
+	 *  Try to bring the perspective to focus 
+	 *  @param perspectiveId
+	 *  @return true if it was possible, false otherwise
+	 */
+	public boolean onFocusPerspective(String perspectiveId) {
+		boolean retcode = false;
+		// --- if this perspective has already the focus ---
+		if	(fLastFocusPerspectiveId.equals(perspectiveId)) {
+			retcode = true;
+		}
+		// --- if no event queue is existing ---
+		else if (fEventsForNextRefresh == null) {
+			retcode = switchPerspective(perspectiveId);
+		}
+		// --- otherwise put it into the event queue to be handled inside the refresh method ---
+		else {
+			fEventsForNextRefresh.add(new FocusPerspective(perspectiveId));
+			retcode = true;
+		}
+		return retcode;
+	}
+
+	/**
+	 *  Try to bring the perspective to focus
+	 * @param perspectiveId
+	 * @return
+	 */
+	private boolean switchPerspective(String perspectiveId) {
+		boolean retcode = false;
+		// --- if this perspective hasn't already the focus ---
+		if	(!fLastFocusPerspectiveId.equals(perspectiveId)) {
+			MPerspective perspective = findPerspective(perspectiveId);
+			// --- if the perspective exists ---
+			if	(perspective != null) {
+				try {
+					/* ???
+					// @see PerspectiveStackRenderer.processContents()
+					MElementContainer<MUIElement> perspectiveStackElement = perspective.getParent();
+					MPerspectiveStack perspectiveStack = (MPerspectiveStack)((MElementContainer<?>) perspectiveStackElement);
+					perspectiveStack.setSelectedElement(perspective);
+					HybridServiceBinder.processContents(perspectiveStack, perspectiveStackElement);
+	//				for	(MWindow window : perspective.getWindows()) {
+	//					partService.bringToTop(window);
+	//					partService.activate(window);
+	//				}
+					partService.switchPerspective(perspective);
+					??? */
+					getModelService().bringToTop(perspective);
+					fLastFocusPerspectiveId = perspectiveId;
+					retcode = true;
+				}
+				catch (Exception e) {} // NOP
+			}
+		}
+		return retcode;
+	}
+
+	/**
+	 * @param modelService
+	 * @param elementId
+	 * @return the perspective found for elementId
+	 */
+	private MPerspective findPerspective(String elementId) {
+		List<MPerspective> found = getModelService().findElements(fE4Application, elementId, MPerspective.class, null);
+		if	((found != null) && (found.size() == 1)) {
+			return found.get(0);
+		}
+		else {
+			return null;
+		}
+	}
+
+	/**
+	 * @return the perspective found for elementId
+	 */
+	public List<MPerspective> findPerspectives() {
+		return (getModelService().findElements(fE4Application, null, MPerspective.class, null));
+	}
+
+	/**
+	 *  @return the connector instance for the current session
+	 */
+	public static HybridVaadinVaaclipseConnector instance(IEclipseContext eclipseContext) {
+		HybridVaadinVaaclipseConnector instance = VaadinSessionAttributes.get(HybridVaadinVaaclipseConnector.class);
+		if	(instance == null) {
+			instance = new HybridVaadinVaaclipseConnector(eclipseContext);
+			VaadinSessionAttributes.set(HybridVaadinVaaclipseConnector.class, instance);
+		}
+		return instance;
+	}
+
+	/**
+	 *  Dispose the connector instance from the current session
+	 */
+	public static void dispose() {
+		VaadinSessionAttributes.remove(HybridVaadinVaaclipseConnector.class);
+	}
+	
+	public HybridVaadinVaaclipseConnector(IEclipseContext eclipseContext) {
+		fEclipseContext = eclipseContext;
+		fPostInitForSessionHandled = false;
+		fPostInitForAuthenticationHandled = false;
+		// --- get the adress of the Active Message Queue Broker ---
+		fMqBrokerHost = ProductConfiguration.getActiveMqBrokerServerName();
+		fMqBrokerPort = ProductConfiguration.getActiveMqBrokerServerPort();
+	}
+
+	/**
+	 *  @return true if a refresher exists
+	 */
+	protected boolean refresherExisting() {
+		return (fPartStateRefresher != null);
+	}
+
+	/**
+	 *  re-create a refresher if it is needed and not yet added to a TrimmedWindowContent
+	 */
+	protected void activatePartStateRefresher() {
+		if	((fMqConsumer != null) && !isTrimmedWindowContent() && (fLastActivePart != null)) {
+			activatePartStateRefresher(fLastActivePart);
+		}
+	}
+
+	/**
+	 *  (re-)create a refresher for the MPart and not yet added to a TrimmedWindowContent
+	 *  @param part
+	 */
+	protected void activatePartStateRefresher(MPart part) {
+		fLastActivePart = part;
+		// --- create the event queue if it doesn't exists yet ---
+		if	(fEventsForNextRefresh == null) {
+			fEventsForNextRefresh = new LinkedList<IEventForNextRefresh>();			
+		}
+		// --- no refresher if not connected to any hybrid ---
+		if	(fMqConsumer == null) {
+			return;
+		}
+		// --- no re-create refresher if it is already set on a TrimmedWindowContent ---
+		if	(isTrimmedWindowContent()) {
+			return;
+		}
+		if	(part != null) {
+			Object object = part.getObject();
+			// --- get the view connected to the MPart ---
+			if	(object instanceof AbstractHybridVaaclipseView) {
+				AbstractHybridVaaclipseView view = (AbstractHybridVaaclipseView) object;
+				// --- get the parent component ---
+				AbstractClientConnector parent = view.getParent();
+				Method addExtension = null;
+				AbstractClientConnector extensionHolder = null;
+				try {
+					// --- traverse the parents to get the topmost extension holder ---
+					while  ((parent != null) && (parent.getParent() != null)) {
+						try {
+							// --- check each parent for ... ---
+							for	(Class cls = parent.getClass(); cls != null; cls = cls.getSuperclass()) {
+								try {
+									// --- ... each extended class ... ---
+									if  (cls.getDeclaredMethod("addExtension", Extension.class) != null) {
+										// --- if it has a method addExtension(Extension) ---
+										extensionHolder = parent;
+										addExtension = cls.getDeclaredMethod("addExtension", Extension.class);
+										break;
+									}
+								}
+								catch (Exception e) {} // NOP
+							}
+						}
+						catch (Exception e) {} // NOP
+						// --- the parent ---
+						parent = (AbstractClientConnector) parent.getParent();
+						// --- if this instance is a TrimmedWindowContent itself ---
+						if	(HybridVaadinVaaclipseConnector.isTrimmedWindowContent(extensionHolder)) {
+							break;
+						}
+					}
+					// --- if a possible extension holder was found ---
+					if	(extensionHolder != null) {
+						Collection<Extension> extensions = extensionHolder.getExtensions();
+						for	(Extension extension : extensions) {
+							// --- if it already has a refresher ---
+							if	(extension instanceof HybridPartStateRefresher) {
+								return;
+							}
+						}
+						if	(addExtension != null) {
+							// --- enable the accessability of the method ---
+							addExtension.setAccessible(true);
+							// --- generate a new refresher; they can't be moved to another parent ---
+							fPartStateRefresher = new HybridPartStateRefresher(this);
+							addExtension.invoke(extensionHolder, new Object[] { fPartStateRefresher });
+							// --- remember the last active extension holder ---
+							fLastExtensionHolder = extensionHolder;
+						}
+					}
+				}
+				catch (Exception e) {} // NOP
+			}
+		}
+	}
+	
+	public void setE4Application(MApplication e4Application) {
+		fE4Application = e4Application;
+	}
+	
+	public IUserAccessService getUserAccessService() {
+		return HybridServiceBinder.getUserAccessService();
+	}
+	
+	public void addListener(IHybridVaadinVaaclipseListener listener) {
+		if	(!fListeners.contains(listener)) {
+			fListeners.add(listener);
+			// --- inform the listener if the session is already authenticated ---
+			listener.setAuthenticated(isAuthenticated());
+		}
+	}
+
+	public void removeListener(IHybridVaadinVaaclipseListener listener) {
+		fListeners.remove(listener);
+	}
+
+	public HybridCredentials getCredentials(boolean forceCheckForCredentials) {
+		HybridCredentials credentials = null;
+		// --- do it only once per session ---
+		if	(forceCheckForCredentials || !fPostInitForAuthenticationHandled) {
+			fPostInitForAuthenticationHandled = true;
+			
+			UI ui = UI.getCurrent();
+			if	(ui != null) {
+				Page page = ui.getPage();
+				if	(page != null) {
+					String developmentCredentialsParam = null;
+					
+					// --- get the starting URI --- 
+					URI uri = page.getLocation();
+					// --- extract all parameters ---
+					List<NameValuePair> params = URLEncodedUtils.parse(uri, "UTF-8");
+		
+					for (NameValuePair param : params) {
+						// --- if - in development mode - credentials are given ---
+						if	("OSBEE_HYBRID_DEVELOPMENT_PASSWORD_NONE_CRYPTED".equals(param.getName())) {
+							developmentCredentialsParam = param.getValue();
+						}
+					}
+					if (developmentCredentialsParam != null) {
+						try {
+							String[] token = developmentCredentialsParam.split("@", 3);
+							credentials = new HybridCredentials(token[0], token[1], token[2]);
+						}
+						catch (Exception e) {
+						}
+					}
+				}
+			}
+		}			
+		return credentials;
+	}
+	
+	/**
+	 * You <b>must call this  at the end of the overriden init()</b>
+	 */
+	public final void postInit(VaadinRequest request) {
+		// --- do it only once per session ---
+		if	(!fPostInitForSessionHandled) {
+			fPostInitForSessionHandled = true;
+			
+			Page page = UI.getCurrent().getPage();
+			if	(page != null) {
+				String requestParam = null;
+				
+				// --- get the starting URI --- 
+				URI uri = page.getLocation();
+				// --- extract all parameters ---
+				List<NameValuePair> params = URLEncodedUtils.parse(uri, "UTF-8");
+	
+				for (NameValuePair param : params) {
+					// --- if the parameter request was used ---
+					if	("request".equals(param.getName())) {
+						requestParam = param.getValue();
+					}
+					else {
+						LOGGER.debug(param.getName() + " : " + param.getValue());
+					}
+				}
+				
+				// --- if request, then only request ---
+				if	(requestParam != null) {
+					if	(requestParam.startsWith("tcp://")) {
+						try {
+							String[] mqBrokerInfo = requestParam.replace("tcp://", "").split("\\|")[0].split(":");
+							if	(mqBrokerInfo.length == 2) {
+								fMqBrokerHost = mqBrokerInfo[0];
+								fMqBrokerPort = Integer.parseInt(mqBrokerInfo[1]);
+							}
+						}
+						catch (Exception e) {}
+					}
+					// --- connect to the ActiveMQ and try to connect to the corresponding queuename ---
+					fMqConsumer = new CXMqConsumer(
+						fMqBrokerHost, fMqBrokerPort,
+						requestParam,
+						UUID.randomUUID().toString(),
+						this,
+						null
+					);
+					// TODO this should help out to wait long enough until the authentication is done
+					// TODO there should be definitely a better wait for that!!!!
+					// TODO see {@link #onMessage(ECXMqMessageEvent, Map<ECXMqMessageAttribute, Object>)}
+					// ???? try {
+					// ???? 	Thread.sleep(5000);
+					// ???? } catch (InterruptedException e) {
+					// ???? 	e.printStackTrace();
+					// ???? }
+				}
+				else {
+					try {
+						HybridCredentials credentials = getCredentials(false);
+						if	(credentials != null) {
+							tryToAuthenticate(credentials.getPortalId(), credentials.getUserName(), credentials.getPassword());
+						}
+					}
+					catch (Exception e) {
+						LOGGER.error(e.getLocalizedMessage());
+					}
+				}
+			}
+		}
+	}
+	
+	
+	
+	/**
+	 * React in the application according to <code>authenticated</code>
+	 * @param authenticated true if the user is authenticated now!
+	 */
+	@Deprecated
+	public void setAuthenticated(boolean authenticated) {
+		// @TODO to be overwritten
+	}
+
+	/**
+	 * @return true if the actual session is authenticated
+	 */
+	public boolean isAuthenticated() {
+		if 	(HybridServiceBinder.getUserAccessService() == null) {
+			return false;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().isAuthenticated();
+		}
+	}
+
+	/**
+	 * @return the user instance for the authenticated session, otherwise null
+	 */
+	public IDto getUser() {
+		if 	(HybridServiceBinder.getUserAccessService() == null) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().getUser();
+		}
+	}
+	
+	/**
+	 * @return the position instance for the authenticated session, otherwise null
+	 */
+	public AbstractPosition getPosition() {
+		if 	(HybridServiceBinder.getUserAccessService() == null) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().getPosition();
+		}
+	}
+	
+	/**
+	 * @return the collection of roles for the authenticated session, otherwise null
+	 */
+	public Collection<String> getRoles() {
+		if 	(HybridServiceBinder.getUserAccessService() == null) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().getRoles();
+		}
+	}
+	
+	/**
+	 * @return the permission list for the authenticated session, otherwise null
+	 */
+	public IPermissionList getPermissions() {
+		if 	(HybridServiceBinder.getUserAccessService() == null) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().getPermissions();
+		}
+	}
+
+	/**
+	 * @param permission the permission to be checked
+	 * @return true if the permission is permitted for the actual session
+	 */
+	public PermissionResult isPermitted(Permission permission) {
+		if 	(HybridServiceBinder.getUserAccessService() == null) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().isPermitted(permission);
+		}
+	}
+
+	/**
+	 * @return the list of all usernames; null will be returned if the session is not authenticated
+	 */
+	public Set<String> getAllUsers() {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().getAllUsers();
+		}
+	}
+	
+	/**
+	 * @param username name of the user
+	 * @return the user instance for the username; null will be returned if the session is not authenticated
+	 */
+	public IDto findUserAccount(String username) {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().findUserAccount(username);
+		}
+	}
+	
+	/**
+	 * @param position to be checked
+	 * @return the list of usernames connected to the position; null will be returned if the session is not authenticated
+	 */
+	public Set<String> findUsersForPosition(AbstractPosition position) {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return findUsersForPosition(position.getName());
+		}
+	}
+	
+	/**
+	 * @param orgNode name of the position to be checked
+	 * @return the list of usernames connected to the position; null will be returned if the session is not authenticated
+	 */
+	public Set<String> findUsersForPosition(String orgNode) {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().findUsersForPosition(orgNode);
+		}
+	}
+	
+	/**
+	 * @return the list of all position instances; null will be returned if the session is not authenticated
+	 */
+	public Set<AbstractPosition> getAllPositions() {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().getAllPositions();
+		}
+	}
+	
+	/**
+	 * @param username name of the user
+	 * @return the position instances for the user; null will be returned if the session is not authenticated
+	 */
+	public AbstractPosition findPositionForUser(String username) {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().findPositionForUser(username);
+		}
+	}
+
+	/**
+	 * @param username name of the user
+	 * @return the list of roles for the user; null will be returned if the session is not authenticated
+	 */
+	public Collection<String> findRolesForUser(String username) {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().findRolesForUser(username);
+		}
+	}
+	
+	/**
+	 * @param username name of the user
+	 * @return the permission list for the user; null will be returned if the session is not authenticated
+	 */
+	public IPermissionList findPermissionsForUser(String username) {
+		if	(!isAuthenticated()) {
+			return null;
+		}
+		else {
+			return HybridServiceBinder.getUserAccessService().findPermissionsForUser(username);
+		}
+	}
+	
+	/**
+	 * Try to authenticate with the credentials given!<br>
+	 * {@link #setAuthenticated(boolean)} will explicit be called!
+	 * @param portalId
+	 * @param userName
+	 * @param password
+	 * @return true if the user was authenticated successful
+	 */
+	boolean tryToAuthenticate(String portalId, String userName, String password) {
+		boolean authenticated = isAuthenticated();
+		if	(!authenticated) {
+			try {
+				authenticated = HybridServiceBinder.getUserAccessService().authenticate(portalId, userName, password);
+			}
+			catch (Exception e) {
+				LOGGER.error(e.getLocalizedMessage());
+			}
+			for	(IHybridVaadinVaaclipseListener listener : fListeners) {
+				listener.setAuthenticated(authenticated);
+			}
+		}
+		return authenticated;
+	}
+	
+	/**
+	 * Logout from the Shiro API and send a LOGOUT event via ActiveMQ
+	 */
+	protected void logout() {
+		if	(HybridServiceBinder.getUserAccessService() == null) {
+		}
+		else {
+			HybridServiceBinder.getUserAccessService().logout();
+		}
+		if	(fMqConsumer != null) {
+			fMqConsumer.sendMessage(ECXMqMessageEvent.LOGOUT);
+		}
+		for	(IHybridVaadinVaaclipseListener listener : fListeners) {
+			listener.setAuthenticated(false);
+		}
+		dispose();
+	}
+	
+	/**
+	 *  Inform the hybrid client about the now focussed perspective
+	 *  @param perspectiveId
+	 */
+	public final void updateFocusPerspective(String perspectiveId) {
+		if	(fMqConsumer != null) {
+			// --- only if the focussed perspective has changed ---
+			if	(!fLastFocusPerspectiveId.equals(perspectiveId)) {
+				fMqConsumer.sendMessage(ECXMqMessageEvent.FOCUS_PERSPECTIVE, ECXMqMessageAttribute.PERSPECTIVE_ID, perspectiveId);
+			}
+			fLastFocusPerspectiveId = perspectiveId;
+		}
+	}
+
+	/**
+	 *  @param q1
+	 *  @param q2
+	 *  @return true if both queues have identical content
+	 */
+	private final boolean compare(Queue<Map<String,Object>> q1, Queue<Map<String,Object>> q2) {
+		try {
+			if	(q1 == q2) {
+				return true;
+			}
+			if	(q1.size() != q2.size()) {
+				return false;
+			}
+			else {
+				Object[] a1 = q1.toArray();
+				Object[] a2 = q2.toArray();
+				for	(int i=0; i<q1.size(); i++) {
+					if	(!a1[i].equals(a2[i])) {
+						return false;
+					}
+				}
+			}
+			return true;
+		}
+		catch (Exception e) {
+			e.printStackTrace();
+		}
+		return false;
+	}
+	
+	/**
+	 *  Inform the hybrid client about all available perspectives
+	 *  @param perspectiveId
+	 */
+	public final void updatePerspectiveList() {
+		if	((fMqConsumer != null) && (fE4Application != null)) {
+			// --- get the perspectives ---
+			List<MPerspective> perspectives = findPerspectives();
+			Queue<Map<String,Object>> queue = new LinkedList<Map<String,Object>>();
+			// --- if no perspectives available ---
+			if	((perspectives == null) || perspectives.isEmpty()) {
+				fMqConsumer.sendMessage(ECXMqMessageEvent.LIST_OF_PERSPECTIVES);
+			}
+			// --- otherwise ---
+			else {
+				for	(MPerspective perspective : perspectives) {
+					// --- only rememer visible perspectives ---
+					if	(perspective.isVisible() && perspective.isToBeRendered()) {
+						CXMqMessagePerspectiveData data = new CXMqMessagePerspectiveData(
+								perspective.getElementId(),
+								perspective.getLabel(),
+								perspective.getIconURI());
+						queue.offer(data.getMap());
+					}
+				}
+			}
+			// --- only if the queue of perspectives has changed ---
+			if	(!compare(queue, fLastListOfPerspectives)) {
+				fLastListOfPerspectives = new LinkedList<Map<String,Object>>(queue);
+				fMqConsumer.sendMessage(ECXMqMessageEvent.LIST_OF_PERSPECTIVES, ECXMqMessageAttribute.PERSPECTIVE_ID, queue);
+			}
+			// --- now inform about the actual focussed perspective ---
+			MPerspective active = findCurrentPerspectiveFor(getPartService().getActivePart());
+			if	(active instanceof MPerspective) {
+				updateFocusPerspective (active.getElementId());
+			}
+		}
+	}
+
+	/**
+	 *  call a legacy program via hybrid client
+	 *  @param legacyProgramCall
+	 */
+	public final void callLegacyProgram(String legacyProgramCall) {
+		if	(fMqConsumer != null) {
+			fMqConsumer.callLegacyProgram(legacyProgramCall);
+		}
+	}
+	
+	/**
+	 * handle any message received via ActiveMQ
+	 * @param event
+	 * @param body
+	 */
+	@Override
+	public final boolean onMessage(ECXMqMessageEvent event, Map<ECXMqMessageAttribute, Object> body) {
+		boolean retcode = false;
+		switch (event) {
+			case TRY_AUTHENTICATE:
+				// --- try to authenticate with the credentials received ---
+				if	(fEventsForNextRefresh == null) {
+					tryToAuthenticate(
+							body.get(ECXMqMessageAttribute.PORTAL_ID).toString(),
+							body.get(ECXMqMessageAttribute.USERNAME).toString(),
+							body.get(ECXMqMessageAttribute.PASSWORD).toString()
+						);
+				}
+				else {
+					fEventsForNextRefresh.add(new TryToAuthenticate(
+							body.get(ECXMqMessageAttribute.PORTAL_ID).toString(),
+							body.get(ECXMqMessageAttribute.USERNAME).toString(),
+							body.get(ECXMqMessageAttribute.PASSWORD).toString()
+						));
+				}
+				// TODO maybe after that the sleep could be stopped?
+				// TODO see {@link #postInit(VaadinRequest)}
+				retcode = true;
+				break;
+			case DISPOSE:
+			case LOGOUT:
+				// --- logout triggered through the event ---
+				logout();
+				retcode = true;
+				break;
+			default:
+				for	(IHybridVaadinVaaclipseListener listener : fListeners) {
+					if	(listener.onMessage(event, body)) {
+						retcode = true;
+						break;
+					}
+				}
+				break;
+		}
+		return retcode;
+	}
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IEventForNextRefresh.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IEventForNextRefresh.java
new file mode 100644
index 0000000..aec1173
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IEventForNextRefresh.java
@@ -0,0 +1,56 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+
+public interface IEventForNextRefresh {
+
+	public class TryToAuthenticate implements IEventForNextRefresh {
+		private final String fPortalId;
+		private final String fUserName;
+		private final String fPassword;
+		
+		protected TryToAuthenticate(String portalId, String userName, String password) {
+			fPortalId = portalId;
+			fUserName = userName;
+			fPassword = password;
+		}
+
+		public String getPortalId() {
+			return fPortalId;
+		}
+
+		public String getUserName() {
+			return fUserName;
+		}
+
+		public String getPassword() {
+			return fPassword;
+		}
+	}
+	
+	public final class FocusPerspective implements IEventForNextRefresh {
+		private final String fSwitchingPerspective;
+		
+		protected FocusPerspective(String elementId) {
+			fSwitchingPerspective = elementId;
+		}
+
+		public String getSwitchingPerspective() {
+			return fSwitchingPerspective;
+		}
+	}
+	
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IHybridVaadinVaaclipseListener.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IHybridVaadinVaaclipseListener.java
new file mode 100644
index 0000000..d61f7f7
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IHybridVaadinVaaclipseListener.java
@@ -0,0 +1,19 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import org.eclipse.osbp.webserver.messagequeue.ICXMqMessageListener;
+
+public interface IHybridVaadinVaaclipseListener extends ICXMqMessageListener {
+	void setAuthenticated(boolean authenticated);
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IPresentationRenderer.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IPresentationRenderer.java
new file mode 100644
index 0000000..6e28612
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/IPresentationRenderer.java
@@ -0,0 +1,21 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
+
+public interface IPresentationRenderer {
+	void processContents(MPerspectiveStack perspectiveStack, MElementContainer<MUIElement> perspectiveStackElement);
+}
diff --git a/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/RecursiveFocusBlurListener.java b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/RecursiveFocusBlurListener.java
new file mode 100644
index 0000000..fe236af
--- /dev/null
+++ b/org.eclipse.osbp.osgi.hybrid.api/src/org/eclipse/osbp/osgi/hybrid/api/RecursiveFocusBlurListener.java
@@ -0,0 +1,313 @@
+/**
+ *                                                                            
+ * 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.osgi.hybrid.api;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.vaadin.event.FieldEvents.BlurEvent;
+import com.vaadin.event.FieldEvents.BlurListener;
+import com.vaadin.event.FieldEvents.BlurNotifier;
+import com.vaadin.event.FieldEvents.FocusEvent;
+import com.vaadin.event.FieldEvents.FocusListener;
+import com.vaadin.event.FieldEvents.FocusNotifier;
+import com.vaadin.server.AbstractClientConnector;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.AbstractComponentContainer;
+import com.vaadin.ui.AbstractLayout;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.HasComponents;
+import com.vaadin.ui.HasComponents.ComponentAttachDetachNotifier;
+import com.vaadin.ui.HasComponents.ComponentAttachEvent;
+import com.vaadin.ui.HasComponents.ComponentAttachListener;
+import com.vaadin.ui.HasComponents.ComponentDetachEvent;
+import com.vaadin.ui.HasComponents.ComponentDetachListener;
+
+import org.eclipse.osbp.utils.theme.EnumCssClass;
+
+
+public class RecursiveFocusBlurListener implements ComponentAttachListener, ComponentDetachListener {
+
+	private static final Logger LOGGER = LoggerFactory.getLogger(RecursiveFocusBlurListener.class);
+	private AbstractComponentContainer fParent;
+	
+	protected RecursiveFocusBlurListener(AbstractComponentContainer container) {
+		fParent = container;
+	}
+	
+	public static RecursiveFocusBlurListener attachFor(AbstractComponentContainer container) {
+		RecursiveFocusBlurListener listener = new RecursiveFocusBlurListener(container);
+		listener.recursiveAddComponentAttachDetachListener(container);
+		listener.recursiveAddFocusBlurListener(container);
+		return listener;
+	}
+
+	public void detach() {
+		recursiveRemoveComponentAttachDetachListener(fParent);
+		recursiveRemoveFocusBlurListener(fParent);
+	}
+
+	private FocusListener fFocusListener = new FocusListener() {
+		@Override
+		public void focus(FocusEvent event) {
+			if	(event.getComponent() instanceof AbstractComponent) {
+				AbstractComponent component = (AbstractComponent) event.getComponent();
+				recursiveFocus((AbstractComponent)event.getComponent());
+			}
+		}
+	};
+
+	private void recursiveFocus(AbstractComponent component) {
+		if	(component != null) {
+			component.addStyleName(EnumCssClass.HAS_FOCUS.styleName());
+			if	(!component.equals(fParent) && (component.getParent() instanceof AbstractComponent)) {
+				recursiveFocus((AbstractComponent)component.getParent());
+			}
+		}
+	}
+
+	private BlurListener fBlurListener = new BlurListener() {
+		@Override
+		public void blur(BlurEvent event) {
+			if	(event.getComponent() instanceof AbstractComponent) {
+				AbstractComponent component = (AbstractComponent) event.getComponent();
+				recursiveBlur((AbstractComponent)event.getComponent());
+			}
+		}
+	};
+
+	private void recursiveBlur(AbstractComponent component) {
+		if	(component != null) {
+			component.removeStyleName(EnumCssClass.HAS_FOCUS.styleName());
+			if	(!component.equals(fParent) && (component.getParent() instanceof AbstractComponent)) {
+				recursiveBlur((AbstractComponent)component.getParent());
+			}
+		}
+	}
+	
+	private static final long serialVersionUID = 3497317619845108761L;
+	
+	@Override
+	public void componentAttachedToContainer(ComponentAttachEvent event) {
+		if	(event.getAttachedComponent() instanceof ComponentAttachDetachNotifier) {
+			recursiveAddComponentAttachDetachListener((ComponentAttachDetachNotifier)event.getAttachedComponent());
+		}
+		if	(event.getAttachedComponent() instanceof AbstractClientConnector) {
+			recursiveAddFocusBlurListener((AbstractClientConnector)event.getAttachedComponent());
+		}
+	}
+
+	@Override
+	public void componentDetachedFromContainer(ComponentDetachEvent event) {
+		if	(event.getDetachedComponent() instanceof ComponentAttachDetachNotifier) {
+			recursiveRemoveComponentAttachDetachListener((ComponentAttachDetachNotifier)event.getDetachedComponent());
+		}
+		if	(event.getDetachedComponent() instanceof AbstractComponent) {
+			recursiveRemoveFocusBlurListener((AbstractComponent)event.getDetachedComponent());
+		}
+	}
+	
+	private void recursiveAddComponentAttachDetachListener(ComponentAttachDetachNotifier container) {
+		AbstractComponent ccontainer = (AbstractComponent) container;
+		//ccontainer.setImmediate(true);
+		Collection<?> attachListeners = ccontainer.getListeners(ComponentAttachEvent.class);
+		if	(!attachListeners.contains(this)) {
+			container.addComponentAttachListener(this);
+		}
+		Collection<?> detachListeners = ccontainer.getListeners(ComponentDetachEvent.class);
+		if	(!detachListeners.contains(this)) {
+			container.addComponentAttachListener(this);
+		}
+		if	(container instanceof HasComponents) {
+			Iterator<Component> iterator = ((HasComponents)container).iterator();
+			while	(iterator.hasNext()) {
+				Component component = iterator.next();
+				if	(component instanceof ComponentAttachDetachNotifier) {
+					recursiveAddComponentAttachDetachListener((ComponentAttachDetachNotifier)component);
+				}
+			}
+		}
+	}
+	
+	private void recursiveRemoveComponentAttachDetachListener(ComponentAttachDetachNotifier container) {
+		container.removeComponentAttachListener(this);
+		container.removeComponentAttachListener(this);
+		if	(container instanceof HasComponents) {
+			Iterator<Component> iterator = ((HasComponents)container).iterator();
+			while	(iterator.hasNext()) {
+				Component component = iterator.next();
+				if	(component instanceof AbstractComponentContainer) {
+					recursiveRemoveComponentAttachDetachListener((AbstractComponentContainer)component);
+				}
+			}
+		}
+	}
+
+	private Map<Class<?>,Method> fAddFocusListenerMethods = new HashMap<>(); 
+	private Map<Class<?>,Method> fRemoveFocusListenerMethods = new HashMap<>(); 
+	private Map<Class<?>,Method> fAddBlurListenerMethods = new HashMap<>(); 
+	private Map<Class<?>,Method> fRemoveBlurListenerMethods = new HashMap<>(); 
+	
+	private static Set<String> fFocusListenerLogList = new HashSet<>(); 
+	private static Set<String> fBlurListenerLogList = new HashSet<>(); 
+
+	private void addFocusListener(AbstractClientConnector component) {
+		Method addFocusListenerMethod = fAddFocusListenerMethods.get(component.getClass());
+		if	(addFocusListenerMethod == null) {
+			try {
+				addFocusListenerMethod = component.getClass().getDeclaredMethod("addFocusListener", FocusListener.class);
+				if	(addFocusListenerMethod != null) {
+					fAddFocusListenerMethods.put(component.getClass(), addFocusListenerMethod);
+					Method removeFocusListenerMethod = component.getClass().getDeclaredMethod("removeFocusListener", FocusListener.class);
+					if	(removeFocusListenerMethod != null) {
+						fRemoveFocusListenerMethods.put(component.getClass(), removeFocusListenerMethod);
+					}
+				}
+			}
+			catch (NoSuchMethodException | SecurityException e) {
+			}
+		}
+		String className = component.getClass().getCanonicalName();
+		if	(fFocusListenerLogList.contains(className)) {
+			className = null;
+		}
+		else {
+			fFocusListenerLogList.add(className);
+		}
+		if	(addFocusListenerMethod != null) {
+			try {
+				addFocusListenerMethod.invoke(component, new Object[] {fFocusListener});
+			}
+			catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+				if	((className != null) && LOGGER.isWarnEnabled()) { LOGGER.warn("focuL: "+className+" could not invoke "+e.getLocalizedMessage()); }
+			}
+		}
+		else {
+			if	(!(component instanceof AbstractLayout)) {
+				if	((className != null) && LOGGER.isWarnEnabled()) { LOGGER.warn("focuL: "+className+" DOESN'T IMPLEMENT FocusNotifier"); }
+			}
+		}
+	}
+	
+	private void addBlurListener(AbstractClientConnector component) {
+		Method addBlurListenerMethod = fAddBlurListenerMethods.get(component.getClass());
+		if	(addBlurListenerMethod == null) {
+			try {
+				addBlurListenerMethod = component.getClass().getDeclaredMethod("addBlurListener", BlurListener.class);
+				if	(addBlurListenerMethod != null) {
+					fAddBlurListenerMethods.put(component.getClass(), addBlurListenerMethod);
+					Method removeBlurListenerMethod = component.getClass().getDeclaredMethod("removeBlurListener", BlurListener.class);
+					if	(removeBlurListenerMethod != null) {
+						fRemoveBlurListenerMethods.put(component.getClass(), removeBlurListenerMethod);
+					}
+				}
+			}
+			catch (NoSuchMethodException | SecurityException e) {
+			}
+		}
+		String className = component.getClass().getCanonicalName();
+		if	(fBlurListenerLogList.contains(className)) {
+			className = null;
+		}
+		else {
+			fBlurListenerLogList.add(className);
+		}
+		if	(addBlurListenerMethod != null) {
+			try {
+				addBlurListenerMethod.invoke(component, new Object[] {fBlurListener});
+			}
+			catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+				if	((className != null) && LOGGER.isWarnEnabled()) { LOGGER.warn("blurL: "+className+" could not invoke "+e.getLocalizedMessage()); }
+			}
+		}
+		else {
+			if	(!(component instanceof AbstractLayout)) {
+				if	((className != null) && LOGGER.isWarnEnabled()) { LOGGER.warn("blurL: "+className+" DOESN'T IMPLEMENT BlurNotifier"); }
+			}
+		}
+	}
+	
+	private void recursiveAddFocusBlurListener(AbstractClientConnector component) {
+		Collection<?> focusListeners = ((AbstractClientConnector)component).getListeners(FocusEvent.class);
+		if	(!focusListeners.contains(fFocusListener)) {
+			if	(component instanceof FocusNotifier) {
+				((FocusNotifier) component).addFocusListener(fFocusListener);
+			}
+			else {
+				addFocusListener(component);
+			}
+			if	(component instanceof BlurNotifier) {
+				((BlurNotifier) component).addBlurListener(fBlurListener);
+			}
+			else {
+				addBlurListener(component);
+			}
+		}
+		if	(component instanceof AbstractComponentContainer) {
+			Iterator<Component> iterator = ((AbstractComponentContainer)component).iterator();
+			while	(iterator.hasNext()) {
+				Component child = iterator.next();
+				if	(component instanceof AbstractClientConnector) {
+					recursiveAddFocusBlurListener((AbstractClientConnector)child);
+				}
+			}
+		}
+	}
+	
+	private void recursiveRemoveFocusBlurListener(AbstractClientConnector component) {
+		if	(component instanceof FocusNotifier) {
+			((FocusNotifier) component).removeFocusListener(fFocusListener);
+		}
+		else {
+			Method removeFocusListenerMethod = fRemoveFocusListenerMethods.get(component.getClass());
+			if	(removeFocusListenerMethod != null) {
+				try {
+					removeFocusListenerMethod.invoke(component, new Object[] {fFocusListener});
+				}
+				catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+				}
+			}
+		}
+		if	(component instanceof BlurNotifier) {
+			((BlurNotifier) component).removeBlurListener(fBlurListener);
+		}
+		else {
+			Method removeBlurListenerMethod = fRemoveBlurListenerMethods.get(component.getClass());
+			if	(removeBlurListenerMethod != null) {
+				try {
+					removeBlurListenerMethod.invoke(component, new Object[] {fBlurListener});
+				}
+				catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+				}
+			}
+		}
+		if	(component instanceof HasComponents) {
+			Iterator<Component> iterator = ((HasComponents)component).iterator();
+			while	(iterator.hasNext()) {
+				Component child = iterator.next();
+				if	(component instanceof AbstractComponent) {
+					recursiveRemoveFocusBlurListener((AbstractComponent)child);
+				}
+			}
+		}
+	}
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..4f81cc7
--- /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.osgi.hybrid.api</groupId>
+    <artifactId>org.eclipse.osbp.osgi.hybrid.api.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.osgi.hybrid.api</module>
+        <module>org.eclipse.osbp.osgi.hybrid.api.feature</module>
+        <!-- <module>org.eclipse.osbp.osgi.hybrid.api.p2</module> -->
+    </modules>
+
+    <profiles>
+        <profile>
+            <id>build.p2</id>
+            <activation>
+                <property>
+                    <name>osbp.build.p2</name>
+                </property>
+            </activation>
+            <modules>
+                <!-- <module>org.eclipse.osbp.osgi.hybrid.api.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>