adjusted legal info, refactoring
diff --git a/.artifactVersions b/.artifactVersions
deleted file mode 100644
index 9a17bde..0000000
--- a/.artifactVersions
+++ /dev/null
@@ -1,4 +0,0 @@
-version=0.9.1-SNAPSHOT
-relengVersion=0.12.5-SNAPSHOT
-relengP2Version=0.12.5-SNAPSHOT
-relengGroupId=org.lunifera.releng.maven
\ No newline at end of file
diff --git a/.depVersions b/.depVersions
deleted file mode 100644
index 90b0f6b..0000000
--- a/.depVersions
+++ /dev/null
@@ -1,14 +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.dependencies.feature.assert-utilities;min=1.2.2.2;max=1.2.3
-org.lunifera.dependencies.feature.jetty.websockets;min=8.1.15;max=8.1.16
-org.lunifera.dependencies.feature.atmosphere;min=2.1.2.vaadin6;max=2.1.3
-org.lunifera.dependencies.feature.transaction;min=0.3.1;max=0.3.2
-org.lunifera.dependencies.feature.vaadin;min=7.3.8;max=7.3.9
-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
-com.vaadin.external.atmosphere.runtime;min=2.1.2;max=2.1.3
-com.vaadin.external.org.slf4j;min=1.6.1;max=1.6.2
-com.vaadin;min=7.3.8;max=7.3.9
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 3260e4f..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,204 +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.
-
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index 1be5eda..eaba82a 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -18,6 +18,7 @@
 	<!-- DO NOT EDIT BELOW THIS LINE -->
         <jenkins.build.dependencies>
                 <jenkins.build.dependency>org.eclipse.osbp.authentication</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.bpm.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ecview.addons</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ecview.core</jenkins.build.dependency>
diff --git a/org.eclipse.osbp.vaaclipse.addons.app/META-INF/MANIFEST.MF b/org.eclipse.osbp.vaaclipse.addons.app/META-INF/MANIFEST.MF
index 5766330..c3b2e24 100644
--- a/org.eclipse.osbp.vaaclipse.addons.app/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.vaaclipse.addons.app/META-INF/MANIFEST.MF
@@ -34,7 +34,8 @@
  org.jsoup;bundle-version="1.7.2",
  org.slf4j.api;bundle-version="1.7.2",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ui.api;bundle-version="0.9.0"
+ org.eclipse.osbp.ui.api;bundle-version="0.9.0",
+ org.eclipse.osbp.bpm.api;bundle-version="0.9.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.osbp.vaaclipse.addons.app;x-internal:=true;version="0.9.0",
diff --git a/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/VaadinE4Application.java b/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/VaadinE4Application.java
index 2b91cb4..0d79590 100644
--- a/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/VaadinE4Application.java
+++ b/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/VaadinE4Application.java
@@ -46,7 +46,6 @@
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.http.HttpService;
-import org.slf4j.LoggerFactory;
 
 import com.vaadin.ui.themes.Reindeer;
 
@@ -314,7 +313,7 @@
 			appHeaderIcon = "platform:/plugin/com.vaadin.themes/VAADIN/themes/reindeer/favicon.ico";
 
 		appAuthProvider = readClassProperty("applicationAuthenticationProvider");
-
+		
 		String productionMode = appContext
 				.getBrandingProperty("vaadin.productionMode");
 		String disableXsrfProtection = appContext
@@ -324,7 +323,7 @@
 		if ("true".equals(disableXsrfProtection)) {
 			System.out.println("Warning: XSRF protection is OFF!");
 		}
-
+		
 		final BundleContext bundleContext = Activator.getDefault().getBundle()
 				.getBundleContext();
 		ServiceReference<?> httpServiceRef = bundleContext
diff --git a/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/webapp/VaadinUI.java b/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/webapp/VaadinUI.java
index 71156e2..369cba4 100644
--- a/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/webapp/VaadinUI.java
+++ b/org.eclipse.osbp.vaaclipse.addons.app/src/org/eclipse/osbp/vaaclipse/addons/app/webapp/VaadinUI.java
@@ -18,18 +18,18 @@
 import java.lang.management.RuntimeMXBean;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.Hashtable;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.UUID;
 
 import javax.servlet.http.HttpSession;
 
-import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IExtensionRegistry;
 import org.eclipse.core.runtime.RegistryFactory;
 import org.eclipse.e4.core.contexts.ContextInjectionFactory;
@@ -37,6 +37,7 @@
 import org.eclipse.e4.core.di.extensions.EventUtils;
 import org.eclipse.e4.core.services.contributions.IContributionFactory;
 import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.core.services.log.Logger;
 import org.eclipse.e4.core.services.translation.TranslationProviderFactory;
 import org.eclipse.e4.core.services.translation.TranslationService;
 import org.eclipse.e4.ui.di.UISynchronize;
@@ -53,11 +54,14 @@
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationFactory;
 import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationFactoryImpl;
 import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.MElementContainer;
 import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
 import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl;
 import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
