catch up with development
diff --git a/.artifactVersions b/.artifactVersions
deleted file mode 100644
index 9774cde..0000000
--- a/.artifactVersions
+++ /dev/null
@@ -1,4 +0,0 @@
-version=0.9.1-SNAPSHOT
-relengVersion=0.12.5-SNAPSHOT
-relengGroupId=org.lunifera.releng.maven
-relengP2Version=0.12.5-SNAPSHOT
diff --git a/.depVersions b/.depVersions
deleted file mode 100644
index 7f083e3..0000000
--- a/.depVersions
+++ /dev/null
@@ -1,6 +0,0 @@
-org.eclipse.xtend;min=2.7.3;max=2.8.0
-org.eclipse.xtext;min=2.7.3;max=2.8.0
-org.semanticsoft;min=2.7.3;max=3.0.0
-org.lunifera.dsl;min=0.9.0;max=0.10.0
-org.lunifera;min=0.9.0;max=0.10.0
-com.google.guava;min=10.0.0;max=19.0.0
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..845a766
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+bin/
+.*.jar
+**/xtend-gen
+.DS_Store
+target
+xtend-gen/
+plugin.xml_gen
+/build.runtime.kepler.latest.log.properties
+**/log
+org.eclipse.osbp.runtime.systemextension.license
+org.eclipse.osbp.runtime.systemextension.license.tests.addon
+**git.properties
+
+**/target/
+**/.metadata/
+
+**/emf-gen/**/.gitignore
+**/src-gen/**/.gitignore
+**/git.properties
+**/*.java._trace
+**/*.log
+**/*.log.properties
+
+**/bin/
+**/build/
+*.class
+*.ctrl
+**/Debug/
+.DS_Store
+*.ear
+*.war
+
+**/*.actionbin
+**/*.blipbin
+**/*.chartbin
+**/*.cubebin
+**/*.datatypebin
+**/*.dtobin
+**/*.entitybin
+**/*.servicebin
+**/*.tablebin
+**/*.uibin
+**/*.uisemanticbin
+**/*.xtendbin
+**/*.xtextbin
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.common.tests/.classpath b/org.eclipse.osbp.runtime.common.tests/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.common.tests/.project b/org.eclipse.osbp.runtime.common.tests/.project
index 3063fcc..6695e11 100644
--- a/org.eclipse.osbp.runtime.common.tests/.project
+++ b/org.eclipse.osbp.runtime.common.tests/.project
@@ -6,12 +6,40 @@
 	</projects>
 	<buildSpec>
 		<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.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<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.runtime.common.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
index fc612f6..715db10 100644
--- a/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.common.tests/META-INF/MANIFEST.MF
@@ -4,10 +4,15 @@
 Bundle-SymbolicName: org.eclipse.osbp.runtime.common.tests
 Bundle-Version: 0.9.0.qualifier
 Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.junit,
- org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.equinox.ds;bundle-version="1.4.400",
+ org.eclipse.osgi;bundle-version="3.11.3",
+ org.eclipse.osgi.services;bundle-version="3.5.100",
+ org.eclipse.osgi.util;bundle-version="3.3.100",
+ org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.equinox.coordinator;bundle-version="1.3.200"
 Bundle-ActivationPolicy: lazy
 Import-Package: org.knowhowlab.osgi.testing.assertions;version="1.3.0",
- org.knowhowlab.osgi.testing.utils;version="1.1.0",
  org.osgi.framework;version="1.7.0"
diff --git a/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionManagerTest.java b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionManagerTest.java
new file mode 100644
index 0000000..1f46ed2
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionManagerTest.java
@@ -0,0 +1,246 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+
+public class SessionManagerTest {
+
+	private static BundleContext bc;
+	private static ISessionManager sessionManager;
+
+	@BeforeClass
+	public static void setup() {
+		bc = FrameworkUtil.getBundle(SessionManagerTest.class).getBundleContext();
+
+		ServiceReference<ISessionManager> ref = bc.getServiceReference(ISessionManager.class);
+		sessionManager = bc.getService(ref);
+		assertNotNull(sessionManager);
+
+		bc.registerService(ISession.class, new Session("1"), null);
+		bc.registerService(ISession.class, new Session("2"), null);
+		bc.registerService(ISession.class, new Session("3"), null);
+		bc.registerService(ISession.class, new Session("4"), null);
+	}
+
+	private CountDownLatch latch;
+	private AtomicInteger count;
+	private AtomicInteger error;
+	private AtomicInteger generalCount;
+
+	@Test
+	public void test_getSessions() {
+		List<ISession> result = sessionManager.getSessions((t) -> t.get("id") != null);
+		assertEquals(4, result.size());
+
+		List<ISession> result2 = sessionManager.getSessions((t) -> t.get("id").equals("2"));
+		assertEquals(1, result2.size());
+	}
+
+	@Test
+	public void test_getSessionsAsync() {
+		CompletableFuture<List<ISession>> result = sessionManager.getSessionsAsync((t) -> t.get("id") != null);
+		result.thenAccept((sessions) -> {
+			assertEquals(4, sessions.size());
+		});
+	}
+
+	@Test
+	public void test_asyncEach_Simple() {
+
+		latch = new CountDownLatch(2);
+		count = new AtomicInteger();
+		error = new AtomicInteger();
+
+		Set<String> filterIds = Collections.synchronizedSet(new HashSet<>());
+		filterIds.add("1");
+		filterIds.add("3");
+
+		List<CompletableFuture<FutureResult<String>>> results = sessionManager.asyncEach((s) -> {
+			return (String) s.get("id");
+		}, (r) -> {
+			count.incrementAndGet();
+			latch.countDown();
+			if (!r.isError) {
+				filterIds.remove(r.value);
+			}
+		}, (sessionFilter) -> filterIds.contains(sessionFilter.get("id")));
+
+		try {
+			latch.await(500, TimeUnit.MILLISECONDS);
+		} catch (InterruptedException e) {
+			fail();
+		}
+
+		assertEquals(2, count.get());
+		assertEquals(0, error.get());
+		assertEquals(0, filterIds.size());
+	}
+
+	@SuppressWarnings("unused")
+	@Test
+	public void test_asyncEach_WithException() {
+
+		latch = new CountDownLatch(4);
+		generalCount = new AtomicInteger();
+		count = new AtomicInteger();
+		error = new AtomicInteger();
+
+		List<CompletableFuture<FutureResult<String>>> results = sessionManager.asyncEach((s) -> {
+			int _c = generalCount.incrementAndGet();
+			if (_c % 2 == 0) {
+				throw new IllegalStateException();
+			}
+			return (String) s.get("id");
+		}, (r) -> {
+			if (!r.isError) {
+				count.incrementAndGet();
+			} else {
+				error.incrementAndGet();
+			}
+			latch.countDown();
+		});
+
+		try {
+			latch.await(500, TimeUnit.MILLISECONDS);
+		} catch (InterruptedException e) {
+			fail();
+		}
+
+		assertEquals(2, count.get());
+		assertEquals(2, error.get());
+	}
+
+	@Test
+	public void test_asyncAll_Simple() {
+
+		latch = new CountDownLatch(2);
+		count = new AtomicInteger();
+		error = new AtomicInteger();
+
+		Set<String> filterIds = Collections.synchronizedSet(new HashSet<>());
+		filterIds.add("1");
+		filterIds.add("3");
+
+		CompletableFuture<List<FutureResult<String>>> result = sessionManager.asyncAll((s) -> {
+			return (String) s.get("id");
+		}, (sessionFilter) -> filterIds.contains(sessionFilter.get("id")));
+
+		result.thenAccept((rl) -> {
+			for (FutureResult<String> r : rl) {
+				count.incrementAndGet();
+				latch.countDown();
+				if (!r.isError) {
+					filterIds.remove(r.value);
+				}
+			}
+		});
+
+		try {
+			latch.await(500, TimeUnit.MILLISECONDS);
+		} catch (InterruptedException e) {
+			fail();
+		}
+
+		assertEquals(2, count.get());
+		assertEquals(0, error.get());
+		assertEquals(0, filterIds.size());
+	}
+
+	@Test
+	public void test_asyncAll_WithException() {
+
+		latch = new CountDownLatch(4);
+		generalCount = new AtomicInteger();
+		count = new AtomicInteger();
+		error = new AtomicInteger();
+
+		CompletableFuture<List<FutureResult<String>>> result = sessionManager.asyncAll((s) -> {
+			int _c = generalCount.incrementAndGet();
+			if (_c % 2 == 0) {
+				throw new IllegalStateException();
+			}
+			return (String) s.get("id");
+		});
+
+		result.thenAccept((rlist) -> {
+			for (FutureResult<String> r : rlist) {
+				if (!r.isError) {
+					count.incrementAndGet();
+				} else {
+					error.incrementAndGet();
+				}
+				latch.countDown();
+			}
+		});
+
+		try {
+			latch.await(500, TimeUnit.MILLISECONDS);
+		} catch (InterruptedException e) {
+			fail();
+		}
+
+		assertEquals(2, count.get());
+		assertEquals(2, error.get());
+	}
+
+	public static class Session extends AbstractSession {
+
+		final Map<String, Object> props = new HashMap<>();
+
+		public Session(String id) {
+			super();
+			props.put("id", id);
+		}
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public <T> T get(Class<T> key) {
+			return (T) props.get(key.getName());
+		}
+
+		@Override
+		public Object get(String key) {
+			return props.get(key);
+		}
+
+		@Override
+		protected <T> CompletableFuture<T> doAsync(final Function<ISession, T> function, ExecutorService executor) {
+			CompletableFuture<T> promise = new CompletableFuture<>();
+			runAsync(function, promise);
+			return promise;
+		}
+
+		protected <T> void runAsync(final Function<ISession, T> function, CompletableFuture<T> promise) {
+			new Thread(() -> {
+				try {
+					T value = function.apply(this);
+					promise.complete(value);
+				} catch (Exception e) {
+					promise.completeExceptionally(e);
+				}
+			}).start();
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionTest.java b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionTest.java
new file mode 100644
index 0000000..6b35744
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common.tests/src/org/eclipse/osbp/runtime/common/session/SessionTest.java
@@ -0,0 +1,175 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+
+public class SessionTest {
+
+	private BundleContext bc;
+
+	@Before
+	public void setup() {
+		bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
+	}
+
+	@Test
+	public void test_apply() {
+		Session session = new Session("1");
+		String value = session.apply((s) -> {
+			return "Foo";
+		});
+		assertEquals("Foo", value);
+	}
+
+	@Test
+	public void test_async() {
+
+		final CountDownLatch latch = new CountDownLatch(1);
+
+		Session session = new Session("1");
+		CompletableFuture<FutureResult<String>> promise = session.async((s) -> {
+			try {
+				Thread.sleep(250);
+			} catch (InterruptedException e) {
+			}
+			return "Foo";
+		}, null);
+
+		try {
+			latch.await(500, TimeUnit.MILLISECONDS);
+		} catch (InterruptedException e) {
+			fail();
+		}
+
+		assertTrue(promise.isDone());
+	}
+
+	@Test
+	public void test_async_Success() {
+
+		final CountDownLatch latch = new CountDownLatch(1);
+
+		final AtomicBoolean success = new AtomicBoolean();
+		final AtomicBoolean error = new AtomicBoolean();
+
+		Session session = new Session("1");
+		CompletableFuture<FutureResult<String>> promise = session.async((s) -> {
+			try {
+				Thread.sleep(250);
+			} catch (InterruptedException e) {
+			}
+			return "Foo";
+		}, (r) -> {
+			if (r.isError) {
+				error.set(true);
+			} else {
+				if (r.value.equals("Foo")) {
+					success.set(true);
+				}
+			}
+		});
+
+		try {
+			latch.await(500, TimeUnit.MILLISECONDS);
+		} catch (InterruptedException e) {
+			fail();
+		}
+
+		assertTrue(promise.isDone());
+		assertTrue(success.get());
+		assertFalse(error.get());
+	}
+
+	@Test
+	public void test_async_Error() {
+
+		final CountDownLatch latch = new CountDownLatch(1);
+
+		final AtomicBoolean success = new AtomicBoolean();
+		final AtomicBoolean error = new AtomicBoolean();
+
+		Session session = new Session("1");
+		CompletableFuture<FutureResult<String>> promise = session.async((s) -> {
+			try {
+				Thread.sleep(250);
+			} catch (InterruptedException e) {
+			}
+			throw new IllegalArgumentException();
+		}, (r) -> {
+			if (r.isError) {
+				if (r.error != null) {
+					error.set(true);
+				}
+			} else {
+				success.set(true);
+			}
+		});
+
+		try {
+			latch.await(500, TimeUnit.MILLISECONDS);
+		} catch (InterruptedException e) {
+			fail();
+		}
+
+		assertTrue(promise.isDone());
+		assertFalse(success.get());
+		assertTrue(error.get());
+	}
+
+	public static class Session extends AbstractSession {
+
+		final Map<String, Object> props = new HashMap<>();
+
+		public Session(String id) {
+			super();
+			props.put("id", id);
+		}
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public <T> T get(Class<T> key) {
+			return (T) props.get(key.getName());
+		}
+
+		@Override
+		public Object get(String key) {
+			return props.get(key);
+		}
+
+		@Override
+		protected <T> CompletableFuture<T> doAsync(final Function<ISession, T> function, ExecutorService executor) {
+			CompletableFuture<T> promise = new CompletableFuture<>();
+			runAsync(function, promise);
+			return promise;
+		}
+
+		protected <T> void runAsync(final Function<ISession, T> function, CompletableFuture<T> promise) {
+			new Thread(() -> {
+				try {
+					T value = function.apply(this);
+					promise.complete(value);
+				} catch (Exception e) {
+					promise.completeExceptionally(e);
+				}
+			}).start();
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.runtime.common/.classpath b/org.eclipse.osbp.runtime.common/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.common/.gitignore b/org.eclipse.osbp.runtime.common/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a698e59
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.common/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
index 959d8d9..26d8ac8 100644
--- a/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.common/META-INF/MANIFEST.MF
@@ -7,18 +7,22 @@
 Bundle-Version: 0.9.0.qualifier
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.osbp.runtime.common.annotations;version="0.9.0",
+ org.eclipse.osbp.runtime.common.bean,
  org.eclipse.osbp.runtime.common.coordination;version="0.9.0";uses:="org.osgi.service.coordinator",
  org.eclipse.osbp.runtime.common.datasource;version="0.9.0";uses:="org.eclipse.osbp.runtime.common.datasource.config",
  org.eclipse.osbp.runtime.common.datasource.config;version="0.9.0",
  org.eclipse.osbp.runtime.common.dispose;version="0.9.0",
+ org.eclipse.osbp.runtime.common.entities;version="0.9.0",
  org.eclipse.osbp.runtime.common.event;version="0.9.0";uses:="org.osgi.service.event",
  org.eclipse.osbp.runtime.common.extender;version="0.9.0",
+ org.eclipse.osbp.runtime.common.filter;version="0.9.0",
  org.eclipse.osbp.runtime.common.hash;version="0.9.0",
  org.eclipse.osbp.runtime.common.help;version="0.9.0",
  org.eclipse.osbp.runtime.common.i18n;version="0.9.0";uses:="org.eclipse.osbp.runtime.common.dispose",
  org.eclipse.osbp.runtime.common.keystroke;version="0.9.0",
  org.eclipse.osbp.runtime.common.memento;version="0.9.0";uses:="org.eclipse.osbp.runtime.common.validation",
  org.eclipse.osbp.runtime.common.metric;version="0.9.0",
+ org.eclipse.osbp.runtime.common.session;version="0.9.0",
  org.eclipse.osbp.runtime.common.shell;version="0.9.0",
  org.eclipse.osbp.runtime.common.state;version="0.9.0",
  org.eclipse.osbp.runtime.common.state.impl;version="0.9.0";x-internal:=true,
@@ -34,10 +38,11 @@
  org.osgi.service.event;version="1.3.0",
  org.osgi.service.prefs,
  org.osgi.util.tracker;version="1.5.1"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Service-Component: OSGI-INF/*
 Require-Bundle: com.google.guava,
  org.apache.commons.lang;bundle-version="2.6.0",
  org.apache.commons.collections;bundle-version="3.2.0",
  org.eclipse.core.runtime;bundle-version="3.10.0",
- org.slf4j.api;bundle-version="1.7.2"
+ org.slf4j.api;bundle-version="1.7.2",
+ org.eclipse.core.databinding.observable
diff --git a/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.session.impl.SessionManager.xml b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.session.impl.SessionManager.xml
new file mode 100644
index 0000000..c3ebfac
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.session.impl.SessionManager.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.osbp.runtime.common.session.impl.SessionManager">
+   <service>
+      <provide interface="org.eclipse.osbp.runtime.common.session.ISessionManager"/>
+   </service>
+   <reference bind="addSession" cardinality="0..n" interface="org.eclipse.osbp.runtime.common.session.ISession" name="Session" policy="dynamic" unbind="removeSession"/>
+   <implementation class="org.eclipse.osbp.runtime.common.session.impl.SessionManager"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider.xml b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider.xml
index 44d894d..643d273 100644
--- a/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider.xml
+++ b/org.eclipse.osbp.runtime.common/OSGI-INF/org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider">
-   <implementation class="org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider"/>
+   <property name="service.ranking" value="100"/>
    <service>
       <provide interface="org.eclipse.osbp.runtime.common.state.ISharedStateContextProvider"/>
    </service>
-   <property name="service.ranking" value="100"/>
+   <implementation class="org.eclipse.osbp.runtime.common.state.impl.SharedStateContextProvider"/>
 </scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanOrdering.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanOrdering.java
new file mode 100644
index 0000000..bb6e65a
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanOrdering.java
@@ -0,0 +1,13 @@
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Target({ FIELD})
+@Retention(RUNTIME)
+public @interface AsKanbanOrdering {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanState.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanState.java
new file mode 100644
index 0000000..6e65a09
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/AsKanbanState.java
@@ -0,0 +1,13 @@
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface AsKanbanState {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Datamart.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Datamart.java
new file mode 100644
index 0000000..3a671ce
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Datamart.java
@@ -0,0 +1,13 @@
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target(TYPE)
+public @interface Datamart {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DirtyStateAdapter.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DirtyStateAdapter.java
index a8170e8..8f1b4dc 100644
--- a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DirtyStateAdapter.java
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DirtyStateAdapter.java
@@ -50,12 +50,14 @@
 			if (DtoUtils.isDisposeField(objClass, event.getPropertyName())) {
 				return;
 			}
-			// dirty field not forwarded to handle dirty
-			if (DtoUtils.isDirtyField(objClass, event.getPropertyName())) {
+			// dirty field not forwarded to handle dirty, if already dirty
+			if (DtoUtils.isDirtyField(objClass, event.getPropertyName()) && DtoUtils.isDirty(object)) {
 				return;
 			}
 		} catch (SecurityException ignoreIt) {
 			LOGGER.error("{}", ignoreIt);
+		} catch (IllegalAccessException ignoreIt) {
+			LOGGER.error("{}", ignoreIt);
 		}
 
 		handleDirty(event);
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DtoUtils.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DtoUtils.java
index 39c6e12..5fc2fd9 100644
--- a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DtoUtils.java
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/DtoUtils.java
@@ -19,8 +19,10 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.lang.reflect.MethodUtils;
@@ -87,7 +89,48 @@
 	}
 
 	/**
-	 * Returns the id key field. Field annotated with {@link Id}.
+	 * Gets the version field. Field annotated with {@link Version}.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the version field
+	 */
+	public static Field getVersionField(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getVersionField();
+	}
+
+	/**
+	 * Returns the id field. Field annotated with {@link Id}.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return the id field
+	 */
+	public static Object getIdValue(Object dto) {
+		Info info = getInfo(dto.getClass());
+		Field f = info.getIdField();
+		f.setAccessible(true);
+		try {
+			return f.get(dto);
+		} catch (IllegalArgumentException | IllegalAccessException e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
+	public static void setIdValue(Object dto, Object idValue) {
+		Info info = getInfo(dto.getClass());
+		Field f = info.getIdField();
+		f.setAccessible(true);
+		try {
+			f.set(dto, idValue);
+		} catch (IllegalArgumentException | IllegalAccessException e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
+	/**
+	 * Returns the field value.
 	 *
 	 * @param instance
 	 *            the instance
@@ -111,6 +154,31 @@
 	}
 
 	/**
+	 * Sets the field value.
+	 *
+	 * @param instance
+	 *            the instance
+	 * @param idProperty
+	 *            the id property
+	 * @param value
+	 *            the value
+	 */
+	public static void setValue(Object dto, String idProperty, Object value) {
+		try {
+			BeanInfo beanInfo = Introspector.getBeanInfo(dto.getClass());
+			for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+				if (pd.getName().equals(idProperty)) {
+					pd.getWriteMethod().invoke(dto, value);
+					break;
+				}
+			}
+		} catch (IntrospectionException | IllegalAccessException | IllegalArgumentException
+				| InvocationTargetException e) {
+			LOGGER.error("{}", e);
+		}
+	}
+
+	/**
 	 * Returns the domain description field. Field annotated with
 	 * #DomainDescription.
 	 *
@@ -174,6 +242,34 @@
 	}
 
 	/**
+	 * Returns true, if the given field is a id field.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param fieldName
+	 *            the field name
+	 * @return true, if is id field
+	 */
+	public static boolean isIdField(Class<?> clazz, String fieldName) {
+		Info info = getInfo(clazz);
+		return info.getIdField() != null ? info.getIdField().getName().equals(fieldName) : false;
+	}
+
+	/**
+	 * Returns true, if the given field is a version field.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param fieldName
+	 *            the field name
+	 * @return true, if is version field
+	 */
+	public static boolean isVersionField(Class<?> clazz, String fieldName) {
+		Info info = getInfo(clazz);
+		return info.getVersionField() != null ? info.getVersionField().getName().equals(fieldName) : false;
+	}
+
+	/**
 	 * Returns true, if the given field is a dirty field. Dirty fields indicate
 	 * that the dto is dirty.
 	 *
@@ -287,6 +383,30 @@
 	}
 
 	/**
+	 * Gets the owner domain references.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the owner domain references
+	 */
+	public static List<Field> getOwnerDomainReferences(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getOwnerDomainReferences();
+	}
+
+	/**
+	 * Gets the member domain references.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the member domain references
+	 */
+	public static List<Field> getMemberDomainReferences(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getMemberDomainReferences();
+	}
+
+	/**
 	 * Returns the info for the given class.
 	 *
 	 * @param clazz
@@ -389,6 +509,51 @@
 	}
 
 	/**
+	 * Unregisters the adapter as a property changed listener.
+	 *
+	 * @param adapter
+	 *            the adapter
+	 * @param dto
+	 *            the dto
+	 */
+	public static void unregisterAdapter(PropertyChangeListener adapter, Object dto) {
+		if (adapter == null || dto == null) {
+			return;
+		}
+
+		try {
+			MethodUtils.invokeMethod(dto, "removePropertyChangeListener", adapter);
+		} catch (SecurityException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (IllegalAccessException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (IllegalArgumentException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (InvocationTargetException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (NoSuchMethodException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		}
+	}
+
+	public static List<String> getFieldNames(Class<?> clazz) {
+		List<String> fieldNames = new ArrayList<>();
+		try {
+			for (Field field : clazz.getDeclaredFields()) {
+				fieldNames.add(field.getName());
+			}
+
+			Class<?> superClass = clazz.getSuperclass();
+			if (superClass != null) {
+				fieldNames.addAll(getFieldNames(superClass));
+			}
+		} catch (SecurityException e) {
+			LOGGER.error("{}", e);
+		}
+		return fieldNames;
+	}
+
+	/**
 	 * Applies all required field infos to the info object.
 	 *
 	 * @param clazz
@@ -411,6 +576,17 @@
 				if (field.getAnnotation(Id.class) != null) {
 					info.idField = field;
 				}
+				if (field.getAnnotation(Version.class) != null) {
+					info.versionField = field;
+				}
+
+				if (field.getAnnotation(DomainReference.class) != null) {
+					if (field.getType().isAssignableFrom(List.class)) {
+						info.memberDomainReferences.add(field);
+					} else {
+						info.ownerDomainReferences.add(field);
+					}
+				}
 
 				if (field.getType() == PropertyChangeSupport.class) {
 					info.propertyChangeSupportField = field;
@@ -486,7 +662,7 @@
 	 *            the name
 	 * @return the field
 	 */
-	protected Field findField(Class<?> clazz, String name) {
+	protected static Field findField(Class<?> clazz, String name) {
 		try {
 			Field field = clazz.getDeclaredField(name);
 			return field;
@@ -530,6 +706,21 @@
 		/** The domain description field. */
 		private Field domainDescriptionField;
 
+		/** The version field. */
+		private Field versionField;
+
+		/**
+		 * The owner domain references = all 1 references of a oneToMany
+		 * relationship.
+		 */
+		private List<Field> ownerDomainReferences = new ArrayList<>();
+
+		/**
+		 * The member domain references = all n references of a oneToMany
+		 * relationship.
+		 */
+		private List<Field> memberDomainReferences = new ArrayList<>();
+
 		/**
 		 * Gets the dispose field.
 		 *
@@ -540,6 +731,33 @@
 		}
 
 		/**
+		 * Gets the owner domain references.
+		 *
+		 * @return the owner domain references
+		 */
+		public List<Field> getOwnerDomainReferences() {
+			return ownerDomainReferences;
+		}
+
+		/**
+		 * Gets the member domain references.
+		 *
+		 * @return the member domain references
+		 */
+		public List<Field> getMemberDomainReferences() {
+			return memberDomainReferences;
+		}
+
+		/**
+		 * Gets the version field.
+		 *
+		 * @return the version field
+		 */
+		public Field getVersionField() {
+			return versionField;
+		}
+
+		/**
 		 * Gets the dirty field.
 		 *
 		 * @return the dirty field
@@ -607,5 +825,4 @@
 		}
 
 	}
-
 }
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Filter.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Filter.java
new file mode 100644
index 0000000..f32813b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Filter.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in JPA entities and DTOs, that the content is a
+ * may be used in generic search dialogs as a wildcard field. Like eg, lt, gt, ge, ... and wildcards
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface Filter {
+
+}
+ 
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/FilterDepth.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/FilterDepth.java
new file mode 100644
index 0000000..ec31bbb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/FilterDepth.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation defines the depth of generic filters.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface FilterDepth {
+
+	/**
+	 * The depth of the generic filter. It will look for all fields annotated
+	 * with @Filter and @Range.
+	 * 
+	 * @return
+	 */
+	int depth();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/IsValid.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/IsValid.java
new file mode 100644
index 0000000..b3169ba
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/IsValid.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface IsValid {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/OnKanbanCard.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/OnKanbanCard.java
new file mode 100644
index 0000000..2467cec
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/OnKanbanCard.java
@@ -0,0 +1,13 @@
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Target({ FIELD })
+@Retention(RUNTIME)
+public @interface OnKanbanCard {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Range.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Range.java
new file mode 100644
index 0000000..d1210b3
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Range.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in JPA entities and DTOs, that the content is a
+ * may be used in generic search dialogs as a range selection. Eg from-until fields.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface Range {
+
+}
+ 
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/UniqueEntry.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/UniqueEntry.java
new file mode 100644
index 0000000..67baa9e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/UniqueEntry.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in Entities and DTOs. If a field is marked with
+ * this annotation, the same entity must not contain more than one record with
+ * the same value.
+ */
+@Target({ FIELD, METHOD })
+@Retention(RUNTIME)
+public @interface UniqueEntry {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Version.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Version.java
new file mode 100644
index 0000000..55f4bc6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/annotations/Version.java
@@ -0,0 +1,30 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - 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                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG                              
+ * 
+ */
+package org.eclipse.osbp.runtime.common.annotations;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation marks fields in DTOs, that the content is a
+ * version field.
+ */
+@Retention(RUNTIME)
+@Target(FIELD)
+public @interface Version {
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/bean/IdentityPropertyChangeSupport.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/bean/IdentityPropertyChangeSupport.java
new file mode 100644
index 0000000..783bf93
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/bean/IdentityPropertyChangeSupport.java
@@ -0,0 +1,66 @@
+package org.eclipse.osbp.runtime.common.bean;
+
+import java.beans.PropertyChangeSupport;
+
+@SuppressWarnings("serial")
+public class IdentityPropertyChangeSupport extends PropertyChangeSupport {
+
+//	private Object source;
+
+	public IdentityPropertyChangeSupport(Object source) {
+		super(source);
+//		this.source = source;
+	}
+
+//	public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
+//		if (oldValue == null || newValue == null || !valuesEqual(oldValue, newValue)) {
+//			firePropertyChange(new PropertyChangeEvent(source, propertyName, oldValue, newValue));
+//		}
+//	}
+//
+//	public void firePropertyChange(PropertyChangeEvent event) {
+//		Object oldValue = event.getOldValue();
+//		Object newValue = event.getNewValue();
+//		if (oldValue == null || newValue == null || !valuesEqual(oldValue, newValue)) {
+//			String name = event.getPropertyName();
+//
+//			PropertyChangeListener[] common = getPropertyChangeListeners(null);
+//			fireEvent(common, event);
+//
+//			PropertyChangeListener[] named = (name != null) ? getPropertyChangeListeners(name) : null;
+//			fireEvent(named, event);
+//		}
+//	}
+//
+//	public void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue) {
+//		if (oldValue == null || newValue == null || !valuesEqual(oldValue, newValue)) {
+//			firePropertyChange(new IndexedPropertyChangeEvent(source, propertyName, oldValue, newValue, index));
+//		}
+//	}
+//	
+//	private boolean valuesEqual(Object oldValue, Object newValue) {
+//		if (isAnnotationPresent(oldValue.getClass())) {
+//			return oldValue == newValue;
+//		}
+//		return oldValue.equals(newValue);
+//	}
+//	
+//	protected boolean isAnnotationPresent(final Class<?> clazz) {
+//		if (clazz.isAnnotationPresent(EqualByIdentity.class)) {
+//			return true;
+//		}
+//		for (Class<?> i : clazz.getInterfaces()) {
+//			if (i.isAnnotationPresent(EqualByIdentity.class))
+//				return true;
+//		}
+//		return false;
+//	}
+//	
+//	protected void fireEvent(PropertyChangeListener[] listeners, PropertyChangeEvent event) {
+//		if (listeners != null) {
+//			for (PropertyChangeListener listener : listeners) {
+//				listener.propertyChange(event);
+//			}
+//		}
+//	}
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/entities/EntityUtils.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/entities/EntityUtils.java
new file mode 100644
index 0000000..6a71999
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/entities/EntityUtils.java
@@ -0,0 +1,601 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.entities;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.persistence.Id;
+
+import org.apache.commons.lang.reflect.MethodUtils;
+import org.eclipse.osbp.runtime.common.annotations.Dirty;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Class EntityUtils.
+ */
+public class EntityUtils {
+
+	/** The Constant LOGGER. */
+	private static final Logger LOGGER = LoggerFactory.getLogger(EntityUtils.class);
+
+	/** The infos. */
+	private static Map<Class<?>, Info> INFOS = Collections.synchronizedMap(new HashMap<Class<?>, EntityUtils.Info>());
+
+	/**
+	 * Returns the dispose field. Field annotated with {@link Dispose}.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the dispose field
+	 */
+	public static Field getDisposeField(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getDisposeField();
+	}
+
+	/**
+	 * Returns the dispose field. Field annotated with {@link Dirty}.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the dirty field
+	 */
+	public static Field getDirtyField(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getDirtyField();
+	}
+
+	/**
+	 * Returns the id field. Field annotated with {@link Id}.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the id field
+	 */
+	public static Field getIdField(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getIdField();
+	}
+
+	/**
+	 * Returns the id field. Field annotated with {@link Id}.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return the id field
+	 */
+	public static Object getIdValue(Object dto) {
+		Info info = getInfo(dto.getClass());
+		Field f = info.getIdField();
+		f.setAccessible(true);
+		try {
+			return f.get(dto);
+		} catch (IllegalArgumentException e) {
+			throw new IllegalStateException(e);
+		} catch (IllegalAccessException e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
+	/**
+	 * Returns the id key field. Field annotated with {@link Id}.
+	 *
+	 * @param instance
+	 *            the instance
+	 * @param idProperty
+	 *            the id property
+	 * @return the value
+	 */
+	public static Object getValue(Object instance, String idProperty) {
+		try {
+			BeanInfo beanInfo = Introspector.getBeanInfo(instance.getClass());
+			for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+				if (pd.getName().equals(idProperty)) {
+					Method idMethod = pd.getReadMethod();
+					return idMethod.invoke(instance);
+				}
+			}
+		} catch (Exception e) {
+			LOGGER.error("{}", e);
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the dispose field. Field annotated with {@link Dirty}.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the dirty getter
+	 */
+	public static Method getDirtyGetter(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getDirtyGetter();
+	}
+
+	/**
+	 * Returns the dispose field. Field annotated with {@link Dirty}.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the dirty setter
+	 */
+	public static Method getDirtySetter(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getDirtySetter();
+	}
+
+	/**
+	 * Returns the dispose method. Method annotated with {@link Dispose}.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the dispose method
+	 */
+	public static Method getDisposeMethod(Class<?> clazz) {
+		Info info = getInfo(clazz);
+		return info.getDisposeMethod();
+	}
+
+	/**
+	 * Returns true, if the given field is a dispose field.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param fieldName
+	 *            the field name
+	 * @return true, if is dispose field
+	 */
+	public static boolean isDisposeField(Class<?> clazz, String fieldName) {
+		Info info = getInfo(clazz);
+		return info.getDisposeField() != null ? info.getDisposeField().getName().equals(fieldName) : false;
+	}
+
+	/**
+	 * Returns true, if the given field is a dirty field. Dirty fields indicate
+	 * that the dto is dirty.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param fieldName
+	 *            the field name
+	 * @return true, if is dirty field
+	 */
+	public static boolean isDirtyField(Class<?> clazz, String fieldName) {
+		Info info = getInfo(clazz);
+		return info.getDirtyField() != null ? info.getDirtyField().getName().equals(fieldName) : false;
+	}
+
+	/**
+	 * Returns true, if the given method is a dispose method.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param methodName
+	 *            the method name
+	 * @return true, if is dispose method
+	 */
+	public static boolean isDisposeMethod(Class<?> clazz, String methodName) {
+		Info info = getInfo(clazz);
+		return info.getDisposeField() != null ? info.getDisposeMethod().getName().equals(methodName) : false;
+	}
+
+	/**
+	 * Tries to invoke the dispose method.
+	 *
+	 * @param obj
+	 *            the obj
+	 * @return true, if the method could be invoked. False otherwise.
+	 */
+	public static boolean invokeDisposeMethod(Object obj) {
+		Info info = getInfo(obj.getClass());
+		if (info != null && info.getDisposeMethod() != null) {
+			try {
+				info.getDisposeMethod().invoke(obj, new Object[0]);
+			} catch (IllegalAccessException e) {
+				return false;
+			} catch (IllegalArgumentException e) {
+				return false;
+			} catch (InvocationTargetException e) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Tries to invoke the setDirty method.
+	 *
+	 * @param obj
+	 *            the obj
+	 * @param value
+	 *            the value
+	 * @return true, if the method could be invoked. False otherwise.
+	 */
+	public static boolean invokeDirtySetter(Object obj, boolean value) {
+		Info info = getInfo(obj.getClass());
+		if (info != null && info.getDirtySetter() != null) {
+			try {
+				info.getDirtySetter().invoke(obj, new Object[] { value });
+			} catch (IllegalAccessException e) {
+				return false;
+			} catch (IllegalArgumentException e) {
+				return false;
+			} catch (InvocationTargetException e) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Tries to invoke the dirty getter. If there is no dirty getter available,
+	 * the method throws an {@link IllegalAccessException}.
+	 *
+	 * @param obj
+	 *            the obj
+	 * @return true, if is dirty
+	 * @throws IllegalAccessException
+	 *             the illegal access exception
+	 */
+	public static boolean isDirty(Object obj) throws IllegalAccessException {
+		return invokeDirtyGetter(obj);
+	}
+
+	/**
+	 * Tries to invoke the isDirty method.
+	 *
+	 * @param obj
+	 *            the obj
+	 * @return true, if the method could be invoked. False otherwise.
+	 * @throws IllegalAccessException
+	 *             the illegal access exception
+	 */
+	public static boolean invokeDirtyGetter(Object obj) throws IllegalAccessException {
+		Info info = getInfo(obj.getClass());
+		if (info != null && info.getDirtySetter() != null) {
+			try {
+				return (Boolean) info.getDirtyGetter().invoke(obj, new Object[0]);
+			} catch (IllegalAccessException e) {
+			} catch (IllegalArgumentException e) {
+			} catch (InvocationTargetException e) {
+			}
+		}
+		throw new IllegalAccessException("Not a valid call");
+	}
+
+	/**
+	 * Returns the info for the given class.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the info
+	 */
+	protected static Info getInfo(Class<?> clazz) {
+		Info info = INFOS.get(clazz);
+		if (info == null) {
+			info = createInfo(clazz);
+		}
+		return info;
+	}
+
+	/**
+	 * Creates a new info.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return info
+	 */
+	private static Info createInfo(Class<?> clazz) {
+		Info info = new Info();
+		applyFieldInfo(clazz, info);
+		applyMethodInfo(clazz, info);
+
+		INFOS.put(clazz, info);
+
+		return info;
+	}
+
+	/**
+	 * Returns the adapter which has proper type from the given dto. Or
+	 * <code>null</code> if no adapter is available.
+	 *
+	 * @param <A>
+	 *            the generic type
+	 * @param type
+	 *            the type
+	 * @param dto
+	 *            the dto
+	 * @return the adapter
+	 */
+	@SuppressWarnings("unchecked")
+	public static <A> A getAdapter(Class<A> type, Object dto) {
+		if (type == null || dto == null) {
+			return null;
+		}
+		Info info = getInfo(dto.getClass());
+		if (info.getPropertyChangeSupportField() == null) {
+			return null;
+		}
+
+		try {
+			info.getPropertyChangeSupportField().setAccessible(true);
+			PropertyChangeSupport changeSupport = (PropertyChangeSupport) info.getPropertyChangeSupportField().get(dto);
+			if (changeSupport == null) {
+				return null;
+			}
+
+			for (PropertyChangeListener listener : changeSupport.getPropertyChangeListeners()) {
+				if (type.isAssignableFrom(listener.getClass())) {
+					return (A) listener;
+				}
+			}
+		} catch (IllegalArgumentException e) {
+			LOGGER.error("{}", e);
+		} catch (IllegalAccessException e) {
+			LOGGER.error("{}", e);
+		}
+		return null;
+	}
+
+	/**
+	 * Registers the adapter as a property changed listener.
+	 *
+	 * @param adapter
+	 *            the adapter
+	 * @param dto
+	 *            the dto
+	 */
+	public static void registerAdapter(PropertyChangeListener adapter, Object dto) {
+		if (adapter == null || dto == null) {
+			return;
+		}
+
+		try {
+			MethodUtils.invokeMethod(dto, "addPropertyChangeListener", adapter);
+		} catch (SecurityException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (IllegalAccessException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (IllegalArgumentException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (InvocationTargetException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		} catch (NoSuchMethodException e) {
+			LOGGER.info("Observer for dirtyState handling could not be added for " + dto.getClass().getName());
+		}
+	}
+
+	/**
+	 * Applies all required field infos to the info object.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param info
+	 *            the info
+	 */
+	private static void applyFieldInfo(Class<?> clazz, Info info) {
+		try {
+			for (Field field : clazz.getDeclaredFields()) {
+				if (field.getAnnotation(javax.persistence.Id.class) != null) {
+					info.idField = field;
+				}
+
+				if (field.getType() == PropertyChangeSupport.class) {
+					info.propertyChangeSupportField = field;
+				}
+
+				if (field.getAnnotation(Dirty.class) != null) {
+					info.dirtyField = field;
+
+					try {
+						BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
+						for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
+							if (pd.getName().equals(info.dirtyField.getName())) {
+								info.dirtyPropertyDescriptor = pd;
+								break;
+							}
+						}
+					} catch (IntrospectionException e) {
+						LOGGER.error("{}", e);
+					}
+				}
+				if (info.disposeField != null && info.dirtyField != null && info.domainKeyField != null
+						&& info.domainDescriptionField != null && info.idField != null) {
+					break;
+				}
+			}
+
+			if (info.disposeField == null || info.domainKeyField == null || info.domainDescriptionField == null
+					|| info.idField == null) {
+				Class<?> superClass = clazz.getSuperclass();
+				if (superClass != null) {
+					applyFieldInfo(superClass, info);
+				}
+			}
+		} catch (SecurityException e) {
+			LOGGER.error("{}", e);
+		}
+	}
+
+	/**
+	 * Applies all required field infos to the info object.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param info
+	 *            the info
+	 */
+	private static void applyMethodInfo(Class<?> clazz, Info info) {
+		try {
+			for (Method method : clazz.getDeclaredMethods()) {
+				if (method.getAnnotation(Dispose.class) != null) {
+					info.disposeMethod = method;
+					break;
+				}
+			}
+
+			if (info.disposeMethod == null) {
+				Class<?> superClass = clazz.getSuperclass();
+				if (superClass != null) {
+					applyMethodInfo(superClass, info);
+				}
+			}
+		} catch (SecurityException e) {
+			LOGGER.error("{}", e);
+		}
+	}
+
+	/**
+	 * Find field.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @param name
+	 *            the name
+	 * @return the field
+	 */
+	protected Field findField(Class<?> clazz, String name) {
+		try {
+			Field field = clazz.getDeclaredField(name);
+			return field;
+		} catch (NoSuchFieldException e) {
+			Class<?> superClass = clazz.getSuperclass();
+			if (superClass != null) {
+				return findField(superClass, name);
+			}
+		} catch (SecurityException e) {
+			LOGGER.error("{}", e);
+		}
+		return null;
+	}
+
+	/**
+	 * The Class Info.
+	 */
+	private static class Info {
+
+		/** The property change support field. */
+		private Field propertyChangeSupportField;
+
+		/** The dispose field. */
+		private Field disposeField;
+
+		/** The dispose method. */
+		private Method disposeMethod;
+
+		/** The id field. */
+		private Field idField;
+
+		/** The dirty field. */
+		private Field dirtyField;
+
+		/** The dirty property descriptor. */
+		private PropertyDescriptor dirtyPropertyDescriptor;
+
+		/** The domain key field. */
+		private Field domainKeyField;
+
+		/** The domain description field. */
+		private Field domainDescriptionField;
+
+		/**
+		 * Gets the dispose field.
+		 *
+		 * @return the dispose field
+		 */
+		public Field getDisposeField() {
+			return disposeField;
+		}
+
+		/**
+		 * Gets the dirty field.
+		 *
+		 * @return the dirty field
+		 */
+		public Field getDirtyField() {
+			return dirtyField;
+		}
+
+		/**
+		 * Gets the dirty getter.
+		 *
+		 * @return the dirty getter
+		 */
+		public Method getDirtyGetter() {
+			return dirtyPropertyDescriptor != null ? dirtyPropertyDescriptor.getReadMethod() : null;
+		}
+
+		/**
+		 * Gets the dirty setter.
+		 *
+		 * @return the dirty setter
+		 */
+		public Method getDirtySetter() {
+			return dirtyPropertyDescriptor != null ? dirtyPropertyDescriptor.getWriteMethod() : null;
+		}
+
+		/**
+		 * Gets the dispose method.
+		 *
+		 * @return the dispose method
+		 */
+		public Method getDisposeMethod() {
+			return disposeMethod;
+		}
+
+		/**
+		 * Gets the domain key field.
+		 *
+		 * @return the domain key field
+		 */
+		public Field getDomainKeyField() {
+			return domainKeyField;
+		}
+
+		/**
+		 * Gets the domain description field.
+		 *
+		 * @return the domain description field
+		 */
+		public Field getDomainDescriptionField() {
+			return domainDescriptionField;
+		}
+
+		/**
+		 * Gets the property change support field.
+		 *
+		 * @return the property change support field
+		 */
+		public Field getPropertyChangeSupportField() {
+			return propertyChangeSupportField;
+		}
+
+		public Field getIdField() {
+			return idField;
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/EventDispatcherEvent.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/EventDispatcherEvent.java
new file mode 100644
index 0000000..86f8284
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/EventDispatcherEvent.java
@@ -0,0 +1,184 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - 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                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+package org.eclipse.osbp.runtime.common.event;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap;
+
+/**
+ * The Class EventDispatcherEvent.
+ */
+public class EventDispatcherEvent {
+	
+	/**
+	 * The Enum EventDispatcherCommand.
+	 */
+	public enum EventDispatcherCommand {
+		/** something was selected. */
+		SELECT,
+		/** something requested a refresh. */
+		REFRESH,
+		/** The user saved. */
+		SAVE, 
+		/** The user deleted. */
+		DELETE,
+		/** The user started an action. */
+		ACTION,
+		/** Process finished so remove progressbar. */
+		REMOVE_PROGRESSBAR
+	}
+
+	/**
+	 * The Enum EventDispatcherDataTag.
+	 */
+	public enum EventDispatcherDataTag {
+		/** The id. values are of type id or uuid */
+		ID, 
+		/** The id of the pressed action button */
+		BUTTON_ID, 
+		/** The id of an started human task (bpmn) */
+		TASK_ID, 
+		/** The list of objects. */
+		LIST,
+		/** a filled dto object. */
+		DTO
+	}
+
+	/** The command. */
+	private EventDispatcherCommand command;
+	
+	/** The sender class. */
+	private String sender;
+	
+	/** The topic. */
+	private String topic;
+	
+	/** The data. */
+	private Map<EventDispatcherDataTag, Object> data = new CopyOnWriteIdentityMap<>();
+
+	/**
+	 * Instantiates a new event dispatcher event.
+	 *
+	 * @param command the command
+	 * @param topic the topic
+	 */
+	public EventDispatcherEvent(EventDispatcherCommand command, String topic, String sender) {
+		this.command = command;
+		this.topic = topic;
+		this.sender = sender;
+	}
+
+	/**
+	 * Gets the command.
+	 *
+	 * @return the command
+	 */
+	public EventDispatcherCommand getCommand() {
+		return command;
+	}
+
+	/**
+	 * Sets the command.
+	 *
+	 * @param command the new command
+	 */
+	public void setCommand(EventDispatcherCommand command) {
+		this.command = command;
+	}
+
+	/**
+	 * Gets the topic.
+	 *
+	 * @return the topic
+	 */
+	public String getTopic() {
+		return topic;
+	}
+
+	/**
+	 * Sets the topic.
+	 *
+	 * @param topic the new topic
+	 */
+	public void setTopic(String topic) {
+		this.topic = topic;
+	}
+
+	/**
+	 * Gets the data.
+	 *
+	 * @return the data
+	 */
+	public Map<EventDispatcherDataTag, Object> getData() {
+		return data;
+	}
+
+	/**
+	 * Sets the data.
+	 *
+	 * @param data the data
+	 */
+	public void setData(Map<EventDispatcherDataTag, Object> data) {
+		this.data = data;
+	}
+
+	/**
+	 * Adds the item data.
+	 *
+	 * @param tag the tag
+	 * @param item the item
+	 */
+	@SuppressWarnings("unchecked")
+	public void addItem(EventDispatcherDataTag tag, Object item) {
+		if(tag == EventDispatcherDataTag.LIST) {
+			if(!data.containsKey(EventDispatcherDataTag.LIST)) {
+				data.put(EventDispatcherDataTag.LIST, new CopyOnWriteArrayList<String>());
+			}
+			((List<String>)data.get(EventDispatcherDataTag.LIST)).add((String)item);
+		} else {
+			data.put(tag, item);
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	public void addData(List<IDualData> selectedData) {
+		if(!data.containsKey(EventDispatcherDataTag.LIST)) {
+			data.put(EventDispatcherDataTag.LIST, new CopyOnWriteArrayList<String>());
+		}
+		for(IDualData dd : selectedData){
+			((List<String>)data.get(EventDispatcherDataTag.LIST)).add(dd.getSelectionValue());
+		}
+	}
+
+	/**
+	 * Gets the sender.
+	 *
+	 * @return the sender id
+	 */
+	public String getSender() {
+		return sender;
+	}
+
+	/**
+	 * Sets the sender id.
+	 *
+	 * @param sender the new sender
+	 */
+	public void setSender(String sender) {
+		this.sender = sender;
+	}
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IDualData.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IDualData.java
new file mode 100644
index 0000000..75cfdaa
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IDualData.java
@@ -0,0 +1,89 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - 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                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+package org.eclipse.osbp.runtime.common.event;
+
+/**
+ * The Interface IDualData.
+ */
+public interface IDualData {
+	
+	/**
+	 * Marks this filter as to be decoded as string.
+	 *
+	 * @param isString the is string
+	 */
+	void asString(boolean isString);
+	/**
+	 * Equals.
+	 *
+	 * @param item the item
+	 * @return true, if successful
+	 */
+	boolean equals(IDualData item);
+	/**
+	 * Gets the selection value.
+	 *
+	 * @return the selection value
+	 */
+	String getSelectionValue();
+	
+	/**
+	 * Gets the selection value prepared for a database.
+	 *
+	 * @param value the value
+	 * @return the database selection value
+	 */
+	String getDatabaseSelectionValue();
+	/**
+	 * Sets the selection value.
+	 *
+	 * @param value the new selection value
+	 */
+	void setSelectionValue(String value);
+
+	/**
+	 * Gets the formatted value.
+	 *
+	 * @return the formatted value
+	 */
+	String getFormattedValue();
+
+	/**
+	 * Sets the formatted value.
+	 *
+	 * @param formattedValue the new formatted value
+	 */
+	void setFormattedValue(String formattedValue);
+
+	/**
+	 * Gets the hierarchy.
+	 *
+	 * @return the hierarchy
+	 */
+	String getHierarchy();
+	
+	/**
+	 * Gets the hierarchy with brackets.
+	 *
+	 * @return the hierarchy with brackets
+	 */
+	String getHierarchyWithBrackets();
+	
+	/**
+	 * Sets the hierarchy.
+	 *
+	 * @param hierarchy the new hierarchy
+	 */
+	void setHierarchy(String hierarchy);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventDispatcher.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventDispatcher.java
new file mode 100644
index 0000000..3fb12ba
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/event/IEventDispatcher.java
@@ -0,0 +1,69 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - 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                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+package org.eclipse.osbp.runtime.common.event;
+
+
+/**
+ * The Interface IEventDispatcher.
+ */
+public interface IEventDispatcher {
+	
+	/**
+	 * Adds the event receiver.
+	 *
+	 * @param receiver the receiver
+	 */
+	void addEventReceiver(Receiver receiver);
+	
+	/**
+	 * Removes the event receiver.
+	 *
+	 * @param receiver the receiver
+	 */
+	void removeEventReceiver(Receiver receiver);
+	
+	/**
+	 * Send event.
+	 *
+	 * @param event the event
+	 */
+	void sendEvent(EventDispatcherEvent event);
+	
+	/**
+	 * The Interface Receiver.
+	 */
+	public interface Receiver {
+		
+		/**
+		 * Receive event.
+		 *
+		 * @param event the event
+		 */
+		void receiveEvent(EventDispatcherEvent event);
+	}
+	
+	/**
+	 * The Interface Sender.
+	 */
+	public interface Sender {
+	}
+	
+//	public interface Global extends IEventDispatcher {
+//		
+//	}
+//	
+//	public interface Provider {
+//		IEventDispatcher getDispatcher();
+//	}
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/DtoServiceException.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/DtoServiceException.java
new file mode 100644
index 0000000..f7cf3b8
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/DtoServiceException.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+/**
+ * Contains converted SQLExceptions.
+ */
+@SuppressWarnings("serial")
+public class DtoServiceException extends RuntimeException {
+
+	private final String sqlState;
+
+	public DtoServiceException(String sqlState, String message, Throwable cause) {
+		super(message, cause);
+		this.sqlState = sqlState;
+	}
+
+	/**
+	 * @return the sqlState
+	 */
+	protected String getSqlState() {
+		return sqlState;
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOService.java
new file mode 100644
index 0000000..8a21d76
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOService.java
@@ -0,0 +1,276 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+import org.eclipse.osbp.runtime.common.validation.ValidationKind;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IDTOService.
+ *
+ * @param <A>
+ *            the generic type
+ */
+public interface IDTOService<A> extends IService {
+
+	/** The Constant PROP_MAX_COLLECTION_CONTENT. */
+	public static final int PROP_MAX_COLLECTION_CONTENT = 2000;
+
+	/**
+	 * Returns the dto for the given id.
+	 *
+	 * @param id
+	 *            the id
+	 * @return the a
+	 */
+	A get(Object id);
+
+	/**
+	 * Reloads the given dto and returns the refreshed values by a new
+	 * instance.<br>
+	 * If the data basis for the dto is not available anymore. For instance the
+	 * entity was deleted, then <code>null</code> will be returned.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return A
+	 */
+	A reload(A dto);
+
+	/**
+	 * Returns a collection of dtos matching the filter in the query. <br>
+	 * The maximum amount of contained elements is limited by
+	 * {@link #PROP_MAX_COLLECTION_CONTENT}.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the collection
+	 */
+	Collection<A> find(IQuery query);
+
+	/**
+	 * Returns a collection of dtos matching the filter defined in the query and
+	 * starting from the given startIndex. <br>
+	 * May be used for lazy loading issues. Ensure that a sort order is used in
+	 * that case.
+	 * 
+	 * The maximum amount of contained elements is limited by
+	 * {@link #PROP_MAX_COLLECTION_CONTENT}.
+	 *
+	 * @param query
+	 *            the query
+	 * @param startIndex
+	 *            the start index
+	 * @return the collection
+	 */
+	Collection<A> find(IQuery query, int startIndex);
+
+	/**
+	 * Returns a collection of dtos selected by the given jpql. <br>
+	 * This method throws an {@link IllegalArgumentException} if the defined
+	 * jpql does not select dtos.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the collection
+	 */
+	Collection<A> findDtos(IJPQL jpql);
+
+	/**
+	 * Returns a list of values selected by the given jpql. <br>
+	 * The values are at the same index as in the JPQL "select"-statement. Eg.
+	 * "select p.name, p.postalcode from Person p".
+	 *
+	 * @param query
+	 *            the query
+	 * @return the collection
+	 */
+	List<?> findValues(IJPQL jpql);
+
+	/**
+	 * Updates the given DTO.
+	 *
+	 * @param dto
+	 *            the dto
+	 */
+	void update(A dto);
+
+	/**
+	 * Deletes the given DTO.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @throws DtoServiceException
+	 *             if the record can not be deleted
+	 */
+	void delete(A dto) throws DtoServiceException;
+
+	/**
+	 * Returns the count of all dto matching the filter.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the int
+	 */
+	int size(IQuery query);
+
+	/**
+	 * Returns true, if the dto exists for the given filter.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return true, if successful
+	 */
+	boolean contains(Object dto, IQuery query);
+	
+	/**
+	 * Returns true, if a dto exists for the given filter.
+	 *
+	 * @param query
+	 *            the query
+	 * @return true, if successful
+	 */
+	boolean contains(IQuery query);
+
+	/**
+	 * Returns the next dto for the given one using the filter and the
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return the next
+	 */
+	A getNext(A dto, IQuery query);
+
+	/**
+	 * Returns the previous dto for the given one using the filter and the
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return the previous
+	 */
+	A getPrevious(A dto, IQuery query);
+
+	/**
+	 * Returns the first dto for the given filter and the sortOrder.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the first
+	 */
+	A getFirst(IQuery query);
+
+	/**
+	 * Returns the last dto for the given filter and the sortOrder.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the last
+	 */
+	A getLast(IQuery query);
+
+	/**
+	 * Returns true, if the given dto is the first one for the filter and
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return true, if is first
+	 */
+	boolean isFirst(A dto, IQuery query);
+
+	/**
+	 * Returns true, if the given dto is the last one for the filter and
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return true, if is last
+	 */
+	boolean isLast(A dto, IQuery query);
+
+	/**
+	 * Returns the index of the given dto for the filter and sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return the int
+	 */
+	int indexOf(A dto, IQuery query);
+
+	/**
+	 * Returns the dto for the given index, filter and sortOrder.
+	 *
+	 * @param index
+	 *            the index
+	 * @param query
+	 *            the query
+	 * @return the by index
+	 */
+	A getByIndex(int index, IQuery query);
+
+	/**
+	 * Returns a list of dtos with size &lt;= numberOfItems, starting from the
+	 * startIndex in respect to the filter and sortOrder.
+	 *
+	 * @param startIndex
+	 *            the start index
+	 * @param numberOfItems
+	 *            the number of items
+	 * @param query
+	 *            the query
+	 * @return the by index
+	 */
+	List<A> getByIndex(int startIndex, int numberOfItems, IQuery query);
+
+	/**
+	 * Validates the given DTO.
+	 *
+	 * @param object
+	 *            the object
+	 * @param kind
+	 *            the kind of validation
+	 * @param properties
+	 *            any kind of properties required in validation
+	 * @return the sets the
+	 * @throws IllegalStateException
+	 *             if no Validator is available
+	 */
+	Set<IStatus> validate(A object, ValidationKind kind, Map<String, Object> properties) throws IllegalStateException;
+
+	/**
+	 * Gets the id.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return the id
+	 */
+	Object getId(A dto);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOServiceWithMutablePersistence.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOServiceWithMutablePersistence.java
new file mode 100644
index 0000000..f2c290b
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDTOServiceWithMutablePersistence.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import javax.persistence.EntityManagerFactory;
+
+/**
+ * This DTO service allows to specify a deviating persistence ID.
+ *
+ * @param <A>
+ */
+public interface IDTOServiceWithMutablePersistence<A> extends IDTOService<A> {
+
+	/**
+	 * Returns the persistence Id which is used to find the proper
+	 * {@link EntityManagerFactory},
+	 * 
+	 * @return
+	 */
+	String getPersistenceId();
+
+	/**
+	 * Sets the persistence Id which is used to find the proper
+	 * {@link EntityManagerFactory},
+	 * 
+	 * @param persistenceId
+	 */
+	void setPersistenceId(String persistenceId);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDatamartService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDatamartService.java
new file mode 100644
index 0000000..4fe2bb0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IDatamartService.java
@@ -0,0 +1,51 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - 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                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG                              
+ * 
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.util.List;
+
+import org.eclipse.osbp.runtime.common.filter.IService;
+
+/**
+ * The Interface IDatamartService.
+ *
+ * @param <T> the generic beantype of a datamart
+ */
+public interface IDatamartService<T> extends IService {
+	List<T> getResults(String datamartFQN);
+
+	int size(IQuery createQuery);
+
+	boolean contains(T bean, IQuery createQuery);
+
+	T getNext(T bean, IQuery createQuery);
+
+	T getPrevious(T bean, IQuery createQuery);
+
+	T getFirst(IQuery createQuery);
+
+	T getLast(IQuery createQuery);
+
+	boolean isFirst(T bean, IQuery createQuery);
+
+	boolean isLast(T bean, IQuery createQuery);
+
+	int indexOf(T bean, IQuery createQuery);
+
+	T getByIndex(int index, IQuery createQuery);
+
+	List<T> getByIndex(int startIndex, int numberOfItems, IQuery createQuery);
+
+	T get(Object idValue);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IFilterEnhancer.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IFilterEnhancer.java
new file mode 100644
index 0000000..8c39c0c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IFilterEnhancer.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+ 
+package org.eclipse.osbp.runtime.common.filter;
+
+public interface IFilterEnhancer {
+	
+	/**
+	 * Enhance query to follow user filters
+	 *
+	 * @param query the query
+	 */
+	void enhanceQuery(IQuery query);
+	
+	/**
+	 * Check get for direct id navigation
+	 *
+	 * @param entityClass the entity class
+	 * @param id the id
+	 * @return true, if successful
+	 */
+	boolean checkGet(Class<?> entityClass, Object id);
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IJPQL.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IJPQL.java
new file mode 100644
index 0000000..1a8b0eb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IJPQL.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 
+ * @noimplement by clients. Will be changed in future!
+ */
+public interface IJPQL extends Serializable {
+
+	/**
+	 * Returns the JPQL.
+	 * 
+	 * @return
+	 */
+	String getJPQL();
+
+	/**
+	 * Returns the map with additional information.
+	 * 
+	 * @return
+	 */
+	Map<String, Object> getParameters();
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilter.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilter.java
new file mode 100644
index 0000000..94cecbe
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilter.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.io.Serializable;
+
+public interface ILFilter extends Serializable {
+
+    /**
+     * Check if a change in the value of a property can affect the filtering
+     * result. May always return true, at the cost of performance.
+     * 
+     * If the filter cannot determine whether it may depend on the property
+     * or not, should return true.
+     * 
+     * @param propertyId
+     * @return true if the filtering result may/does change based on changes
+     *         to the property identified by propertyId
+     */
+    public boolean appliesToProperty(Object propertyId);
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilterService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilterService.java
new file mode 100644
index 0000000..455446d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/ILFilterService.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+/**
+ * Provides methods to create several filters.
+ */
+public interface ILFilterService {
+
+	/**
+	 * Creates a filter following the SQL syntax:<br>
+	 * <i>where {idProperty} <> {id} and {valueProperty} = {value}</i>
+	 * 
+	 * @param value
+	 * @param valueProperty
+	 * @param id
+	 * @param idProperty
+	 * @return
+	 */
+	ILFilter createUniqueEntryFilter(Object value, String valueProperty, Object id, String idProperty);
+
+	
+	IQuery createQuery(ILFilter filter);
+	
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IQuery.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IQuery.java
new file mode 100644
index 0000000..db4c6e6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IQuery.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 
+ * @noimplement by clients. Will be changed in future!
+ */
+public interface IQuery extends Serializable {
+
+	/**
+	 * Returns the root filter that should be used for the query.
+	 * 
+	 * @return
+	 */
+	ILFilter getFilter();
+
+	/**
+	 * Replaces the root filter that should be used for the query.
+	 * 
+	 */
+	void replaceFilter(ILFilter filter);
+	
+	/**
+	 * Returns the sortable columns.
+	 * 
+	 * @return
+	 */
+	SortOrder getSortOrder();
+
+	/**
+	 * Returns the map with additional information.
+	 * 
+	 * @return
+	 */
+	Map<String, Object> getMap();
+	
+}
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IService.java
similarity index 73%
rename from org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java
rename to org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IService.java
index 5ed5873..52d16d3 100644
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/ISessionManagerService.java
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/IService.java
@@ -8,10 +8,12 @@
  * Contributors:
  *         Florian Pirchner - Initial implementation
  */
-package org.eclipse.osbp.runtime.security;
+package org.eclipse.osbp.runtime.common.filter;
 
-import org.apache.shiro.session.mgt.SessionManager;
+/**
+ * Provides methods to create several filters.
+ */
+public interface IService {
 
-public interface ISessionManagerService extends SessionManager {
-
+	
 }
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortBy.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortBy.java
new file mode 100644
index 0000000..f43420e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortBy.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.io.Serializable;
+
+public class SortBy  implements Serializable {
+
+    private static final long serialVersionUID = -6308560006578484770L;
+
+    /**
+     * The property ID to sort by.
+     */
+    private final Object propertyId;
+
+    /**
+     * True to sort ascendingly, false to sort descendingly.
+     */
+    private final boolean ascending;
+
+    /**
+     * Gets the property ID to sort by.
+     */
+    public Object getPropertyId() {
+        return propertyId;
+    }
+
+    /**
+     * Returns true to sort ascendingly, false to sort descendingly.
+     */
+    public boolean isAscending() {
+        return ascending;
+    }
+
+    /**
+     * Creates a new <code>SortBy</code> instance.
+     * 
+     * @param propertyId
+     *            the property ID to sort by (must not be null).
+     * @param ascending
+     *            true to sort ascendingly, false to sort descendingly.
+     */
+    public SortBy(Object propertyId, boolean ascending) {
+        assert propertyId != null : "propertyId must not be null";
+        this.propertyId = propertyId;
+        this.ascending = ascending;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj.getClass() == getClass()) {
+            SortBy o = (SortBy) obj;
+            return o.propertyId.equals(propertyId) && o.ascending == ascending;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = propertyId.hashCode();
+        hash = hash * 7 + new Boolean(ascending).hashCode();
+        return hash;
+    }
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortOrder.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortOrder.java
new file mode 100644
index 0000000..66d7dd6
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/filter/SortOrder.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.runtime.common.filter;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class SortOrder implements Serializable {
+
+	private final List<SortBy> sortBy = new ArrayList<SortBy>();
+
+	public SortOrder() {
+	}
+
+	/**
+	 * @return the sortOrder
+	 */
+	public List<SortBy> getSortBy() {
+		return sortBy;
+	}
+	
+	/**
+	 * @param e
+	 * @return
+	 * @see java.util.List#add(java.lang.Object)
+	 */
+	public boolean add(SortBy e) {
+		return sortBy.add(e);
+	}
+
+	public void clear() {
+		sortBy.clear();
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCodeUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCodeUtil.java
index d93c3e6..a6c4afa 100644
--- a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCodeUtil.java
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/keystroke/KeyCodeUtil.java
@@ -143,4 +143,34 @@
 		return result;
 	}
 
+	/**
+	 * Key lookup integer.
+	 *
+	 * @param name of the key 
+	 * @return the integer
+	 */
+	public static Integer keyLookupInteger(final String name) {
+		final Object value = keyCodeMappings.get(name);
+		if (value instanceof Integer) {
+			return (Integer) value;
+		}
+
+		return Integer.valueOf(name.charAt(0));
+	}
+
+	/**
+	 * Modifier lookup.
+	 *
+	 * @param name of the modifier
+	 * @return the int
+	 */
+	public static int modifierLookup(final String name) {
+		final Object value = modifierMappings.get(name);
+		if (value instanceof Integer) {
+			return ((Integer) value).intValue();
+		}
+
+		return 0;
+	}
+	
 }
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/AbstractSession.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/AbstractSession.java
new file mode 100644
index 0000000..66bae41
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/AbstractSession.java
@@ -0,0 +1,74 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.function.Function;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+
+/**
+ * A base implementation of the session using the SessionUnitOfWork to provide
+ * session scope.
+ */
+public abstract class AbstractSession implements ISession {
+
+	private Type sessionType = Type.MASTER;
+
+	@Override
+	public <T> T apply(Function<ISession, T> function) {
+		if (function == null) {
+			throw new NullPointerException("Function is null!");
+		}
+		return function.apply(this);
+	}
+
+	@Override
+	public <T> CompletableFuture<FutureResult<T>> async(final Function<ISession, T> function,
+			SessionCallback<T> callback) {
+		return async(function, callback, null);
+	}
+
+	@Override
+	public <T> CompletableFuture<FutureResult<T>> async(Function<ISession, T> function, SessionCallback<T> callback,
+			ExecutorService executor) {
+
+		CompletableFuture<T> promise = doAsync(function, executor);
+
+		CompletableFuture<FutureResult<T>> transformer = promise.handle((t, e) -> {
+			return new FutureResult<T>(this, t, e);
+		});
+
+		CompletableFuture<FutureResult<T>> notifier = transformer.whenComplete((r, t) -> {
+			if (callback == null) {
+				return;
+			}
+			callback.accept(r);
+		});
+		return notifier;
+
+	}
+
+	/**
+	 * The implementation needs to synchronize the runnable with the underlying
+	 * frameworks. For instance Vaadin UI. This method MUST NOT block.
+	 * 
+	 * @param function
+	 * @param executor
+	 */
+	protected abstract <T> CompletableFuture<T> doAsync(final Function<ISession, T> function, ExecutorService executor);
+
+	@Override
+	public void sendData(Map<String, Object> data) {
+		// override if used
+	}
+
+	public Type getType() {
+		return sessionType;
+	}
+
+	public void setType(Type sessionType) {
+		this.sessionType = sessionType;
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISession.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISession.java
new file mode 100644
index 0000000..471419f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISession.java
@@ -0,0 +1,154 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+
+/**
+ * And abstraction above a state. Eg. Vaadin UI.
+ */
+public interface ISession {
+
+	String HOSTNAME = "hostname";
+	String IS_SLAVE = "slave";
+
+	/**
+	 * Returns the host address of the session.
+	 * 
+	 * @return
+	 */
+	String getHost();
+
+	/**
+	 * Executes the function in the scope of the session.
+	 * 
+	 * @param function
+	 * @return
+	 */
+	<T> T apply(Function<ISession, T> function);
+
+	/**
+	 * Creates a {@link CompletableFuture} for the given function. This method
+	 * must NOT block.
+	 * 
+	 * @param function
+	 * @param callback
+	 * @return
+	 */
+	<T> CompletableFuture<FutureResult<T>> async(final Function<ISession, T> function, SessionCallback<T> callback);
+
+	/**
+	 * Creates a {@link CompletableFuture} for the given function. This method
+	 * must NOT block.
+	 * 
+	 * @param function
+	 * @param callback
+	 * @return
+	 */
+	<T> CompletableFuture<FutureResult<T>> async(final Function<ISession, T> function, SessionCallback<T> callback,
+			ExecutorService executor);
+
+	/**
+	 * Sends the given data to the session. Call must by synced.
+	 * 
+	 * @param data
+	 */
+	void sendData(Map<String, Object> data);
+
+	/**
+	 * Returns the property associated with the key.
+	 * 
+	 * @param key
+	 * @return
+	 */
+	<T> T get(Class<T> key);
+
+	/**
+	 * Returns the property associated with the key.
+	 * 
+	 * @param key
+	 * @return
+	 */
+	Object get(String key);
+
+	void set(String key, Object object);
+
+	/**
+	 * Returns true, if the session has slave sessions. Otherwise false.
+	 * 
+	 * @return
+	 */
+	boolean isMasterSession();
+
+	/**
+	 * Returns true, if the session is a slave session and has a master session.
+	 * Otherwise false.
+	 * 
+	 * @return
+	 */
+	boolean isSlaveSession();
+
+	/**
+	 * Returns the type {@link Type} of this session.
+	 * 
+	 * @return
+	 */
+	Type getType();
+
+	/**
+	 * Returns the master session, if the session is a slave session.
+	 * <code>Null</code> otherwise.
+	 * 
+	 * @return
+	 */
+	ISession getMaster();
+
+	/**
+	 * Returns an unmodifiable list of all slave sessions connected to this
+	 * master. Returns never <code>null</code>.
+	 * 
+	 * @return
+	 */
+	List<ISession> getSlaves();
+	
+	/**
+	 * Returns a list of slaves filtered by given filter.
+	 * @param filter
+	 * @return
+	 */
+	List<ISession> getSlaves(Predicate<ISession> filter);
+
+	/**
+	 * Adds a session which is a slave. Slaves are used to "paint" on web UIs
+	 * controlled by the master session.
+	 * 
+	 * @param name
+	 * @return
+	 */
+	void addSlave(ISession slave);
+
+	/**
+	 * See {@link #addSlaveSession(ISession)}
+	 * 
+	 * @param slave
+	 */
+	void removeSlave(ISession slave);
+
+	/**
+	 * In case of slave session, the session MUST provide a fragment following
+	 * the pattern: {master-host}{UI-to-display}
+	 * 
+	 * @return
+	 */
+	String getFragment();
+
+	enum Type {
+		MASTER, SLAVE;
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISessionManager.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISessionManager.java
new file mode 100644
index 0000000..89e63ff
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/ISessionManager.java
@@ -0,0 +1,112 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+/**
+ * Is responsible to keep track of all {@link ISession}s in this JVM
+ * instance.<br>
+ * Sessions are added and removed automatically by the manager.
+ */
+public interface ISessionManager {
+
+	/**
+	 * Returns an unmodifiable list of sessions.
+	 * 
+	 * @param filter
+	 *            an optional filter which is used to filter the sessions before
+	 *            they are added to the result list.
+	 * @return
+	 */
+	List<ISession> getSessions(Predicate<ISession> filter);
+
+	/**
+	 * Returns an unmodifiable list of sessions. This method MUST NOT block.
+	 * 
+	 * @param filter
+	 *            an optional filter which is used to filter the sessions before
+	 *            they are added to the result list.
+	 * @return
+	 */
+	CompletableFuture<List<ISession>> getSessionsAsync(Predicate<ISession> filter);
+
+	/**
+	 * Syncs all {@link ISession} with the given function in an async way. This
+	 * method MUST NOT block.
+	 * 
+	 * @param function
+	 *            The function to transform the session to a return value.
+	 * @return {@link CompletableFuture} which is completed with a list of
+	 *         {@link FutureResult}
+	 */
+	<T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function);
+
+	/**
+	 * Syncs the {@link ISession}s matching the filter with the given function
+	 * in an async way. This method MUST NOT block.
+	 * 
+	 * @param function
+	 *            The function to transform the session to a return value.
+	 * @return {@link CompletableFuture} which is completed with a list of
+	 *         {@link FutureResult}
+	 * @param filter
+	 *            an optional filter which is used to filter the sessions before
+	 *            they are added to the result list.
+	 * @return
+	 */
+	<T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function, Predicate<ISession> filter);
+
+	/**
+	 * Syncs all {@link ISession} with the given function in an async way. This
+	 * method MUST NOT block.
+	 * 
+	 * @param function
+	 *            The function to transform the session to a return value.
+	 * @param callback
+	 *            The callback is attached to every future in the resulting list
+	 * @return A list of {@link CompletableFuture}s. One
+	 *         {@link CompletableFuture} for each async request to
+	 *         {@link ISession#async(Function, SessionCallback)}
+	 *         {@link FutureResult}
+	 */
+	<T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function, SessionCallback<T> callback);
+
+	/**
+	 * Syncs the {@link ISession}s matching the filter with the given function
+	 * in an async way. This method MUST NOT block.
+	 * 
+	 * @param function
+	 *            The function to transform the session to a return value.
+	 * @param callback
+	 *            The callback is attached to every future in the resulting list
+	 * @param filter
+	 *            an optional filter which is used to filter the sessions before
+	 *            they are added to the result list.
+	 * @return A list of {@link CompletableFuture}s. One
+	 *         {@link CompletableFuture} for each async request to
+	 *         {@link ISession#async(Function, SessionCallback)}
+	 *         {@link FutureResult}
+	 */
+	<T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function, SessionCallback<T> callback,
+			Predicate<ISession> filter);
+
+	class FutureResult<T> {
+		public final ISession session;
+		public final T value;
+		public final Throwable error;
+
+		public final boolean isError;
+
+		public FutureResult(ISession session, T value, Throwable error) {
+			super();
+			this.session = session;
+			this.value = value;
+			this.error = error;
+
+			isError = error != null;
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionCallback.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionCallback.java
new file mode 100644
index 0000000..432965e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionCallback.java
@@ -0,0 +1,10 @@
+package org.eclipse.osbp.runtime.common.session;
+
+import org.eclipse.osbp.runtime.common.session.ISessionManager.FutureResult;
+
+@FunctionalInterface
+public interface SessionCallback<T> {
+	
+	void accept(FutureResult<T> result);
+	
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionUtil.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionUtil.java
new file mode 100644
index 0000000..b88cf54
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/SessionUtil.java
@@ -0,0 +1,37 @@
+package org.eclipse.osbp.runtime.common.session;
+
+public class SessionUtil {
+
+	private SessionUtil(){
+		
+	}
+	
+	/**
+	 * Splits the fragment by "," and returns the encoded info. Returns null, if no fragment available.
+	 * @param fragment
+	 * @return
+	 */
+	public static Info getFragmentInfo(String fragment){
+		if(fragment == null){
+			return null;
+		}
+		String[] tokens = fragment.split("-");
+		if(tokens.length == 1) {
+			return null;
+		}
+		return new Info(tokens[0], tokens[1]);
+	}
+	
+	
+	public static class Info {
+		public final String host;
+		public final String ui;
+		public Info(String host, String ui) {
+			super();
+			this.host = host;
+			this.ui = ui;
+		}
+		
+		
+	}
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/impl/SessionManager.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/impl/SessionManager.java
new file mode 100644
index 0000000..dfcdf50
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/session/impl/SessionManager.java
@@ -0,0 +1,196 @@
+package org.eclipse.osbp.runtime.common.session.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+import org.eclipse.osbp.runtime.common.session.ISession;
+import org.eclipse.osbp.runtime.common.session.ISessionManager;
+import org.eclipse.osbp.runtime.common.session.SessionCallback;
+import org.eclipse.osbp.runtime.common.session.SessionUtil;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(immediate = true)
+public class SessionManager implements ISessionManager {
+
+	static Logger LOGGER = LoggerFactory.getLogger(SessionManager.class);
+
+	List<ISession> sessions;
+
+	ExecutorService executorService;
+
+	@Activate
+	void activate() {
+		sessions = new CopyOnWriteArrayList<>();
+		executorService = Executors.newFixedThreadPool(3, (r) -> {
+			Thread t = new Thread(r);
+			t.setDaemon(true);
+			t.setName(SessionManager.class.getName() + "-" + new Date().getTime());
+			return t;
+		});
+	}
+
+	@Deactivate
+	void deactivate() {
+		sessions.clear();
+		sessions = null;
+
+		try {
+			executorService.awaitTermination(5, TimeUnit.SECONDS);
+		} catch (InterruptedException e) {
+			executorService.shutdownNow();
+		}
+	}
+
+	@Override
+	public List<ISession> getSessions(Predicate<ISession> filter) {
+		if (filter == null) {
+			return Collections.unmodifiableList(sessions);
+		} else {
+			List<ISession> result = new ArrayList<>();
+			for (ISession session : sessions.toArray(new ISession[sessions.size()])) {
+				if (filter != null && !filter.test(session)) {
+					continue;
+				}
+				result.add(session);
+			}
+			return Collections.unmodifiableList(result);
+		}
+	}
+
+	@Override
+	public CompletableFuture<List<ISession>> getSessionsAsync(Predicate<ISession> filter) {
+		return CompletableFuture.supplyAsync(() -> getSessions(filter), executorService);
+	}
+
+	@Override
+	public <T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function) {
+		return asyncAll(function, null);
+	}
+
+	@Override
+	public <T> CompletableFuture<List<FutureResult<T>>> asyncAll(Function<ISession, T> function,
+			Predicate<ISession> filter) {
+
+		// create a promise
+		CompletableFuture<List<FutureResult<T>>> promise = new CompletableFuture<>();
+
+		// query the sessions async
+		CompletableFuture<List<ISession>> sessions = getSessionsAsync(filter);
+
+		// if sessions queried, then call session#async for each session
+		sessions.thenCompose((_sessions) -> {
+			List<CompletableFuture<FutureResult<T>>> asyncs = collectSessionAsyncCalls(_sessions, function);
+
+			// we need a trigger which triggers, if all s#async are done
+			CompletableFuture<Void> allOfTrigger = CompletableFuture
+					.allOf(asyncs.toArray(new CompletableFuture<?>[asyncs.size()]));
+			allOfTrigger.thenRun(() -> {
+				// now lets collect the values from the async calls
+				List<FutureResult<T>> tempResult = asyncs.stream().map((a) -> a.join()).collect(Collectors.toList());
+
+				// and notify the promise
+				promise.complete(tempResult);
+			});
+
+			return allOfTrigger;
+		});
+
+		return promise;
+	}
+
+	/**
+	 * Collects all async session calls and returns the resulting list.
+	 * 
+	 * @param sessions
+	 * @param function
+	 * @return
+	 */
+	<T> List<CompletableFuture<FutureResult<T>>> collectSessionAsyncCalls(List<ISession> sessions,
+			Function<ISession, T> function) {
+		List<CompletableFuture<FutureResult<T>>> asyncs = sessions.stream()
+				.<CompletableFuture<FutureResult<T>>>map((s) -> s.async(function, null)).collect(Collectors.toList());
+		return asyncs;
+	}
+
+	@Override
+	public <T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function,
+			SessionCallback<T> callback) {
+		return asyncEach(function, callback, null);
+	}
+
+	@Override
+	public <T> List<CompletableFuture<FutureResult<T>>> asyncEach(Function<ISession, T> function,
+			SessionCallback<T> callback, Predicate<ISession> filter) {
+
+		// query the sessions sync
+		List<ISession> sessions = getSessions(filter);
+
+		// create future list querying the FutureResult async
+		List<CompletableFuture<FutureResult<T>>> result = sessions.stream().map((s) -> s.async(function, callback))
+				.collect(Collectors.toList());
+		return result;
+	}
+
+	@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+	void addSession(ISession session) {
+		if (session.isSlaveSession()) {
+			// register slave
+			session.set(ISession.IS_SLAVE, true);
+			SessionUtil.Info info = SessionUtil.getFragmentInfo(session.getFragment());
+			if (info != null) {
+				List<ISession> temp = getSessions((s) -> ((String)s.get(ISession.HOSTNAME)).equalsIgnoreCase(info.host));
+
+				for (ISession s : temp) {
+					if (s.getType() == ISession.Type.MASTER) {
+						s.addSlave(session);
+						break;
+					}
+				}
+			}
+		} else {
+			// register master
+			List<ISession> temp = getSessions((s) -> ((Boolean)s.get(ISession.IS_SLAVE)));
+			for (ISession s : temp) {
+				session.addSlave(s);
+			}
+		}
+		session.set(ISession.HOSTNAME, session.getHost());
+		sessions.add(session);
+	}
+
+	void removeSession(ISession session) {
+		if (session.isSlaveSession()) {
+			SessionUtil.Info info = SessionUtil.getFragmentInfo(session.getFragment());
+			if (info != null) {
+				List<ISession> temp = getSessions((s) -> ((String)s.get(ISession.HOSTNAME)).equalsIgnoreCase(info.host));
+
+				for (ISession s : temp) {
+					if (s.isMasterSession()) {
+						s.removeSlave(session);
+						break;
+					}
+				}
+			}
+		}
+		sessions.remove(session);
+
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/BeanUtils.java b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/BeanUtils.java
new file mode 100644
index 0000000..8aba595
--- /dev/null
+++ b/org.eclipse.osbp.runtime.common/src/org/eclipse/osbp/runtime/common/util/BeanUtils.java
@@ -0,0 +1,259 @@
+package org.eclipse.osbp.runtime.common.util;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.osbp.runtime.common.annotations.AsKanbanState;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.annotations.Filter;
+import org.eclipse.osbp.runtime.common.annotations.OnKanbanCard;
+import org.eclipse.osbp.runtime.common.annotations.Range;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BeanUtils {
+
+	/** The Constant LOGGER. */
+	private static final Logger LOGGER = LoggerFactory.getLogger(BeanUtils.class);
+
+	public static List<Field> getAllFilteringFields(Class<?> clazz) {
+		List<Field> result = new ArrayList<>();
+
+		for (Field field : getAllFields(clazz)) {
+			if (field.isAnnotationPresent(Range.class) || field.isAnnotationPresent(Filter.class)) {
+				result.add(field);
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns all filtering fields recurse to the defined depth.
+	 * 
+	 * @param clazz
+	 * @param depth
+	 * @return
+	 */
+	public static List<Field> getAllFilteringFieldsRecurse(Class<?> clazz, int depth) {
+		List<Field> result = new ArrayList<>();
+		if (depth == -1) {
+			return result;
+		}
+
+		for (Field field : getAllFields(clazz)) {
+			if (field.isAnnotationPresent(Range.class) || field.isAnnotationPresent(Filter.class)) {
+				result.add(field);
+			} else if (field.isAnnotationPresent(DomainReference.class)) {
+				result.addAll(getAllFilteringFieldsRecurse(field.getType(), depth--));
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns all property ids (eg: person.country.isocode) recurse to the
+	 * defined depth.
+	 * 
+	 * @param clazz
+	 * @param depth
+	 * @return
+	 */
+	public static List<String> getAllFilteringProperties(Class<?> clazz, int depth) {
+		List<String> result = new ArrayList<>();
+		if (depth == -1) {
+			return result;
+		}
+
+		return internalGetAllFilteringProperties(null, clazz, depth);
+	}
+
+	private static List<String> internalGetAllFilteringProperties(String currentPath, Class<?> clazz, int depth) {
+		List<String> result = new ArrayList<>();
+		if (depth == -1) {
+			return result;
+		}
+
+		String newPath = currentPath;
+		int newDepth = depth - 1;
+
+		if (currentPath == null) {
+			newPath = "";
+		}
+
+		for (Field field : getAllFields(clazz)) {
+			if (field.isAnnotationPresent(Range.class) || field.isAnnotationPresent(Filter.class)) {
+				result.add(toPath(newPath, field.getName()));
+			} else if (field.isAnnotationPresent(DomainReference.class)) {
+				result.addAll(
+						internalGetAllFilteringProperties(toPath(newPath, field.getName()), field.getType(), newDepth));
+			}
+		}
+
+		return result;
+	}
+
+	private static String toPath(String currentPath, String fieldName) {
+		if (currentPath == null || currentPath.trim().equals("")) {
+			return fieldName;
+		} else {
+			return currentPath + "." + fieldName;
+		}
+	}
+
+	public static List<Field> getAllFields(Class<?> clazz) {
+		if (clazz == null) {
+			return null;
+		}
+
+		List<Field> result = new ArrayList<>();
+		try {
+			result.addAll(Arrays.asList(clazz.getDeclaredFields()));
+		} catch (SecurityException e) {
+			LOGGER.warn("{}", e);
+		}
+
+		Class<?> superClass = clazz.getSuperclass();
+		if (superClass != null) {
+			List<Field> temp = getAllFields(superClass);
+			result.addAll(temp);
+		}
+		return result;
+	}
+
+	/**
+	 * Returns the enum literals of the field annotated with AsKanbanState. Or
+	 * null.
+	 * 
+	 * @param clazz
+	 * @return
+	 */
+	public static <T> T[] getKanbanStateEnumLiterals(Class<?> clazz) {
+		if (clazz == null) {
+			return null;
+		}
+
+		@SuppressWarnings("unchecked")
+		Class<T> enumx = (Class<T>) getAllFields(clazz).stream().filter(f -> f.isAnnotationPresent(AsKanbanState.class))
+				.findFirst().map(f -> f.getType()).orElse(null);
+		if (enumx != null && enumx.isEnum()) {
+			return enumx.getEnumConstants();
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the enum literals of the field annotated with AsKanbanState. Or
+	 * null.
+	 * 
+	 * @param clazz
+	 * @return
+	 */
+	public static List<String> getKanbanVisibleOnCardProperties(Class<?> clazz) {
+		if (clazz == null) {
+			return null;
+		}
+
+		return getAllFields(clazz).stream().filter(f -> f.isAnnotationPresent(OnKanbanCard.class))
+				.map(f -> f.getName()).collect(Collectors.toList());
+	}
+
+	/**
+	 * Returns the state value of the given itemId.
+	 * 
+	 * @param itemId
+	 * @return
+	 */
+	@SuppressWarnings("unchecked")
+	public static <T> T getKanbanState(Object itemId) {
+		Field stateField = getAllFields(itemId.getClass()).stream()
+				.filter(f -> f.isAnnotationPresent(AsKanbanState.class)).findFirst().orElse(null);
+		if (stateField != null) {
+			return (T) DtoUtils.getValue(itemId, stateField.getName());
+		}
+
+		return null;
+	}
+
+	public static Class<?> getNestedFieldType(Class<?> clazz, String dotedPath) {
+		Field field = getNestedField(clazz, dotedPath);
+		return field != null ? field.getType() : null;
+	}
+
+	public static Field getNestedField(Class<?> clazz, String dotedPath) {
+
+		String[] tokens = dotedPath.split("\\.");
+
+		Field field = null;
+		Class<?> fieldType = clazz;
+		for (String token : tokens) {
+			field = getField(fieldType, token);
+			if (field == null) {
+				return null;
+			}
+
+			fieldType = field.getType();
+		}
+
+		return field;
+	}
+
+	public static Field getField(Class<?> clazz, String name) {
+		if (clazz == null) {
+			return null;
+		}
+		Field field = null;
+		try {
+			field = clazz.getDeclaredField(name);
+		} catch (SecurityException e) {
+			LOGGER.warn("{}", e);
+		} catch (NoSuchFieldException e) {
+		}
+
+		if (field == null) {
+			Class<?> superClass = clazz.getSuperclass();
+			if (superClass != null) {
+				field = getField(superClass, name);
+			}
+		}
+		return field;
+	}
+
+	public static boolean isBoolean(Class<?> clazz, String propertyId) {
+		Class<?> type = getNestedFieldType(clazz, propertyId);
+		return type == Boolean.class || type == Boolean.TYPE;
+	}
+
+	public static boolean isDate(Class<?> clazz, String propertyId) {
+		Class<?> type = getNestedFieldType(clazz, propertyId);
+		return Date.class.isAssignableFrom(type);
+	}
+
+	public static boolean isDecimal(Class<?> clazz, String propertyId) {
+		Class<?> type = getNestedFieldType(clazz, propertyId);
+		return type != String.class && type != Boolean.class && type != Boolean.TYPE
+				&& (type.isPrimitive() || Number.class.isAssignableFrom(type));
+	}
+
+	public static boolean isString(Class<?> clazz, String propertyId) {
+		Class<?> type = getNestedFieldType(clazz, propertyId);
+		return type == String.class;
+	}
+
+	public static boolean isAnnotationPresent(Class<?> clazz, String nestedPropertyId,
+			Class<? extends Annotation> annotation) {
+		Field field = getNestedField(clazz, nestedPropertyId);
+		if (field == null) {
+			return false;
+		}
+		return field.isAnnotationPresent(annotation);
+	}
+
+}
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.classpath b/org.eclipse.osbp.runtime.datasource.provider/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..7a53139
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
+encoding/src=UTF-8
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..13b3428
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
index ab4b857..975b3eb 100644
--- a/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.datasource.provider/META-INF/MANIFEST.MF
@@ -18,7 +18,7 @@
  org.slf4j;version="1.7.2"
 Require-Bundle: org.eclipse.gemini.dbaccess.derby;bundle-version="1.1.0",
  org.apache.derby;bundle-version="10.8.2",
- org.eclipse.osbp.fork.gemini.naming;bundle-version="[1.1.0,1.1.1)",
+ org.eclipse.gemini.naming;bundle-version="[1.0.5,1.0.6)",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
 Service-Component: OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.xml,
  OSGI-INF/org.eclipse.osbp.runtime.datasource.provider.DatasourceService.xml
diff --git a/org.eclipse.osbp.runtime.designer.api/.classpath b/org.eclipse.osbp.runtime.designer.api/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.designer.api/.gitignore b/org.eclipse.osbp.runtime.designer.api/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a698e59
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.designer.api/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.classpath b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF
index 3df4750..d80784c 100644
--- a/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.eclipselink.core.fragment/META-INF/MANIFEST.MF
@@ -9,4 +9,3 @@
 Export-Package: org.eclipse.osbp.runtime.eclipselink.core.fragment;version="0.9.0"
 Import-Package: javax.persistence.spi,
  javax.transaction;version="1.1.0"
-Require-Bundle: org.apache.aries.transaction.manager
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.classpath b/org.eclipse.osbp.runtime.ecore.bundlespace/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.gitignore b/org.eclipse.osbp.runtime.ecore.bundlespace/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
index 2df7f33..4e53e29 100644
--- a/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.ecore.bundlespace/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.osbp.runtime.ecore.bundlespace
 Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-SymbolicName: org.eclipse.osbp.runtime.ecore.bundlespace
 Bundle-Version: 0.9.0.qualifier
 Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/org.eclipse.osbp.runtime.emf/.classpath b/org.eclipse.osbp.runtime.emf/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.emf/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.event/.classpath b/org.eclipse.osbp.runtime.event/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.event/.gitignore b/org.eclipse.osbp.runtime.event/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.event/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.event/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
index bcdeed9..dc3a1e7 100644
--- a/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.event/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.osbp.runtime.event
 Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-SymbolicName: org.eclipse.osbp.runtime.event
 Bundle-Version: 0.9.0.qualifier
 Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/.gitignore b/org.eclipse.osbp.runtime.feature.allinone.testframework/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.allinone.testframework/src/license/THIRD-PARTY.properties b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/license/THIRD-PARTY.properties
new file mode 100644
index 0000000..652694d
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.allinone.testframework/src/license/THIRD-PARTY.properties
@@ -0,0 +1,27 @@
+# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
+#-------------------------------------------------------------------------------
+# Already used licenses in project :
+# - Apache License 2.0
+# - BSD License
+# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+#										(CDDL)
+#										Version
+#										1.0
+# - Common Public License Version 1.0
+# - Eclipse Public License v1.0
+# - GNU LGPL 3
+# - Indiana University Extreme! Lab Software
+#										License,
+#										vesion 1.1.1
+# - Lesser General Public License (LPGL)
+# - Lesser General Public License (LPGL) v 2.1
+# - MIT License
+# - The Apache Software License, Version 2.0
+#-------------------------------------------------------------------------------
+# Please fill the missing licenses for dependencies :
+#
+#
+#Mon Feb 09 16:05:30 CET 2015
+org.eclipse.gemini--org.apache.derby--10.8.2.2=
+org.eclipse.gemini--org.eclipse.gemini.dbaccess.derby--1.1.0.RELEASE=
+org.eclipse.gemini--org.eclipse.gemini.dbaccess.util--1.1.0.RELEASE=
diff --git a/org.eclipse.osbp.runtime.feature.common/.gitignore b/org.eclipse.osbp.runtime.feature.common/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.common/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.common/feature.xml b/org.eclipse.osbp.runtime.feature.common/feature.xml
index 1b1e145..fd8dfbb 100644
--- a/org.eclipse.osbp.runtime.feature.common/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.common/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.common"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.common">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.gitignore b/org.eclipse.osbp.runtime.feature.datasource.provider/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
index 9a9ed70..2e33c1c 100644
--- a/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.datasource.provider/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.datasource.provider"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.datasource.provider">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.gitignore b/org.eclipse.osbp.runtime.feature.e4eventmanager/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
index cbd2795..de6feab 100644
--- a/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.e4eventmanager/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.e4eventmanager"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.event">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.gitignore b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
index 2382144..90d4c3b 100644
--- a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.eclipselink.core.fragment"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.eclipselink.core.fragment">
         
     <description>
         %description
@@ -28,14 +29,7 @@
         %license
     </license>
         
-    <plugin
-        id="org.apache.aries.transaction.manager"
-        download-size="0"
-        install-size="0"
-        version="0.0.0"
-        unpack="false"/>
-
-    <plugin
+     <plugin
         id="org.eclipse.osbp.runtime.eclipselink.core.fragment"
         download-size="0"
         install-size="0"
diff --git a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
index eda9658..38f0c57 100644
--- a/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
+++ b/org.eclipse.osbp.runtime.feature.eclipselink.core.fragment/pom.xml
@@ -40,7 +40,6 @@
                     <labelSuffix> (source)</labelSuffix>
                     <excludes>
                         <plugin id="org.eclipse.persistence.core"/>
-                        <plugin id="org.apache.aries.transaction.manager"/>
                     </excludes>
                 </configuration>
             </plugin>
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.gitignore b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
index 2523749..282ee2d 100644
--- a/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.ecore.bundlespace/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.ecore.bundlespace"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.ecore.bundlespace">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.gitignore b/org.eclipse.osbp.runtime.feature.jsr303.validation/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
index 3a293eb..d0316d1 100644
--- a/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.jsr303.validation/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.jsr303.validation"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.jsr303.validation">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.gitignore b/org.eclipse.osbp.runtime.feature.resolverhooks/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
index 0520982..2dcb42f 100644
--- a/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.resolverhooks/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.resolverhooks"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.systemextension">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.gitignore b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
index 7e0d31b..f96901d 100644
--- a/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
+++ b/org.eclipse.osbp.runtime.feature.typeprovider.bundlespace/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.runtime.feature.typeprovider.bundlespace"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.runtime.typeprovider.bundlespace">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.classpath b/org.eclipse.osbp.runtime.jsr303.validation/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.gitignore b/org.eclipse.osbp.runtime.jsr303.validation/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.jsr303.validation/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
index 7ead445..9b684a6 100644
--- a/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.jsr303.validation/META-INF/MANIFEST.MF
@@ -2,22 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.osbp.runtime.jsr303.validation
 Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-SymbolicName: org.eclipse.osbp.runtime.jsr303.validation
 Bundle-Version: 0.9.0.qualifier
-Import-Package: javax.validation;version="1.1.0",
- javax.validation.bootstrap;version="1.1.0",
- javax.validation.constraints;version="1.1.0",
- javax.validation.metadata;version="1.1.0",
- javax.validation.spi;version="1.1.0",
- org.osgi.framework;version="1.8.0",
+Import-Package: org.osgi.framework;version="1.8.0",
  org.osgi.service.component.annotations;version="1.2.0",
  org.osgi.util.tracker;version="1.5.1",
  org.slf4j;version="1.7.2"
 Bundle-ActivationPolicy: lazy
-Service-Component: OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.EventBroker.xml,
- OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant.xml
+Service-Component: OSGI-INF/*.xml
 Require-Bundle: org.apache.bval.org.apache.bval.bundle;bundle-version="0.5.0",
- org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ javax.validation.api;bundle-version="1.1.0"
 Bundle-Activator: org.eclipse.osbp.runtime.jsr303.validation.Activator
 Export-Package: org.eclipse.osbp.runtime.jsr303.validation.common;version="0.9.0"
+Bundle-ClassPath: .
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/build.properties b/org.eclipse.osbp.runtime.jsr303.validation/build.properties
index 53ea953..5ae90c0 100644
--- a/org.eclipse.osbp.runtime.jsr303.validation/build.properties
+++ b/org.eclipse.osbp.runtime.jsr303.validation/build.properties
@@ -1,5 +1,9 @@
 output.. = target/classes/
-bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+bin.includes = about.properties,\
+               about.mappings,\
+               about.ini,\
+               about.html,\
+               META-INF/,\
                .,\
                .project,\
                .classpath,\
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/OSGiMessageInterpolator.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/OSGiMessageInterpolator.java
index 23111f2..b60abd1 100644
--- a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/OSGiMessageInterpolator.java
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/OSGiMessageInterpolator.java
@@ -16,6 +16,7 @@
 import java.util.Locale;
 import java.util.ResourceBundle;
 
+import javax.validation.*;
 import org.apache.bval.jsr303.DefaultMessageInterpolator;
 import org.eclipse.osbp.runtime.common.i18n.II18nService;
 import org.eclipse.osbp.runtime.jsr303.validation.common.ValidationUtil;
@@ -46,7 +47,7 @@
 	}
 
 	@Override
-	public String interpolate(String message, Context context, Locale locale) {
+	public String interpolate(String message, MessageInterpolator.Context context, Locale locale) {
 
 		String result = "";
 		if (i18nService != null) {
@@ -63,7 +64,7 @@
 	}
 
 	@Override
-	public String interpolate(String message, Context context) {
+	public String interpolate(String message, MessageInterpolator.Context context) {
 		return super.interpolate(message, context);
 	}
 
diff --git a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ValidationUtil.java b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ValidationUtil.java
index af1c654..c5f2843 100644
--- a/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ValidationUtil.java
+++ b/org.eclipse.osbp.runtime.jsr303.validation/src/org/eclipse/osbp/runtime/jsr303/validation/common/ValidationUtil.java
@@ -11,19 +11,22 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.runtime.jsr303.validation.common;
+package org.eclipse.osbp.runtime.jsr303.validation.common;
 
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
 import javax.validation.ConstraintViolation;
+import javax.validation.MessageInterpolator;
 import javax.validation.MessageInterpolator.Context;
 import javax.validation.Payload;
 import javax.validation.metadata.ConstraintDescriptor;
 
 import org.eclipse.osbp.runtime.common.validation.IStatus;
 import org.eclipse.osbp.runtime.common.validation.Status;
+import org.eclipse.osbp.runtime.jsr303.validation.OSGiMessageInterpolator;
 
 public class ValidationUtil {
 
@@ -31,6 +34,18 @@
 		super();
 	}
 
+	public static MessageInterpolator createNewMessageInterpolator(Locale locale) {
+		OSGiMessageInterpolator interpolator = new OSGiMessageInterpolator();
+		interpolator.setLocale(locale);
+		return interpolator;
+	}
+
+	public static void updateLocale(MessageInterpolator interpolator, Locale locale) {
+		if (interpolator instanceof OSGiMessageInterpolator) {
+			((OSGiMessageInterpolator) interpolator).setLocale(locale);
+		}
+	}
+
 	/**
 	 * Maps the contraint violations to IStatus.
 	 * 
@@ -46,15 +61,11 @@
 			IStatus.Severity severity = getSeverity(violation);
 			String code = getMessageCode(violation);
 
-			Class<?> clazz = violation.getLeafBean() != null ? violation
-					.getLeafBean().getClass() : null;
-			IStatus status = Status.createStatus(code, clazz, severity,
-					violation.getMessage());
+			Class<?> clazz = violation.getLeafBean() != null ? violation.getLeafBean().getClass() : null;
+			IStatus status = Status.createStatus(code, clazz, severity, violation.getMessage());
 			status.putProperty(IStatus.PROP_JAVAX_CONSTRAINT, violation);
-			status.putProperty(IStatus.PROP_JAVAX_PROPERTY_PATH, violation
-					.getPropertyPath().toString());
-			status.putProperty(IStatus.PROP_JAVAX_LEAF_BEAN,
-					violation.getLeafBean());
+			status.putProperty(IStatus.PROP_JAVAX_PROPERTY_PATH, violation.getPropertyPath().toString());
+			status.putProperty(IStatus.PROP_JAVAX_LEAF_BEAN, violation.getLeafBean());
 
 			if (creator != null) {
 				status.putProperty(IStatus.PROP_CREATOR, creator.getName());
@@ -67,8 +78,7 @@
 	}
 
 	protected static String getMessageCode(ConstraintViolation<?> violation) {
-		String message = violation.getMessageTemplate().substring(1,
-				violation.getMessageTemplate().length() - 1);
+		String message = violation.getMessageTemplate().substring(1, violation.getMessageTemplate().length() - 1);
 		if (message.contains(":")) {
 			String[] tokens = message.split(":");
 			return tokens[1];
@@ -77,11 +87,9 @@
 		return violation.getPropertyPath().toString();
 	}
 
-	protected static IStatus.Severity getSeverity(
-			ConstraintViolation<?> violation) {
+	protected static IStatus.Severity getSeverity(ConstraintViolation<?> violation) {
 		IStatus.Severity severity = IStatus.Severity.ERROR;
-		Set<Class<? extends Payload>> payloads = violation
-				.getConstraintDescriptor().getPayload();
+		Set<Class<? extends Payload>> payloads = violation.getConstraintDescriptor().getPayload();
 		if (payloads.size() > 0) {
 			Class<? extends Payload> payload = payloads.iterator().next();
 			if (payload == InfoSeverity.class) {
@@ -101,8 +109,7 @@
 
 		for (Map.Entry<String, Object> entry : props.entrySet()) {
 			String replacement = "\\{" + entry.getKey() + "\\}";
-			message = message.replaceAll(replacement, entry.getValue()
-					.toString());
+			message = message.replaceAll(replacement, entry.getValue().toString());
 		}
 
 		return message;
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.classpath b/org.eclipse.osbp.runtime.logback.fragment/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.logback.fragment/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
index 889ce06..f73d831 100644
--- a/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.logback.fragment/META-INF/MANIFEST.MF
@@ -6,3 +6,5 @@
 Bundle-Version: 0.9.0.qualifier
 Fragment-Host: ch.qos.logback.classic
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: ch.qos.logback.core.rolling;version="1.1.2",
+ ch.qos.logback.core.rolling.helper;version="1.1.2"
diff --git a/org.eclipse.osbp.runtime.logback.fragment/logback.xml b/org.eclipse.osbp.runtime.logback.fragment/logback.xml
deleted file mode 100644
index c426104..0000000
--- a/org.eclipse.osbp.runtime.logback.fragment/logback.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<configuration>
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <!-- encoders are assigned the type
-         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="ERROR">
-    <appender-ref ref="STDOUT" />
-  </root>
-</configuration>
diff --git a/org.eclipse.osbp.runtime.memento/.classpath b/org.eclipse.osbp.runtime.memento/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.memento/.gitignore b/org.eclipse.osbp.runtime.memento/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.memento/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
index f922205..9e0419e 100644
--- a/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.memento/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.osbp.runtime.memento
 Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-SymbolicName: org.eclipse.osbp.runtime.memento
 Bundle-Version: 0.9.0.qualifier
 Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/org.eclipse.osbp.runtime.security/.project b/org.eclipse.osbp.runtime.security/.project
deleted file mode 100644
index 50329a7..0000000
--- a/org.eclipse.osbp.runtime.security/.project
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.osbp.runtime.security</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.sonarlint.eclipse.core.sonarlintBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.babel.editor.rbeNature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.osbp.runtime.security/LICENSE.txt b/org.eclipse.osbp.runtime.security/LICENSE.txt
deleted file mode 100644
index ff42ad4..0000000
--- a/org.eclipse.osbp.runtime.security/LICENSE.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-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.runtime.security/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.security/META-INF/MANIFEST.MF
deleted file mode 100644
index 6884709..0000000
--- a/org.eclipse.osbp.runtime.security/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,21 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: org.eclipse.osbp.runtime.security
-Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Bundle-SymbolicName: org.eclipse.osbp.runtime.security
-Bundle-Version: 0.9.0.qualifier
-Import-Package: org.osgi.framework;version="1.8.0",
- org.osgi.service.component;version="1.2.2",
- org.osgi.service.component.annotations;version="1.2.0",
- org.osgi.service.event;version="1.3.0",
- org.osgi.service.prefs,
- org.slf4j;version="1.7.2"
-Bundle-ActivationPolicy: lazy
-Service-Component: OSGI-INF/org.eclipse.osbp.runtime.security.impl.UserNotificationService.xml,
- OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml,
- OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml
-Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
- org.apache.shiro.core;bundle-version="1.2.3"
-Export-Package: org.eclipse.osbp.runtime.security;version="0.9.0",
- org.eclipse.osbp.runtime.security.impl;x-internal:=true;version="0.9.0"
diff --git a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml b/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml
deleted file mode 100644
index fab37ab..0000000
--- a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent">
-   <implementation class="org.eclipse.osbp.runtime.security.impl.JdbcRealmComponent"/>
-   <reference bind="setDatasource" cardinality="1..1" interface="javax.sql.DataSource" name="Datasource" policy="static" target="(security.datasource=jdbc)" unbind="unsetDatasource"/>
-</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml b/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml
deleted file mode 100644
index 99e251d..0000000
--- a/org.eclipse.osbp.runtime.security/OSGI-INF/org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent">
-   <implementation class="org.eclipse.osbp.runtime.security.impl.SecurityManagerComponent"/>
-   <reference bind="addRealm" cardinality="0..n" interface="org.apache.shiro.realm.Realm" name="Realm" policy="static" unbind="removeRealm"/>
-</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.security/about.html b/org.eclipse.osbp.runtime.security/about.html
deleted file mode 100644
index 64c0598..0000000
--- a/org.eclipse.osbp.runtime.security/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!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.runtime.security/about.ini b/org.eclipse.osbp.runtime.security/about.ini
deleted file mode 100644
index 7df671f..0000000
--- a/org.eclipse.osbp.runtime.security/about.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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.runtime.security/about.mappings b/org.eclipse.osbp.runtime.security/about.mappings
deleted file mode 100644
index 4511a0a..0000000
--- a/org.eclipse.osbp.runtime.security/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# 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.runtime.security/about.properties b/org.eclipse.osbp.runtime.security/about.properties
deleted file mode 100644
index 706c165..0000000
--- a/org.eclipse.osbp.runtime.security/about.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#    Loetz GmbH&Co.KG - initial API and implementation
-#
-
-# NLS_MESSAGEFORMAT_VAR
-
-featureName=org.eclipse.osbp.runtime.security
-
-################ blurb property ####################################
-featureText=\
-Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    Loetz GmbH&Co.KG - implementation\n
-################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.runtime.security/build.properties b/org.eclipse.osbp.runtime.security/build.properties
deleted file mode 100644
index e79b84a..0000000
--- a/org.eclipse.osbp.runtime.security/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = target/classes/
-bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
-               .,\
-               OSGI-INF/,\
-               .project,\
-               .classpath,\
-               LICENSE.txt
-src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt
diff --git a/org.eclipse.osbp.runtime.security/pom.xml b/org.eclipse.osbp.runtime.security/pom.xml
deleted file mode 100644
index d5b7204..0000000
--- a/org.eclipse.osbp.runtime.security/pom.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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.runtime</groupId>
-        <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
-        <version>0.9.0-SNAPSHOT</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <artifactId>org.eclipse.osbp.runtime.security</artifactId>
-    <packaging>eclipse-plugin</packaging>
-
-</project>
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java
deleted file mode 100644
index 73edbed..0000000
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/JdbcRealmComponent.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *         Florian Pirchner - Initial implementation
- */
-package org.eclipse.osbp.runtime.security.impl;
-
-import javax.sql.DataSource;
-
-import org.apache.shiro.realm.Realm;
-import org.apache.shiro.realm.jdbc.JdbcRealm;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-
-@Component(immediate=true)
-public class JdbcRealmComponent {
-
-	private ComponentContext context;
-	private ServiceRegistration<Realm> reg;
-	private DataSource ds;
-
-	protected void activate(ComponentContext context) {
-		this.context = context;
-
-		JdbcRealm realm = new JdbcRealm();
-		realm.setDataSource(ds);
-
-		reg = this.context.getBundleContext().registerService(Realm.class,
-				realm, null);
-	}
-
-	@Reference(cardinality = ReferenceCardinality.MANDATORY, target = "(security.datasource=jdbc)", unbind = "unsetDatasource")
-	protected void setDatasource(DataSource ds) {
-		this.ds = ds;
-	}
-
-	protected void unsetDatasource(DataSource ds) {
-		this.ds = null;
-	}
-
-	protected void deactivate() {
-		reg.unregister();
-		reg = null;
-	}
-}
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/LdapRealmComponent.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/LdapRealmComponent.java
deleted file mode 100644
index 1660d1a..0000000
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/LdapRealmComponent.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *         Florian Pirchner - Initial implementation
- */
-package org.eclipse.osbp.runtime.security.impl;
-
-import org.apache.shiro.realm.Realm;
-import org.apache.shiro.realm.ldap.JndiLdapContextFactory;
-import org.apache.shiro.realm.ldap.JndiLdapRealm;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.component.ComponentContext;
-
-/**
- * To use this realm, provide your own declarative OSGi service and pass in the
- * properties requested.
- */
-public class LdapRealmComponent {
-
-	private static final String LDAP_AUTHENTICATION_MECHANISM = "osbp.security.ldap.authenticationMechanism";
-	private static final String LDAP_URL = "osbp.security.ldap.url";
-	private ComponentContext context;
-	private ServiceRegistration<Realm> reg;
-
-	protected void activate(ComponentContext context) {
-		this.context = context;
-
-		JndiLdapRealm realm = new JndiLdapRealm();
-		realm.setUserDnTemplate((String) context.getProperties().get(
-				"osbp.security.ldap.userDnTemplate"));
-
-		JndiLdapContextFactory factory = new JndiLdapContextFactory();
-		factory.setUrl((String) context.getProperties().get(LDAP_URL));
-		factory.setAuthenticationMechanism((String) context.getProperties()
-				.get(LDAP_AUTHENTICATION_MECHANISM));
-		realm.setContextFactory(factory);
-
-		reg = this.context.getBundleContext().registerService(Realm.class,
-				realm, null);
-	}
-
-	protected void deactivate() {
-		reg.unregister();
-		reg = null;
-	}
-}
diff --git a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/SecurityManagerComponent.java b/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/SecurityManagerComponent.java
deleted file mode 100644
index 93a93e3..0000000
--- a/org.eclipse.osbp.runtime.security/src/org/eclipse/osbp/runtime/security/impl/SecurityManagerComponent.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *         Florian Pirchner - Initial implementation
- */
-package org.eclipse.osbp.runtime.security.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.config.IniSecurityManagerFactory;
-import org.apache.shiro.mgt.DefaultSecurityManager;
-import org.apache.shiro.mgt.SecurityManager;
-import org.apache.shiro.realm.Realm;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.component.ComponentContext;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-
-@Component(immediate=true)
-public class SecurityManagerComponent {
-
-	private IniSecurityManagerFactory factory;
-	private DefaultSecurityManager securityManager;
-	private ComponentContext context;
-	private ServiceRegistration<SecurityManager> reg;
-
-	protected void activate(ComponentContext context) {
-		this.context = context;
-		factory = new IniSecurityManagerFactory("classpath:shiro.ini");
-
-		securityManager = (DefaultSecurityManager) factory.getInstance();
-		SecurityUtils.setSecurityManager(securityManager);
-
-		reg = this.context.getBundleContext().registerService(
-				SecurityManager.class, securityManager, null);
-	}
-
-	@Reference(cardinality = ReferenceCardinality.MULTIPLE, unbind = "removeRealm")
-	protected void addRealm(Realm realm) {
-		List<Realm> realms = new ArrayList<Realm>(securityManager.getRealms());
-		realms.add(realm);
-		securityManager.setRealms(realms);
-	}
-
-	protected void removeRealm(Realm realm) {
-		// not supported by shiro
-	}
-
-	protected void deactivate() {
-		reg.unregister();
-		reg = null;
-
-		factory = null;
-		securityManager = null;
-	}
-}
diff --git a/org.eclipse.osbp.runtime.systemextension/.classpath b/org.eclipse.osbp.runtime.systemextension/.classpath
new file mode 100644
index 0000000..b9a5b1e
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f42de36
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.systemextension/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.classpath b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.gitignore b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
index 84d0800..bb651ef 100644
--- a/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.typeprovider.bundlespace/META-INF/MANIFEST.MF
@@ -2,12 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.osbp.runtime.typeprovider.bundlespace
 Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-SymbolicName: org.eclipse.osbp.runtime.typeprovider.bundlespace
 Bundle-Version: 0.9.0.qualifier
 Import-Package: org.osgi.framework;version="1.8.0",
  org.osgi.service.component.annotations;version="1.2.0",
  org.slf4j;version="1.7.2"
-Service-Component: OSGI-INF/org.eclipse.osbp.runtime.jsr303.validation.EventBroker.xml,
- OSGI-INF/org.eclipse.osbp.runtime.typeprovider.bundlespace.BundleSpaceTypeProviderService.xml
+Service-Component: OSGI-INF/*.xml
 Require-Bundle: org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.runtime.usernotification/.classpath b/org.eclipse.osbp.runtime.usernotification/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.runtime.usernotification/.gitignore b/org.eclipse.osbp.runtime.usernotification/.gitignore
new file mode 100644
index 0000000..e91d5c4
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/target/
+/target/
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.runtime.usernotification/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF b/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
index fb3a9c7..14cfd41 100644
--- a/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.runtime.usernotification/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.osbp.runtime.usernotification
 Bundle-Vendor: Eclipse OSBP
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-SymbolicName: org.eclipse.osbp.runtime.usernotification
 Bundle-Version: 0.9.0.qualifier
 Import-Package: org.osgi.framework;version="1.8.0",
diff --git a/pom.xml b/pom.xml
index 94d0e3d..6d91483 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,113 +7,120 @@
 <!--# http://www.eclipse.org/legal/epl-v10.html -->
 <!--# -->
 <!--# Contributors: -->
-<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--# 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>
+<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>
+	<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.runtime</groupId>
-    <artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
+	<groupId>org.eclipse.osbp.runtime</groupId>
+	<artifactId>org.eclipse.osbp.runtime.aggregator</artifactId>
 
-    <packaging>pom</packaging>
+	<packaging>pom</packaging>
 
-    <properties>
-        <osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
-    </properties>
+	<properties>
+		<osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+	</properties>
 
-    <modules>
-        <!-- Bundles -->
-        <module>org.eclipse.osbp.runtime.common</module>
-        <module>org.eclipse.osbp.runtime.eclipselink.core.fragment</module>
-        <module>org.eclipse.osbp.runtime.ecore.bundlespace</module>
-        <module>org.eclipse.osbp.runtime.emf</module>
-        <module>org.eclipse.osbp.runtime.event</module>
-        <module>org.eclipse.osbp.runtime.datasource.provider</module>
-        <module>org.eclipse.osbp.runtime.designer.api</module>
-        <module>org.eclipse.osbp.runtime.jsr303.validation</module>
-        <module>org.eclipse.osbp.runtime.logback.fragment</module>
-        <module>org.eclipse.osbp.runtime.memento</module>
-        <module>org.eclipse.osbp.runtime.systemextension</module>
-        <module>org.eclipse.osbp.runtime.typeprovider.bundlespace</module>
-        <module>org.eclipse.osbp.runtime.usernotification</module>
-        <module>org.eclipse.osbp.runtime.security</module>
-    
-        <!-- Features -->
-        <module>org.eclipse.osbp.runtime.feature.common</module>
-        <!-- <module>org.eclipse.osbp.runtime.feature.allinone</module> -->
-        <module>org.eclipse.osbp.runtime.feature.e4eventmanager</module>
-        <module>org.eclipse.osbp.runtime.feature.eclipselink.core.fragment</module>
-        <module>org.eclipse.osbp.runtime.feature.jsr303.validation</module>
-        <module>org.eclipse.osbp.runtime.feature.datasource.provider</module>
-        <module>org.eclipse.osbp.runtime.feature.typeprovider.bundlespace</module>
-        <module>org.eclipse.osbp.runtime.feature.ecore.bundlespace</module>
-        <!-- <module>org.eclipse.osbp.runtime.feature.allinone.testframework</module> -->
-        <module>org.eclipse.osbp.runtime.feature.resolverhooks</module>
-    </modules>
+	<modules>
+		<!-- Bundles -->
+		<module>org.eclipse.osbp.runtime.common</module>
+		<module>org.eclipse.osbp.runtime.eclipselink.core.fragment</module>
+		<module>org.eclipse.osbp.runtime.ecore.bundlespace</module>
+		<module>org.eclipse.osbp.runtime.emf</module>
+		<module>org.eclipse.osbp.runtime.event</module>
+		<module>org.eclipse.osbp.runtime.datasource.provider</module>
+		<module>org.eclipse.osbp.runtime.designer.api</module>
+		<module>org.eclipse.osbp.runtime.jsr303.validation</module>
+		<module>org.eclipse.osbp.runtime.logback.fragment</module>
+		<module>org.eclipse.osbp.runtime.memento</module>
+		<module>org.eclipse.osbp.runtime.systemextension</module>
+		<module>org.eclipse.osbp.runtime.typeprovider.bundlespace</module>
+		<module>org.eclipse.osbp.runtime.usernotification</module>
 
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <artifactId>maven-compiler-plugin</artifactId>
-                    <version>3.1</version>
-                    <configuration>
-                        <source>1.8</source>
-                        <target>1.8</target>
-                    </configuration>
-                </plugin>
-                <plugin>
-                    <groupId>org.eclipse.tycho</groupId>
-                    <artifactId>tycho-compiler-plugin</artifactId>
-                    <version>${tycho-version}</version>
-                    <configuration>
-                        <compilerVersion>1.8</compilerVersion>
-                        <encoding>UTF-8</encoding>
-                        <source>1.8</source>
-                        <target>1.8</target>
-                    </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>
+		<!-- Features -->
+		<module>org.eclipse.osbp.runtime.feature.common</module>
+		<!-- <module>org.eclipse.osbp.runtime.feature.allinone</module> -->
+		<module>org.eclipse.osbp.runtime.feature.e4eventmanager</module>
+		<module>org.eclipse.osbp.runtime.feature.eclipselink.core.fragment</module>
+		<module>org.eclipse.osbp.runtime.feature.jsr303.validation</module>
+		<module>org.eclipse.osbp.runtime.feature.datasource.provider</module>
+		<module>org.eclipse.osbp.runtime.feature.typeprovider.bundlespace</module>
+		<module>org.eclipse.osbp.runtime.feature.ecore.bundlespace</module>
+		<!-- <module>org.eclipse.osbp.runtime.feature.allinone.testframework</module> -->
+		<module>org.eclipse.osbp.runtime.feature.resolverhooks</module>
+	</modules>
+
+	<repositories>
+		<repository>
+			<id>osbp-nexus-thirdparty</id>
+			<url>http://download.osbee.org:8086/nexus/content/repositories/osbee-thirdparty/</url>
+		</repository>
+	</repositories>
+
+	<build>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<artifactId>maven-compiler-plugin</artifactId>
+					<version>3.1</version>
+					<configuration>
+						<source>1.8</source>
+						<target>1.8</target>
+					</configuration>
+				</plugin>
+				<plugin>
+					<groupId>org.eclipse.tycho</groupId>
+					<artifactId>tycho-compiler-plugin</artifactId>
+					<version>${tycho-version}</version>
+					<configuration>
+						<compilerVersion>1.8</compilerVersion>
+						<encoding>UTF-8</encoding>
+						<source>1.8</source>
+						<target>1.8</target>
+					</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>