@@ -79,8 +83,10 @@
 import org.eclipse.osbp.runtime.common.session.ISession;
 import org.eclipse.osbp.runtime.common.session.ISessionProvider;
 import org.eclipse.osbp.runtime.web.vaadin.databinding.VaadinObservables;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider;
 import org.eclipse.osbp.ui.api.user.IUser;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.vaaclipse.addons.app.VaadinE4Application;
 import org.eclipse.osbp.vaaclipse.addons.app.converter.VaaclipseConverterFactory;
 import org.eclipse.osbp.vaaclipse.addons.app.servlet.VaadinExecutorServiceImpl;
@@ -88,10 +94,12 @@
 import org.eclipse.osbp.vaaclipse.addons.common.api.resource.ICustomizedModelResourceHandler;
 import org.eclipse.osbp.vaaclipse.addons.common.api.resource.ISystemuserModelHandler;
 import org.eclipse.osbp.vaaclipse.addons.common.resource.LayoutChangedObserver;
+import org.eclipse.osbp.vaaclipse.addons.common.resource.VaaclipseModelAssembler;
 import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.vaaclipse.publicapi.authentication.AuthenticationConstants;
 import org.eclipse.osbp.vaaclipse.publicapi.debug.IOwningWorkspaceAccess;
 import org.eclipse.osbp.vaaclipse.publicapi.events.IWidgetModelAssociations;
+import org.eclipse.osbp.vaaclipse.publicapi.model.Tags;
 import org.eclipse.osbp.vaaclipse.publicapi.theme.Theme;
 import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeConstants;
 import org.eclipse.osbp.vaaclipse.publicapi.theme.ThemeManager;
@@ -109,7 +117,6 @@
 import com.vaadin.ui.UI;
 import com.vaadin.ui.UIDetachedException;
 import com.vaadin.ui.VerticalLayout;
-import org.eclipse.e4.core.services.log.Logger;
 
 /**
  * The Class VaadinUI.
@@ -185,18 +192,18 @@
 	/** The temp user store. */
 	private static Map<String, Object[]> tempUserStore = new HashMap<String, Object[]>();
 
-	private static List<String> addOns = new ArrayList<String>() {
+	private static Map<String, String> addOns = new LinkedHashMap<String, String>() {
 		private static final long serialVersionUID = 1L;
 		{
-			add("bundleclass://org.eclipse.osbp.vaaclipse.addons.softwarefactory/org.eclipse.osbp.vaaclipse.addons.softwarefactory.service.OSBPServiceAddon");
-			add("bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon");
-			add("bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon");
-			add("bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon");
-			add("bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon");
-			add("bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon");
-			add("bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon");
-			add("bundleclass://org.eclipse.osbp.vaaclipse.emf.addon/org.eclipse.osbp.vaaclipse.addon.EMFAddon");
-			add("bundleclass://org.eclipse.osbp.vaaclipse.addons.keybinding/org.eclipse.osbp.vaaclipse.addons.keybinding.KeyBindingServiceAddon");
+			put("OSBPServiceAddon", "bundleclass://org.eclipse.osbp.vaaclipse.addons.softwarefactory/org.eclipse.osbp.vaaclipse.addons.softwarefactory.service.OSBPServiceAddon");
+			put("CommandServiceAddon", "bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon");
+			put("ContextServiceAddon", "bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon");
+			put("BindingServiceAddon", "bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon");
+			put("CommandProcessingAddon", "bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon");
+			put("HandlerProcessingAddon", "bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon");
+			put("ContextProcessingAddon", "bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon");
+			put("EMFAddon", "bundleclass://org.eclipse.osbp.vaaclipse.emf.addon/org.eclipse.osbp.vaaclipse.addon.EMFAddon");
+			put("KeyBindingServiceAddon", "bundleclass://org.eclipse.osbp.vaaclipse.addons.keybinding/org.eclipse.osbp.vaaclipse.addons.keybinding.KeyBindingServiceAddon");
 		}
 	};
 
@@ -337,9 +344,12 @@
 						// if there is a default perspective set in user_account
 						// - load it
 						IPerspectiveProvider perspectiveProvider = appContext.get(IPerspectiveProvider.class);
-						String perspectiveId = user.getPerspective();
-						if (perspectiveId != null && !perspectiveId.isEmpty()) {
-							perspectiveProvider.openPerspective(perspectiveId);
+						IDSLMetadataService dslMetadataService = appContext.get(IDSLMetadataService.class);
+						IUserAccessService userAccessService = appContext.get(IUserAccessService.class);
+						if (user.getPerspective() != null && 
+								!user.getPerspective().isEmpty() && 
+								dslMetadataService.isPerspectiveAuthorized(user.getPerspective(), userAccessService)) {
+							perspectiveProvider.openPerspective(user.getPerspective());
 						}
 					}
 				}
@@ -554,10 +564,10 @@
 		// }
 
 		// Create pre-defined addOns and discard the model
-		for (String contributionUri : addOns) {
+		for (Entry<String, String> contribution : addOns.entrySet()) {
 			MAddon addon = MApplicationFactory.INSTANCE.createAddon();
-			addon.setContributionURI(contributionUri);
-			addon.setElementId(UUID.randomUUID().toString());
+			addon.setContributionURI(contribution.getValue());
+			addon.setElementId(contribution.getKey());
 			Object obj = factory.create(addon.getContributionURI(), appContext);
 			addon.setObject(obj);
 		}
@@ -635,7 +645,6 @@
 	@SuppressWarnings({ "unused", "deprecation" })
 	private MApplication loadApplicationModel(IApplicationContext appContext, IEclipseContext eclipseContext) {
 		logger.debug("VaadinE4Application.loadApplicationModel()");
-		MApplication theApp = null;
 
 		RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
 		List<String> arguments = runtimeMxBean.getInputArguments();
@@ -646,11 +655,12 @@
 
 		instanceLocation = VaadinE4Application.getInstance().getInstanceLocation();
 
-		String appModelPath = getArgValue(E4Workbench.XMI_URI_ARG, appContext, false);
-		Assert.isNotNull(appModelPath, E4Workbench.XMI_URI_ARG + " argument missing"); //$NON-NLS-1$
-		final URI initialWorkbenchDefinitionInstance = URI.createPlatformPluginURI(appModelPath, true);
+//		String appModelPath = getArgValue(E4Workbench.XMI_URI_ARG, appContext, false);
+//		Assert.isNotNull(appModelPath, E4Workbench.XMI_URI_ARG + " argument missing"); //$NON-NLS-1$
+//		final URI initialWorkbenchDefinitionInstance = URI.createPlatformPluginURI(appModelPath, true);
 
-		eclipseContext.set(E4Workbench.INITIAL_WORKBENCH_MODEL_URI, initialWorkbenchDefinitionInstance);
+//		eclipseContext.set(E4Workbench.INITIAL_WORKBENCH_MODEL_URI, initialWorkbenchDefinitionInstance);
+		eclipseContext.set(E4Workbench.INITIAL_WORKBENCH_MODEL_URI, null);
 		eclipseContext.set(E4Workbench.INSTANCE_LOCATION, instanceLocation);
 
 		// in debug mode, this value may be used to access the launching
@@ -684,10 +694,10 @@
 
 		registerResourceSet(eclipseContext);
 
-		IContributionFactory factory = eclipseContext.get(IContributionFactory.class);
+		IContributionFactory contributionFactory = eclipseContext.get(IContributionFactory.class);
 
 		// create the customized model service
-		ISystemuserModelHandler service = (ISystemuserModelHandler) factory.create(CUSTOMIZED_MODEL_SERVICE,
+		ISystemuserModelHandler service = (ISystemuserModelHandler) contributionFactory.create(CUSTOMIZED_MODEL_SERVICE,
 				eclipseContext);
 		eclipseContext.set(ISystemuserModelHandler.class, service);
 
@@ -697,13 +707,28 @@
 			resourceHandler = DEFAULT_RESOURCE_HANDLER;
 		}
 
-		modelResourceHandler = (ICustomizedModelResourceHandler) factory.create(resourceHandler, eclipseContext);
+		modelResourceHandler = (ICustomizedModelResourceHandler) contributionFactory.create(resourceHandler, eclipseContext);
 		eclipseContext.set(IModelResourceHandler.class, modelResourceHandler);
 		eclipseContext.set(ICustomizedModelResourceHandler.class, modelResourceHandler);
 
-		Resource resource = modelResourceHandler.loadMostRecentModel();
-		theApp = (MApplication) resource.getContents().get(0);
-
+//		Resource resource = modelResourceHandler.loadMostRecentModel();
+//		if(resource != null) {
+//			return (MApplication) resource.getContents().get(0);
+//		}
+		// no resource found - create a default 
+		eclipseContext.set(E4Workbench.NO_SAVED_MODEL_FOUND, Boolean.TRUE);
+		MApplication theApp =  ApplicationFactoryImpl.eINSTANCE.createApplication();
+		theApp.setElementId(appContext.getBrandingName());
+		MTrimmedWindow trimmedWindow = BasicFactoryImpl.eINSTANCE.createTrimmedWindow();
+		trimmedWindow.setToBeRendered(true);
+		trimmedWindow.setVisible(true);
+		trimmedWindow.getTags().add(Tags.MAIN_WINDOW);
+		trimmedWindow.setLabel(appContext.getBrandingName());
+		theApp.getChildren().add(trimmedWindow);
+		eclipseContext.set(MApplication.class, theApp);
+		VaaclipseModelAssembler contribProcessor = ContextInjectionFactory
+				.make(VaaclipseModelAssembler.class, eclipseContext);
+		contribProcessor.processModel(true);
 		return theApp;
 	}
 
diff --git a/org.eclipse.osbp.vaaclipse.addons.feature/feature.xml b/org.eclipse.osbp.vaaclipse.addons.feature/feature.xml
index f208a20..8c99074 100644
--- a/org.eclipse.osbp.vaaclipse.addons.feature/feature.xml
+++ b/org.eclipse.osbp.vaaclipse.addons.feature/feature.xml
@@ -16,7 +16,8 @@
         id="org.eclipse.osbp.vaaclipse.addons.feature"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.license">
         
     <description>
         %description