[Bug 305586] -  [Model] Model tweaking round 3
* merging back changes to head
diff --git a/bundles/org.eclipse.e4.tools.emf.editor/Application.e4xmi b/bundles/org.eclipse.e4.tools.emf.editor/Application.e4xmi
index 4ec1e27..8ce4ad3 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor/Application.e4xmi
+++ b/bundles/org.eclipse.e4.tools.emf.editor/Application.e4xmi
@@ -1,40 +1,40 @@
 <?xml version="1.0" encoding="ASCII"?>
-<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2008/UIModel" xmi:id="__i2BcSuZEd-8CvvcO22KcQ" id="org.eclipse.e4.ide.application">
-  <children xsi:type="application:Window" xmi:id="__i8IECuZEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.windows.mainwindow" label="E4 Model Editor" width="800" height="600">
-    <children xsi:type="application:PartStack" xmi:id="__i99QCuZEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.mainwindow.editorstack">
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_oq6MwEY6Ed-3Rue18XuTew" elementId="org.eclipse.e4.ide.application">
+  <children xsi:type="basic:TrimmedWindow" xmi:id="_Z-NzMUjJEd-FKq59UN1_HA" elementId="_Z-NzMUjJEd-FKq59UN1_HA" width="800" height="600">
+    <children xsi:type="basic:PartStack" xmi:id="_gkgxwEjJEd-FKq59UN1_HA" elementId="org.eclipse.e4.tools.emf.editor.mainwindow.editorstack">
       <tags>newtablook</tags>
     </children>
-    <children xsi:type="application:WindowTrim" xmi:id="__i_ycCuZEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.mainwindow.trims.top">
-      <children xsi:type="application:ToolBar" xmi:id="__jAZgCuZEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.mainwindow.trims.top.toolbars.main">
-        <children xsi:type="application:HandledToolItem" xmi:id="__jBnoCuZEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.mainwindow.trims.top.toolbars.main.items.openxmi" label="" iconURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/folder_page.png" tooltip="Open XMI File" command="__jFSACuZEd-8CvvcO22KcQ"/>
-        <children xsi:type="application:HandledToolItem" xmi:id="_4DGF0CuuEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.mainwindow.trims.top.toolbars.main.items.savexmi" iconURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/disk.png" tooltip="Save XMI" command="_sSBrgCuuEd-8CvvcO22KcQ"/>
-      </children>
-    </children>
-    <mainMenu xmi:id="__jCOsCuZEd-8CvvcO22KcQ" id="__jCOsCuZEd-8CvvcO22KcQ">
-      <children xsi:type="application:MenuItem" xmi:id="__jC1wCuZEd-8CvvcO22KcQ" id="e4.modeleditor.menu.file" label="File">
-        <children xsi:type="application:MenuItem" xmi:id="_Y6zcYC1UEd-7-u-s9onsPg" id="_Y6zcYC1UEd-7-u-s9onsPg" label="New">
-          <children xsi:type="application:HandledMenuItem" xmi:id="_XhEM0C1VEd-7-u-s9onsPg" id="_XhEM0C1VEd-7-u-s9onsPg" label="Application Model" command="_yPmhcC1UEd-7-u-s9onsPg"/>
-          <children xsi:type="application:HandledMenuItem" xmi:id="_bFadUC1VEd-7-u-s9onsPg" id="_bFadUC1VEd-7-u-s9onsPg" label="Model Contribution" command="_HHdhIC1VEd-7-u-s9onsPg"/>
+    <mainMenu xmi:id="_LqyFoEjQEd-XR9_8rlW1bQ" elementId="e4.modeleditor.menu.file">
+      <children xsi:type="menu:Menu" xmi:id="_cURncEjQEd-XR9_8rlW1bQ" elementId="e4.modeleditor.menu.file" label="File">
+        <children xsi:type="menu:Menu" xmi:id="_mRNKoEjQEd-XR9_8rlW1bQ" elementId="_mRNKoEjQEd-XR9_8rlW1bQ" label="New">
+          <children xsi:type="menu:HandledMenuItem" xmi:id="_pdLXYEjQEd-XR9_8rlW1bQ" elementId="_pdLXYEjQEd-XR9_8rlW1bQ" label="Application Model" command="_OI-FgEZCEd-3Rue18XuTew"/>
+          <children xsi:type="menu:HandledMenuItem" xmi:id="_z0xdUEjQEd-XR9_8rlW1bQ" elementId="_z0xdUEjQEd-XR9_8rlW1bQ" label="Model Contribution" command="_OcpPcEZCEd-3Rue18XuTew"/>
         </children>
-        <children xsi:type="application:HandledMenuItem" xmi:id="__jDc0CuZEd-8CvvcO22KcQ" id="__jDc0CuZEd-8CvvcO22KcQ" label="Open XMI ..." iconURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/folder_page.png" command="__jFSACuZEd-8CvvcO22KcQ"/>
-        <children xsi:type="application:HandledMenuItem" xmi:id="_0xNeUCuuEd-8CvvcO22KcQ" id="_0xNeUCuuEd-8CvvcO22KcQ" label="Save" command="_sSBrgCuuEd-8CvvcO22KcQ"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_5agWwEjQEd-XR9_8rlW1bQ" elementId="_5agWwEjQEd-XR9_8rlW1bQ" label="Open XMI ..." iconURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/folder_page.png"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_ATY6IEjREd-XR9_8rlW1bQ" elementId="_ATY6IEjREd-XR9_8rlW1bQ" label="Save"/>
       </children>
     </mainMenu>
+    <trimBars xmi:id="_5UAKUUjJEd-Y_4Sy4ZiGUQ" elementId="_5UAKUUjJEd-Y_4Sy4ZiGUQ">
+      <children xsi:type="menu:ToolBar" xmi:id="_8DUQQEjJEd-Y_4Sy4ZiGUQ" elementId="_8DUQQEjJEd-Y_4Sy4ZiGUQ">
+        <children xsi:type="menu:HandledToolItem" xmi:id="_GTv-QEjKEd-Y_4Sy4ZiGUQ" elementId="org.eclipse.e4.tools.emf.editor.mainwindow.trims.top.toolbars.main.items.openxmi" iconURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/folder_page.png" tooltip="Open XMI File" command="_Hx2ycEZCEd-3Rue18XuTew"/>
+        <children xsi:type="menu:HandledToolItem" xmi:id="_G1D7kEjKEd-Y_4Sy4ZiGUQ" elementId="org.eclipse.e4.tools.emf.editor.mainwindow.trims.top.toolbars.main.items.savexmi" iconURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/disk.png" tooltip="Save XMI" command="_NyiigEZCEd-3Rue18XuTew"/>
+      </children>
+    </trimBars>
   </children>
-  <handlers xmi:id="__jED4CuZEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.handlers.openxmi" URI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.OpenModelFileHandler" command="__jFSACuZEd-8CvvcO22KcQ"/>
-  <handlers xmi:id="_xOkeACuuEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.handlers.savexmi" URI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.SaveModelFileHandler" command="_sSBrgCuuEd-8CvvcO22KcQ"/>
-  <handlers xmi:id="_wgmB8C1UEd-7-u-s9onsPg" id="org.eclipse.e4.tools.emf.editor.handlers.newappmodel" URI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.NewApplicationModelHandler" command="_yPmhcC1UEd-7-u-s9onsPg"/>
-  <handlers xmi:id="_KustkC1VEd-7-u-s9onsPg" id="org.eclipse.e4.tools.emf.editor.handlers.newcontribmodel" URI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.NewModelContributionHandler" command="_HHdhIC1VEd-7-u-s9onsPg"/>
-  <bindingTables xmi:id="org.eclipse.ui.bindingtables.dialogAndWindow" id="org.eclipse.ui.bindingtables.dialogAndWindow" bindingContextId="org.eclipse.ui.contexts.dialogAndWindow">
-    <bindings xmi:id="_HFjLcDBcEd-5Aa2iOaoSpQ" keySequence="M1+S" id="_HFjLcDBcEd-5Aa2iOaoSpQ" command="_sSBrgCuuEd-8CvvcO22KcQ"/>
+  <handlers xmi:id="_Jp-AEEZBEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.handlers.openxmi" contributionURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.OpenModelFileHandler" command="_Hx2ycEZCEd-3Rue18XuTew"/>
+  <handlers xmi:id="_OTM1AEZBEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.handlers.savexmi" contributionURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.SaveModelFileHandler" command="_NyiigEZCEd-3Rue18XuTew"/>
+  <handlers xmi:id="_Owa8gEZBEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.handlers.newappmodel" contributionURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.NewApplicationModelHandler" command="_OI-FgEZCEd-3Rue18XuTew"/>
+  <handlers xmi:id="_PhoXAEZBEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.handlers.newcontribmodel" contributionURI="platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.NewModelContributionHandler" command="_OcpPcEZCEd-3Rue18XuTew"/>
+  <bindingTables xmi:id="_a8i7IEZBEd-3Rue18XuTew" elementId="org.eclipse.ui.bindingtables.dialogAndWindow" bindingContextId="org.eclipse.ui.contexts.dialogAndWindow">
+    <bindings xmi:id="_pTpjkEZBEd-3Rue18XuTew" keySequence="M1+S" elementId="_pTpjkEZBEd-3Rue18XuTew"/>
   </bindingTables>
-  <rootContext xmi:id="_SeXUHO8EEd6FC9cDb6iV7y" id="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
-    <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7w" id="org.eclipse.ui.contexts.window" name="In Windows"/>
-    <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" id="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+  <rootContext xmi:id="_uvPCgEZBEd-3Rue18XuTew" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows" description="">
+    <children xmi:id="_1GFP0EZBEd-3Rue18XuTew" elementId="org.eclipse.ui.contexts.window" name="In Windows" description=""/>
+    <children xmi:id="_9_03sEZBEd-3Rue18XuTew" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs" description=""/>
   </rootContext>
   <bindingContexts>org.eclipse.ui.contexts.dialogAndWindow</bindingContexts>
-  <commands xmi:id="__jFSACuZEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.commands.openxmi" commandName="e4editor.openxmi" description="Open an XMI File"/>
-  <commands xmi:id="_sSBrgCuuEd-8CvvcO22KcQ" id="org.eclipse.e4.tools.emf.editor.commands.savexmi" commandName="e4editor.savexmi"/>
-  <commands xmi:id="_yPmhcC1UEd-7-u-s9onsPg" id="org.eclipse.e4.tools.emf.editor.commands.newappmodel" commandName="e4editor.newappmodel"/>
-  <commands xmi:id="_HHdhIC1VEd-7-u-s9onsPg" id="org.eclipse.e4.tools.emf.editor.commands.newcontribmodel" commandName="e4editor.newcontribmodel"/>
+  <commands xmi:id="_Hx2ycEZCEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.commands.openxmi" commandName="e4editor.openxmi"/>
+  <commands xmi:id="_NyiigEZCEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.commands.savexmi" commandName="e4editor.savexmi"/>
+  <commands xmi:id="_OI-FgEZCEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.commands.newappmodel" commandName="e4editor.newappmodel"/>
+  <commands xmi:id="_OcpPcEZCEd-3Rue18XuTew" elementId="org.eclipse.e4.tools.emf.editor.commands.newcontribmodel" commandName="e4editor.newcontribmodel"/>
 </application:Application>
diff --git a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewApplicationModelHandler.java b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewApplicationModelHandler.java
index dbac892..59a762f 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewApplicationModelHandler.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewApplicationModelHandler.java
@@ -17,8 +17,9 @@
 
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MInputPart;
-import org.eclipse.e4.ui.model.application.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.workbench.modeling.EModelService;
 import org.eclipse.e4.workbench.ui.internal.E4XMIResource;
@@ -39,16 +40,16 @@
 			
 			try {
 				E4XMIResource resource = new E4XMIResource();
-				resource.getContents().add((EObject) MApplicationFactory.eINSTANCE.createApplication());
+				resource.getContents().add((EObject) MApplicationFactory.INSTANCE.createApplication());
 				resource.setURI(URI.createFileURI(file));
 				resource.save(null);
 				
 				MPartStack stack = (MPartStack) modelService.find("modeleditorstack", application);
 				
-				MInputPart part = MApplicationFactory.eINSTANCE.createInputPart();
+				MInputPart part = MBasicFactory.INSTANCE.createInputPart();
 				part.setLabel(name);
 				part.setTooltip(file);
-				part.setURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.XMIFileEditor");
+				part.setContributionURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.XMIFileEditor");
 				part.setIconURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/application_view_tile.png");
 				part.setInputURI(filePath);
 				
diff --git a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewModelContributionHandler.java b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewModelContributionHandler.java
index 1342a4a..d4f3e74 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewModelContributionHandler.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/NewModelContributionHandler.java
@@ -6,8 +6,9 @@
 
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MInputPart;
-import org.eclipse.e4.ui.model.application.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.workbench.modeling.EModelService;
 import org.eclipse.e4.workbench.ui.internal.E4XMIResource;
@@ -27,7 +28,7 @@
 			
 			try {
 				E4XMIResource resource = new E4XMIResource();
-				resource.getContents().add((EObject) MApplicationFactory.eINSTANCE.createModelComponents());
+				resource.getContents().add((EObject) MApplicationFactory.INSTANCE.createModelComponents());
 				resource.setURI(URI.createFileURI(file));
 				resource.save(null);
 				
@@ -35,10 +36,10 @@
 				
 				MPartStack stack = (MPartStack) modelService.find("modeleditorstack", application);
 				
-				MInputPart part = MApplicationFactory.eINSTANCE.createInputPart();
+				MInputPart part = MBasicFactory.INSTANCE.createInputPart();
 				part.setLabel(name);
 				part.setTooltip(file);
-				part.setURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.XMIFileEditor");
+				part.setContributionURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.XMIFileEditor");
 				part.setIconURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/application_view_tile.png");
 				part.setInputURI(filePath);
 				
diff --git a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/OpenModelFileHandler.java b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/OpenModelFileHandler.java
index 46303bb..f8692bb 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/OpenModelFileHandler.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/OpenModelFileHandler.java
@@ -15,9 +15,9 @@
 import javax.inject.Named;
 
 import org.eclipse.e4.ui.model.application.MApplication;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MInputPart;
-import org.eclipse.e4.ui.model.application.MPartStack;
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.workbench.modeling.EModelService;
 import org.eclipse.e4.workbench.modeling.EPartService;
@@ -38,10 +38,10 @@
 				MPartStack stack = (MPartStack) modelService.find("org.eclipse.e4.tools.emf.editor.mainwindow.editorstack", application);
 				
 				try {
-					MInputPart part = MApplicationFactory.eINSTANCE.createInputPart();
+					MInputPart part = MBasicFactory.INSTANCE.createInputPart();
 					part.setLabel(name);
 					part.setTooltip(file);
-					part.setURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.XMIFileEditor");
+					part.setContributionURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/org.eclipse.e4.tools.emf.editor.XMIFileEditor");
 					part.setIconURI("platform:/plugin/org.eclipse.e4.tools.emf.editor/icons/full/application_view_tile.png");
 					part.setInputURI(filePath);
 					
diff --git a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/SaveModelFileHandler.java b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/SaveModelFileHandler.java
index a364c25..5b9ffa2 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/SaveModelFileHandler.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/SaveModelFileHandler.java
@@ -12,7 +12,7 @@
 
 import javax.inject.Named;
 
-import org.eclipse.e4.ui.model.application.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.workbench.modeling.EPartService;
 
diff --git a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/XMIFileEditor.java b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/XMIFileEditor.java
index 82334db..21c67d3 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/XMIFileEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.editor/src/org/eclipse/e4/tools/emf/editor/XMIFileEditor.java
@@ -17,7 +17,7 @@
 import org.eclipse.e4.core.di.annotations.Optional;
 import org.eclipse.e4.tools.emf.ui.common.IModelResource.ModelListener;
 import org.eclipse.e4.tools.emf.ui.internal.wbm.ApplicationModelEditor;
-import org.eclipse.e4.ui.model.application.MInputPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MInputPart;
 import org.eclipse.swt.widgets.Composite;
 
 @SuppressWarnings("restriction")
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/icons/full/obj16/plugin.png b/bundles/org.eclipse.e4.tools.emf.editor3x/icons/full/obj16/plugin.png
new file mode 100644
index 0000000..6187b15
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/icons/full/obj16/plugin.png
Binary files differ
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/plugin.xml b/bundles/org.eclipse.e4.tools.emf.editor3x/plugin.xml
index 72a929d..8a4c94c 100644
--- a/bundles/org.eclipse.e4.tools.emf.editor3x/plugin.xml
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/plugin.xml
@@ -12,5 +12,31 @@
             name="e4 Workbenchmodel Editor">
       </editor>
    </extension>
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <wizard
+            canFinishEarly="false"
+            category="org.eclipse.e4"
+            class="org.eclipse.e4.tools.emf.editor3x.wizard.NewApplicationModelWizard"
+            hasPages="true"
+            icon="icons/full/obj16/application_view_tile.png"
+            id="org.eclipse.e4.tools.emf.editor3x.newappmodel"
+            name="New Application Model">
+      </wizard>
+ 
+      <wizard
+            canFinishEarly="false"
+            category="org.eclipse.e4"
+            class="org.eclipse.e4.tools.emf.editor3x.wizard.NewContributionModelWizard"
+            hasPages="true"
+            icon="icons/full/obj16/plugin.png"
+            id="org.eclipse.e4.tools.emf.editor3x.newmodelcontribution"
+            name="New Contribution Model">
+      </wizard>
+      <category
+            id="org.eclipse.e4"
+            name="e4">
+      </category>
+      </extension>
 
 </plugin>
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/BaseApplicationModelWizard.java b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/BaseApplicationModelWizard.java
new file mode 100644
index 0000000..b8bc38a
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/BaseApplicationModelWizard.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.editor3x.wizard;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.*;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.ui.*;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+public abstract class BaseApplicationModelWizard extends Wizard implements INewWizard {
+	private NewModelFilePage page;
+	private ISelection selection;
+	
+	protected IWorkbench workbench;
+
+	/**
+	 * Constructor for NewApplicationModelWizard.
+	 */
+	public BaseApplicationModelWizard() {
+		super();
+		setNeedsProgressMonitor(true);
+	}
+
+	/**
+	 * Adding the page to the wizard.
+	 */
+
+	public void addPages() {
+		page = new NewModelFilePage(selection,getDefaultFileName());
+		addPage(page);
+	}
+
+	public abstract String getDefaultFileName();
+	
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							throw new RuntimeException(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), "Could not init editor", exception.getMessage()); //$NON-NLS-1$
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			MessageDialog.openError(getShell(), "Error", exception.getMessage());
+			return false;
+		}
+	}
+	
+	protected abstract EObject createInitialModel();
+
+	private IFile getModelFile() throws CoreException {
+		String containerName = page.getContainerName();
+		String fileName = page.getFileName();
+		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+		IResource resource = root.findMember(new Path(containerName));
+		if (!resource.exists() || !(resource instanceof IContainer)) {
+			throwCoreException("Container \"" + containerName
+					+ "\" does not exist.");
+		}
+		IContainer container = (IContainer) resource;
+		return container.getFile(new Path(fileName));
+	}
+	
+	private void throwCoreException(String message) throws CoreException {
+		IStatus status = new Status(IStatus.ERROR,
+				"org.eclipse.e4.tools.emf.editor3x", IStatus.OK, message, null);
+		throw new CoreException(status);
+	}
+
+	/**
+	 * We will accept the selection in the workbench to see if we can initialize
+	 * from it.
+	 * 
+	 * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewApplicationModelWizard.java b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewApplicationModelWizard.java
new file mode 100644
index 0000000..ed161a7
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewApplicationModelWizard.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.editor3x.wizard;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.emf.ecore.EObject;
+
+
+public class NewApplicationModelWizard extends BaseApplicationModelWizard {
+
+	@Override
+	public String getDefaultFileName() {
+		return "Application.e4xmi";
+	}
+	
+	protected EObject createInitialModel() {
+		return (EObject) MApplicationFactory.INSTANCE.createApplication();
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewContributionModelWizard.java b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewContributionModelWizard.java
new file mode 100644
index 0000000..00706fd
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewContributionModelWizard.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.editor3x.wizard;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.emf.ecore.EObject;
+
+
+public class NewContributionModelWizard extends BaseApplicationModelWizard {
+
+	@Override
+	public String getDefaultFileName() {
+		return "components.e4xmi";
+	}
+	
+	protected EObject createInitialModel() {
+		return (EObject) MApplicationFactory.INSTANCE.createModelComponents();
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewModelFilePage.java b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewModelFilePage.java
new file mode 100644
index 0000000..2f60c2d
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.editor3x/src/org/eclipse/e4/tools/emf/editor3x/wizard/NewModelFilePage.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.editor3x.wizard;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.ContainerSelectionDialog;
+
+/**
+ * The "New" wizard page allows setting the container for the new file as well
+ * as the file name. The page will only accept file name without the extension
+ * OR with the extension that matches the expected one (e4xmi).
+ */
+
+public class NewModelFilePage extends WizardPage {
+	private Text containerText;
+
+	private Text fileText;
+
+	private ISelection selection;
+	
+	private String defaultFilename;
+
+	/**
+	 * Constructor for SampleNewWizardPage.
+	 * 
+	 * @param pageName
+	 */
+	public NewModelFilePage(ISelection selection, String defaultFilename) {
+		super("wizardPage");
+		setTitle("Multi-page Editor File");
+		setDescription("This wizard creates a new file with *.e4xmi extension that can be opened by a multi-page editor.");
+		this.selection = selection;
+		this.defaultFilename = defaultFilename;
+	}
+
+	/**
+	 * @see IDialogPage#createControl(Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		container.setLayout(layout);
+		layout.numColumns = 3;
+		layout.verticalSpacing = 9;
+		Label label = new Label(container, SWT.NULL);
+		label.setText("&Container:");
+
+		containerText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		containerText.setLayoutData(gd);
+		containerText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				dialogChanged();
+			}
+		});
+
+		Button button = new Button(container, SWT.PUSH);
+		button.setText("Browse...");
+		button.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				handleBrowse();
+			}
+		});
+		label = new Label(container, SWT.NULL);
+		label.setText("&File name:");
+
+		fileText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		fileText.setLayoutData(gd);
+		fileText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				dialogChanged();
+			}
+		});
+		initialize();
+		dialogChanged();
+		setControl(container);
+	}
+
+	/**
+	 * Tests if the current workbench selection is a suitable container to use.
+	 */
+
+	private void initialize() {
+		if (selection != null && selection.isEmpty() == false
+				&& selection instanceof IStructuredSelection) {
+			IStructuredSelection ssel = (IStructuredSelection) selection;
+			if (ssel.size() > 1)
+				return;
+			Object obj = ssel.getFirstElement();
+			if (obj instanceof IResource) {
+				IContainer container;
+				if (obj instanceof IContainer)
+					container = (IContainer) obj;
+				else
+					container = ((IResource) obj).getParent();
+				containerText.setText(container.getFullPath().toString());
+			}
+		}
+		fileText.setText(defaultFilename);
+	}
+
+	/**
+	 * Uses the standard container selection dialog to choose the new value for
+	 * the container field.
+	 */
+
+	private void handleBrowse() {
+		ContainerSelectionDialog dialog = new ContainerSelectionDialog(
+				getShell(), ResourcesPlugin.getWorkspace().getRoot(), false,
+				"Select new file container");
+		if (dialog.open() == ContainerSelectionDialog.OK) {
+			Object[] result = dialog.getResult();
+			if (result.length == 1) {
+				containerText.setText(((Path) result[0]).toString());
+			}
+		}
+	}
+
+	/**
+	 * Ensures that both text fields are set.
+	 */
+
+	private void dialogChanged() {
+		IResource container = ResourcesPlugin.getWorkspace().getRoot()
+				.findMember(new Path(getContainerName()));
+		String fileName = getFileName();
+
+		if (getContainerName().length() == 0) {
+			updateStatus("File container must be specified");
+			return;
+		}
+		if (container == null
+				|| (container.getType() & (IResource.PROJECT | IResource.FOLDER)) == 0) {
+			updateStatus("File container must exist");
+			return;
+		}
+		if (!container.isAccessible()) {
+			updateStatus("Project must be writable");
+			return;
+		}
+		if (fileName.length() == 0) {
+			updateStatus("File name must be specified");
+			return;
+		}
+		if (fileName.replace('\\', '/').indexOf('/', 1) > 0) {
+			updateStatus("File name must be valid");
+			return;
+		}
+		int dotLoc = fileName.lastIndexOf('.');
+		if (dotLoc != -1) {
+			String ext = fileName.substring(dotLoc + 1);
+			if (ext.equalsIgnoreCase("e4xmi") == false) {
+				updateStatus("File extension must be \"e4xmi\"");
+				return;
+			}
+		}
+		updateStatus(null);
+	}
+
+	private void updateStatus(String message) {
+		setErrorMessage(message);
+		setPageComplete(message == null);
+	}
+
+	public String getContainerName() {
+		return containerText.getText();
+	}
+
+	public String getFileName() {
+		return fileText.getText();
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.liveeditor/xmi/components.e4xmi b/bundles/org.eclipse.e4.tools.emf.liveeditor/xmi/components.e4xmi
index a17ca06..edc32d7 100644
--- a/bundles/org.eclipse.e4.tools.emf.liveeditor/xmi/components.e4xmi
+++ b/bundles/org.eclipse.e4.tools.emf.liveeditor/xmi/components.e4xmi
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="ASCII"?>
-<application:ModelComponents xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:application="http://www.eclipse.org/ui/2008/UIModel" xmi:id="_bqMDUC-PEd-Ynqk6t8gnnQ">
-  <components xmi:id="_qaTZ8S-VEd-3M4x060nRVA" id="_qaTZ8S-VEd-3M4x060nRVA" parentID="org.eclipse.e4.ide.application">
-    <handlers xmi:id="_19430DKIEd-DTbMZnbBT7Q" id="_19430DKIEd-DTbMZnbBT7Q" URI="platform:/plugin/org.eclipse.e4.tools.emf.liveeditor/org.eclipse.e4.tools.emf.liveeditor.OpenLiveDialogHandler" command="_HCJfgTKIEd-fvZvV6xCLBg"/>
-    <commands xmi:id="_HCJfgTKIEd-fvZvV6xCLBg" id="org.eclipse.e4.tools.emf.liveeditor.openeditor" commandName="Open the live editor" description="This command opens a dialog with a live editor"/>
+<application:ModelComponents xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmi:id="_tT3mwUltEd-13_QIF1bMpQ">
+  <components xmi:id="_DkB2IUluEd-W0KE_Fte-Yw" elementId="org.eclipse.e4.ide.application">
+    <handlers xmi:id="_HPOVgEluEd-W0KE_Fte-Yw" elementId="_HPOVgEluEd-W0KE_Fte-Yw" contributionURI="platform:/plugin/org.eclipse.e4.tools.emf.liveeditor/org.eclipse.e4.tools.emf.liveeditor.OpenLiveDialogHandler" command="_L6fx0EluEd-W0KE_Fte-Yw"/>
+    <commands xmi:id="_L6fx0EluEd-W0KE_Fte-Yw" elementId="_L6fx0EluEd-W0KE_Fte-Yw" commandName="Open the live editor" description="This command opens a dialog with a live editor"/>
   </components>
-  <components xmi:id="_2LBT4DKTEd-lHPhqJ-pBnA" id="_2LBT4DKTEd-lHPhqJ-pBnA" parentID="org.eclipse.ui.bindingtables.dialogAndWindow">
-    <bindings xmi:id="_AwBjsDKUEd-lHPhqJ-pBnA" keySequence="M1+I" id="_AwBjsDKUEd-lHPhqJ-pBnA" command="_HCJfgTKIEd-fvZvV6xCLBg"/>
+  <components xmi:id="_QUiUMEluEd-W0KE_Fte-Yw" elementId="_QUiUMEluEd-W0KE_Fte-Yw" parentID="org.eclipse.ui.bindingtables.dialogAndWindow">
+    <bindings xmi:id="_UsZFQEluEd-W0KE_Fte-Yw" keySequence="M1+I" elementId="_UsZFQEluEd-W0KE_Fte-Yw" command="_L6fx0EluEd-W0KE_Fte-Yw"/>
   </components>
 </application:ModelComponents>
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs
index 44c830d..47b9e1b 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.e4.tools.emf.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,10 +1,74 @@
-#Sun Mar 07 11:22:58 CET 2010
+#Sun Apr 11 23:33:47 CEST 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
 org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.source=1.5
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
index d622a13..9d7c30f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
@@ -19,7 +19,8 @@
  org.eclipse.emf.databinding.edit;bundle-version="1.2.0",
  com.ibm.icu;bundle-version="4.2.1",
  org.eclipse.core.resources;bundle-version="3.6.0",
- org.eclipse.e4.core.services;bundle-version="0.9.1"
+ org.eclipse.e4.core.services;bundle-version="0.9.1",
+ org.eclipse.osgi;bundle-version="3.6.0"
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.inject;version="1.0.0",
  org.osgi.framework;version="1.5.0"
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/BindingTable.png b/bundles/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/BindingTable.png
new file mode 100644
index 0000000..decac8a
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/BindingTable.png
Binary files differ
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java
index 662d39c..c9a5e8d 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java
@@ -30,11 +30,11 @@
 
 	private static Map<Integer, Image> IMAGE_MAP = new HashMap<Integer, Image>();
 	private static final String[] IMAGES = {
-		"/icons/full/obj16/zoom.png",
-		"/icons/full/obj16/table_add.png",
-		"/icons/full/obj16/table_delete.png",
-		"/icons/full/obj16/arrow_up.png",
-		"/icons/full/obj16/arrow_down.png",
+		"/icons/full/obj16/zoom.png", //$NON-NLS-1$
+		"/icons/full/obj16/table_add.png", //$NON-NLS-1$
+		"/icons/full/obj16/table_delete.png", //$NON-NLS-1$
+		"/icons/full/obj16/arrow_up.png", //$NON-NLS-1$
+		"/icons/full/obj16/arrow_down.png" //$NON-NLS-1$
 	};
 
 	private WritableValue master = new WritableValue();
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
new file mode 100644
index 0000000..d1602be
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.ui.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages {
+
+	public static String ApplicationEditor_Label;
+	public static String ApplicationEditor_Description;
+	public static String ApplicationEditor_Id;
+	public static String ApplicationEditor_Handlers;
+	public static String ApplicationEditor_PartDescriptors;
+	public static String ApplicationEditor_BindingTables;
+	public static String ApplicationEditor_Commands;
+	public static String ApplicationEditor_Windows;
+
+	public static String BindingTableEditor_Label;
+	public static String BindingTableEditor_Description;
+	public static String BindingTableEditor_Id;
+	public static String BindingTableEditor_ContextId;
+	public static String BindingTableEditor_Find;
+	public static String BindingTableEditor_Keybindings;
+	public static String BindingTableEditor_KeySequence;
+	public static String BindingTableEditor_Command;
+	public static String BindingTableEditor_Up;
+	public static String BindingTableEditor_Down;
+	public static String BindingTableEditor_Add;
+	public static String BindingTableEditor_Remove; 
+	
+	public static String CommandEditor_Label;
+	public static String CommandEditor_Description;
+	public static String CommandEditor_Id;
+	public static String CommandEditor_Name;
+	public static String CommandEditor_LabelDescription;
+	public static String CommandEditor_Parameters;
+	public static String CommandEditor_ParameterName;
+	public static String CommandEditor_ParameterTypeId;
+	public static String CommandEditor_ParameterOptional;
+	public static String CommandEditor_ParameterOptional_No;
+	public static String CommandEditor_ParameterOptional_Yes;
+	public static String CommandEditor_Up;
+	public static String CommandEditor_Down;
+	public static String CommandEditor_Add;
+	public static String CommandEditor_Remove;
+	
+	public static String DirectMenuItemEditor_Label;
+	public static String DirectMenuItemEditor_Description;
+	public static String DirectMenuItemEditor_ClassURI;
+	public static String DirectMenuItemEditor_Find;
+	
+	public static String ControlFactory_BindingContexts;
+	public static String ControlFactory_Add;
+	public static String ControlFactory_Up;
+	public static String ControlFactory_Down;
+	public static String ControlFactory_Remove;
+	public static String ControlFactory_Tags;
+	public static String ControlFactory_Key;
+	public static String ControlFactory_Value;
+	
+	public static String DirectToolItemEditor_ClassURI;
+	public static String DirectToolItemEditor_Find;
+	public static String DirectToolItemEditor_Label;
+	public static String DirectToolItemEditor_Description;
+	
+	public static String HandledMenuItemEditor_Label;
+	public static String HandledMenuItemEditor_Description;
+	public static String HandledMenuItemEditor_Command;
+	public static String HandledMenuItemEditor_Find;
+	public static String HandledMenuItemEditor_Parameters;
+	public static String HandledMenuItemEditor_Tag;
+	public static String HandledMenuItemEditor_Value;
+	public static String HandledMenuItemEditor_Up;
+	public static String HandledMenuItemEditor_Down;
+	public static String HandledMenuItemEditor_Add;
+	public static String HandledMenuItemEditor_Remove;
+	
+	public static String HandledToolItemEditor_Command;
+	public static String HandledToolItemEditor_Find;
+	public static String HandledToolItemEditor_Parameters;
+	public static String HandledToolItemEditor_ParametersName;
+	public static String HandledToolItemEditor_ParametersValue;
+	public static String HandledToolItemEditor_Up;
+	public static String HandledToolItemEditor_Down;
+	public static String HandledToolItemEditor_Add;
+	public static String HandledToolItemEditor_Remove;
+	public static String HandledToolItemEditor_Label;
+	public static String HandledToolItemEditor_Description;
+	
+	public static String HandlerEditor_Label;
+	public static String HandlerEditor_Description;
+	public static String HandlerEditor_Id;
+	public static String HandlerEditor_Command;
+	public static String HandlerEditor_Find;
+	public static String HandlerEditor_ClassURI;
+	
+	public static String InputPartEditor_Label;
+	public static String InputPartEditor_InputURI;
+	
+	public static String KeyBindingEditor_Label;
+	public static String KeyBindingEditor_Description;
+	public static String KeyBindingEditor_Id;
+	public static String KeyBindingEditor_Sequence;
+	public static String KeyBindingEditor_Command;
+	public static String KeyBindingEditor_Find;
+	public static String KeyBindingEditor_Parameters;
+	public static String KeyBindingEditor_ParametersKey;
+	public static String KeyBindingEditor_ParametersValue;
+	public static String KeyBindingEditor_Up;
+	public static String KeyBindingEditor_Down;
+	public static String KeyBindingEditor_Add;
+	public static String KeyBindingEditor_Remove;
+	
+	public static String MenuEditor_Label;
+	public static String MenuEditor_Description;
+	public static String MenuEditor_Id;
+	public static String MenuEditor_MenuItems;
+	public static String MenuEditor_MenuItemType;
+	public static String MenuEditor_MenuItemItemType;
+	public static String MenuEditor_Up;
+	public static String MenuEditor_Down;
+	public static String MenuEditor_HandledMenuItem;
+	public static String MenuEditor_Separator;
+	public static String MenuEditor_Menu;
+	public static String MenuEditor_DirectMenuItem;
+	public static String MenuEditor_Remove;
+	public static String MenuEditor_LabelLabel;
+	public static String MenuEditor_Tooltip;
+	public static String MenuEditor_IconURI;
+	
+	
+	public static String MenuItemEditor_Id;
+	public static String MenuItemEditor_Type;
+	public static String MenuItemEditor_Label;
+	public static String MenuItemEditor_Tooltip;
+	public static String MenuItemEditor_IconURI;
+	public static String MenuItemEditor_Find;
+	
+	public static String MenuSeparatorEditor_Label;
+	public static String MenuSeparatorEditor_Id;
+	
+	public static String ModelComponentEditor_Id;
+	public static String ModelComponentEditor_ParentId;
+	public static String ModelComponentEditor_Find;
+	public static String ModelComponentEditor_PositionInParent;
+	public static String ModelComponentEditor_Processor;
+	public static String ModelComponentEditor_Tags;
+	public static String ModelComponentEditor_Label;
+	public static String ModelComponentEditor_Description;
+	public static String ModelComponentEditor_Handlers;
+	public static String ModelComponentEditor_BindingTables;
+	public static String ModelComponentEditor_KeyBindings;
+	public static String ModelComponentEditor_Commands;
+	public static String ModelComponentEditor_Menus;
+	public static String ModelComponentEditor_Parts;
+	public static String ModelComponentEditor_PartDescriptors;
+	public static String ModelComponentEditor_DetailParentId;
+	
+	public static String ModelComponentsEditor_Label;
+	public static String ModelComponentsEditor_Description;
+	public static String ModelComponentsEditor_ModelContributions;
+	public static String ModelComponentsEditor_Up;
+	public static String ModelComponentsEditor_Down;
+	public static String ModelComponentsEditor_Add;
+	public static String ModelComponentsEditor_Remove;
+	
+	public static String PartDescriptorEditor_Label;
+	public static String PartDescriptorEditor_Descriptor;
+	public static String PartDescriptorEditor_Id;
+	public static String PartDescriptorEditor_LabelLabel;
+	public static String PartDescriptorEditor_Tooltip;
+	public static String PartDescriptorEditor_IconURI;
+	public static String PartDescriptorEditor_Find;
+	public static String PartDescriptorEditor_ClassURI;
+	public static String PartDescriptorEditor_Dirtyable;
+	public static String PartDescriptorEditor_Closeable;
+	public static String PartDescriptorEditor_Multiple;
+	public static String PartDescriptorEditor_Category;
+	public static String PartDescriptorEditor_PersitedState;
+	public static String PartDescriptorEditor_PersitedStateKey;
+	public static String PartDescriptorEditor_PersitedStateValue;
+	public static String PartDescriptorEditor_Add;
+	public static String PartDescriptorEditor_Remove;
+	public static String PartDescriptorEditor_Variables;
+	public static String PartDescriptorEditor_Properties;
+	public static String PartDescriptorEditor_PropertiesKey;
+	public static String PartDescriptorEditor_PropertiesValue;
+	public static String PartDescriptorEditor_Menus;
+	public static String PartDescriptorEditor_Handlers;
+	public static String PartDescriptorEditor_ContainerData;
+	
+	public static String PartEditor_Label;
+	public static String PartEditor_Description;
+	public static String PartEditor_Id;
+	public static String PartEditor_LabelLabel;
+	public static String PartEditor_Tooltip;
+	public static String PartEditor_IconURI;
+	public static String PartEditor_Find;
+	public static String PartEditor_ClassURI;
+	public static String PartEditor_Closeable;
+	public static String PartEditor_PersitedState;
+	public static String PartEditor_PersitedStateKey;
+	public static String PartEditor_PersitedStateValue;
+	public static String PartEditor_Add;
+	public static String PartEditor_Remove;
+	public static String PartEditor_Menus;
+	public static String PartEditor_Handlers;
+	public static String PartEditor_ContainerData;
+	
+	public static String PartSashContainerEditor_Label;
+	public static String PartSashContainerEditor_Description;
+	public static String PartSashContainerEditor_Id;
+	public static String PartSashContainerEditor_Orientation;
+	public static String PartSashContainerEditor_Vertical;
+	public static String PartSashContainerEditor_Horizontal;
+	public static String PartSashContainerEditor_SelectedElement;
+	public static String PartSashContainerEditor_Controls;
+	public static String PartSashContainerEditor_Up;
+	public static String PartSashContainerEditor_Down;
+	public static String PartSashContainerEditor_Remove;
+	public static String PartSashContainerEditor_ContainerData;
+	
+	public static String PartStackEditor_Label;
+	public static String PartStackEditor_Description;
+	public static String PartStackEditor_Id;
+	public static String PartStackEditor_SelectedElement;
+	public static String PartStackEditor_Parts;
+	public static String PartStackEditor_Up;
+	public static String PartStackEditor_Down;
+	public static String PartStackEditor_Remove;
+	public static String PartStackEditor_ContainerData;
+	
+	public static String PerspectiveEditor_Label;
+	public static String PerspectiveEditor_Description;
+	public static String PerspectiveEditor_Id;
+	public static String PerspectiveEditor_SelectedElement;
+	public static String PerspectiveEditor_Tooltip;
+	public static String PerspectiveEditor_IconURI;
+	public static String PerspectiveEditor_Find;
+	public static String PerspectiveEditor_Controls;
+	public static String PerspectiveEditor_Up;
+	public static String PerspectiveEditor_Down;
+	public static String PerspectiveEditor_Remove;
+	
+	public static String PerspectiveStackEditor_Perspectives;
+	public static String PerspectiveStackEditor_Label;
+	public static String PerspectiveStackEditor_Description;
+	public static String PerspectiveStackEditor_Id;
+	public static String PerspectiveStackEditor_SelectedElement;
+	
+	public static String PlaceholderEditor_Label;
+	public static String PlaceholderEditor_Descriptor;
+	public static String PlaceholderEditor_Id;
+	
+	public static String ToolBarEditor_Label;
+	public static String ToolBarEditor_Description;
+	public static String ToolBarEditor_Id;
+	public static String ToolBarEditor_ToolbarItems;
+	public static String ToolBarEditor_ToolbarItemsType;
+	public static String ToolBarEditor_ToolbarItemsItemType;
+	public static String ToolBarEditor_Up;
+	public static String ToolBarEditor_Down;
+	public static String ToolBarEditor_HandledToolItem;
+	public static String ToolBarEditor_DirectToolItem;
+	public static String ToolBarEditor_ToolControl;
+	public static String ToolBarEditor_Separator;
+	public static String ToolBarEditor_Remove;
+	
+	public static String ToolBarSeparatorEditor_Label;
+	public static String ToolBarSeparatorEditor_Id;
+	
+	public static String ToolControlEditor_Label;
+	public static String ToolControlEditor_Description;
+	public static String ToolControlEditor_Id;
+	public static String ToolControlEditor_ClassURI;
+	
+	public static String VBindingTableEditor_Label;
+	public static String VBindingTableEditor_Description;
+	public static String VBindingTableEditor_Contexts;
+	public static String VBindingTableEditor_Name;
+	public static String VBindingTableEditor_LabelDescription;
+	public static String VBindingTableEditor_Id;
+	public static String VBindingTableEditor_Up;
+	public static String VBindingTableEditor_Down;
+	public static String VBindingTableEditor_Add;
+	public static String VBindingTableEditor_Remove;
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	static {
+		NLS.initializeMessages(Messages.class.getName(), Messages.class);
+	}
+}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
new file mode 100644
index 0000000..290dd33
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
@@ -0,0 +1,288 @@
+# ******************************************************************************
+# * Copyright (c) 2010 BestSolution.at and others.
+# * 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:
+# *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+# ******************************************************************************
+ApplicationEditor_Label=Application
+ApplicationEditor_Description=Application bla, bla, bla
+ApplicationEditor_Id=Id
+ApplicationEditor_Handlers=Handlers
+ApplicationEditor_PartDescriptors=Part Descriptors
+ApplicationEditor_BindingTables=BindingTables
+ApplicationEditor_Commands=Commands
+ApplicationEditor_Windows=Windows
+
+BindingTableEditor_Label=BindingTable
+BindingTableEditor_Description=BindingTable bla bla bla
+BindingTableEditor_Id=Id
+BindingTableEditor_ContextId=Context Id
+BindingTableEditor_Find=Find ...
+BindingTableEditor_Keybindings=Keybindings
+BindingTableEditor_KeySequence=KeySequence
+BindingTableEditor_Command=Command
+BindingTableEditor_Up=Up
+BindingTableEditor_Down=Down
+BindingTableEditor_Add=Add ...
+BindingTableEditor_Remove=Remove
+
+CommandEditor_Label=Command
+CommandEditor_Description=Command bla bla bla
+CommandEditor_Id=Id
+CommandEditor_Name=Name
+CommandEditor_LabelDescription=Description
+CommandEditor_Parameters=Parameters
+CommandEditor_ParameterName=Name
+CommandEditor_ParameterTypeId=Type-Id
+CommandEditor_ParameterOptional=Optional
+CommandEditor_ParameterOptional_Yes=yes
+CommandEditor_ParameterOptional_No=no
+CommandEditor_Up=Up
+CommandEditor_Down=Down
+CommandEditor_Add=Add ...
+CommandEditor_Remove=Remove
+
+DirectMenuItemEditor_Label=DirectMenuItem
+DirectMenuItemEditor_Description=DirectMenuItem bla bla bla
+DirectMenuItemEditor_ClassURI=Class URI
+DirectMenuItemEditor_Find=Find ...
+
+ControlFactory_BindingContexts=Binding Contexts
+ControlFactory_Add=Add ...
+ControlFactory_Up=Up
+ControlFactory_Down=Down
+ControlFactory_Remove=Remove
+ControlFactory_Tags=Tags
+ControlFactory_Key=Key
+ControlFactory_Value=Value
+
+DirectToolItemEditor_ClassURI=Class URI
+DirectToolItemEditor_Find=Find ...
+DirectToolItemEditor_Label=Direct Tool Item
+DirectToolItemEditor_Description=Direct Tool Item bla bla bla
+
+HandledMenuItemEditor_Label=HandledMenuItem
+HandledMenuItemEditor_Description=HandledMenuItem bla bla bla
+HandledMenuItemEditor_Command=Command
+HandledMenuItemEditor_Find=Find ...
+HandledMenuItemEditor_Parameters=Parameters
+HandledMenuItemEditor_Tag=Tag
+HandledMenuItemEditor_Value=Value
+HandledMenuItemEditor_Up=Up
+HandledMenuItemEditor_Down=Down
+HandledMenuItemEditor_Add=Add ...
+HandledMenuItemEditor_Remove=Remove
+
+HandledToolItemEditor_Command=Command
+HandledToolItemEditor_Find=Find ...
+HandledToolItemEditor_Parameters=Parameters
+HandledToolItemEditor_ParametersName=Name
+HandledToolItemEditor_ParametersValue=Value
+HandledToolItemEditor_Up=Up
+HandledToolItemEditor_Down=Down
+HandledToolItemEditor_Add=Add ...
+HandledToolItemEditor_Remove=Remove
+HandledToolItemEditor_Label=Handled Tool Item
+HandledToolItemEditor_Description=Handled Tool Item bla bla bla
+
+HandlerEditor_Label=Handler
+HandlerEditor_Description=Handler bla bla bla
+HandlerEditor_Id=Id
+HandlerEditor_Command=Command
+HandlerEditor_Find=Find ...
+HandlerEditor_ClassURI=Class URI
+
+InputPartEditor_Label=InputPart
+InputPartEditor_InputURI=Input URI
+
+KeyBindingEditor_Label=Binding
+KeyBindingEditor_Description=Binding bla bla bla
+KeyBindingEditor_Id=Id
+KeyBindingEditor_Sequence=Sequence
+KeyBindingEditor_Command=Command
+KeyBindingEditor_Find=Find ...
+KeyBindingEditor_Parameters=Parameters
+KeyBindingEditor_ParametersKey=Key
+KeyBindingEditor_ParametersValue=Value
+KeyBindingEditor_Up=Up
+KeyBindingEditor_Down=Down
+KeyBindingEditor_Add=Add ...
+KeyBindingEditor_Remove=Remove
+
+MenuEditor_Label=Menu
+MenuEditor_Description=Menu bla bla bla
+MenuEditor_Id=Id
+MenuEditor_MenuItems=MenuItems
+MenuEditor_MenuItemType=Type
+MenuEditor_MenuItemItemType=Item Type
+MenuEditor_Up=Up
+MenuEditor_Down=Down
+MenuEditor_HandledMenuItem=Handled MenuItem
+MenuEditor_Separator=Separator
+MenuEditor_Menu=Menu
+MenuEditor_Remove=Remove
+MenuEditor_DirectMenuItem=Direct MenuItem
+MenuEditor_LabelLabel=Label
+MenuEditor_Tooltip=Tooltip
+MenuEditor_IconURI=Icon URI
+
+MenuItemEditor_Id=Id
+MenuItemEditor_Type=Type
+MenuItemEditor_Label=Label
+MenuItemEditor_Tooltip=Tooltip
+MenuItemEditor_IconURI=Icon URI
+MenuItemEditor_Find=Find ...
+
+
+MenuSeparatorEditor_Label=Separator
+MenuSeparatorEditor_Id=Id
+
+ModelComponentEditor_Id=Id
+ModelComponentEditor_ParentId=Parent-Id
+ModelComponentEditor_Find=Find ...
+ModelComponentEditor_PositionInParent=Position in Parent
+ModelComponentEditor_Processor=Processor
+ModelComponentEditor_Tags=Tags
+ModelComponentEditor_Label=Model Component
+ModelComponentEditor_Description=The model component ... bla bla bla
+ModelComponentEditor_Handlers=Handlers
+ModelComponentEditor_BindingTables=BindingTables
+ModelComponentEditor_KeyBindings=KeyBindings
+ModelComponentEditor_Commands=Commands
+ModelComponentEditor_Menus=Menus
+ModelComponentEditor_Parts=Parts
+ModelComponentEditor_PartDescriptors=PartDescriptors
+ModelComponentEditor_DetailParentId=parentId
+
+ModelComponentsEditor_Label=Model Components
+ModelComponentsEditor_Description=Some bla bla bla bla
+ModelComponentsEditor_ModelContributions=Model Contributions
+ModelComponentsEditor_Up=Up
+ModelComponentsEditor_Down=Down
+ModelComponentsEditor_Add=Add
+ModelComponentsEditor_Remove=Remove
+
+PartDescriptorEditor_Label=PartDescriptor
+PartDescriptorEditor_Descriptor=PartDescriptor Bla Bla Bla Bla
+PartDescriptorEditor_Id=Id
+PartDescriptorEditor_LabelLabel=Label
+PartDescriptorEditor_Tooltip=Tooltip
+PartDescriptorEditor_IconURI=Icon URI
+PartDescriptorEditor_Find=Find ...
+PartDescriptorEditor_ClassURI=Class URI
+PartDescriptorEditor_Dirtyable=Dirtyable
+PartDescriptorEditor_Closeable=Closeable
+PartDescriptorEditor_Multiple=Multiple
+PartDescriptorEditor_Category=Category
+PartDescriptorEditor_PersitedState=Persited State
+PartDescriptorEditor_PersitedStateKey=Key
+PartDescriptorEditor_PersitedStateValue=Value
+PartDescriptorEditor_Add=Add ...
+PartDescriptorEditor_Remove=Remove
+PartDescriptorEditor_Variables=Variables
+PartDescriptorEditor_Properties=Properties
+PartDescriptorEditor_PropertiesKey=Key
+PartDescriptorEditor_PropertiesValue=Value
+PartDescriptorEditor_Menus=Menus
+PartDescriptorEditor_Handlers=Handlers
+PartDescriptorEditor_ContainerData=Container Data
+
+PartEditor_Label=Part
+PartEditor_Description=Part Bla Bla Bla Bla
+PartEditor_Id=Id
+PartEditor_LabelLabel=Label
+PartEditor_Tooltip=Tooltip
+PartEditor_IconURI=Icon URI
+PartEditor_Find=Find ...
+PartEditor_ClassURI=Class URI
+PartEditor_Closeable=Closeable
+PartEditor_PersitedState=Persisted State
+PartEditor_PersitedStateKey=Key
+PartEditor_PersitedStateValue=Value
+PartEditor_Add=Add ...
+PartEditor_Remove=Remove
+PartEditor_Menus=Menus
+PartEditor_Handlers=Handlers
+
+PartSashContainerEditor_Label=Sash
+PartSashContainerEditor_Description=Sash bla bla bla
+PartSashContainerEditor_Id=Id
+PartSashContainerEditor_Orientation=Orientation
+PartSashContainerEditor_Vertical=Vertical
+PartSashContainerEditor_Horizontal=Horizontal
+PartSashContainerEditor_SelectedElement=Selected Element
+PartSashContainerEditor_Controls=Controls
+PartSashContainerEditor_Up=Up
+PartSashContainerEditor_Down=Down
+PartSashContainerEditor_Remove=Remove
+PartSashContainerEditor_ContainerData=Container Data
+
+PartStackEditor_Label=Part Stack
+PartStackEditor_Description=Stack bla bla bla
+PartStackEditor_Id=Id
+PartStackEditor_SelectedElement=Selected Element
+PartStackEditor_Parts=Parts
+PartStackEditor_Up=Up
+PartStackEditor_Down=Down
+PartStackEditor_Remove=Remove
+PartStackEditor_ContainerData=Container Data
+
+PerspectiveEditor_Label=Perspective
+PerspectiveEditor_Description=Perspective Bla Bla Bla
+PerspectiveEditor_Id=Id
+PerspectiveEditor_SelectedElement=Selected Element
+PerspectiveEditor_Label=Label
+PerspectiveEditor_Tooltip=Tooltip
+PerspectiveEditor_IconURI=Icon URI
+PerspectiveEditor_Find=Find ...
+PerspectiveEditor_Controls=Controls
+PerspectiveEditor_Up=Up
+PerspectiveEditor_Down=Down
+PerspectiveEditor_Remove=Remove
+PartEditor_ContainerData=Container Data
+
+PerspectiveStackEditor_Label=Perspective Stack
+PerspectiveStackEditor_Description=Perspective Stack Bla Bla Bla
+PerspectiveStackEditor_Id=Id
+PerspectiveStackEditor_SelectedElement=Selected Element
+PerspectiveStackEditor_Perspectives=Perspectives
+
+PlaceholderEditor_Label=Placeholder
+PlaceholderEditor_Descriptor=Placeholder Bla Bla Bla Bla
+PlaceholderEditor_Id=Id
+
+ToolBarEditor_Label=Toolbar
+ToolBarEditor_Description=Toolbar bla bla bla
+ToolBarEditor_Id=Id
+ToolBarEditor_ToolbarItems=Toolbar Items
+ToolBarEditor_ToolbarItemsType=Type
+ToolBarEditor_ToolbarItemsItemType=Item-Type
+ToolBarEditor_Up=Up
+ToolBarEditor_Down=Down
+ToolBarEditor_HandledToolItem=Handled ToolItem
+ToolBarEditor_DirectToolItem=Direct ToolItem
+ToolBarEditor_ToolControl=Tool Control
+ToolBarEditor_Separator=Separator
+ToolBarEditor_Remove=Remove
+
+ToolBarSeparatorEditor_Label=Separator
+ToolBarSeparatorEditor_Id=Id
+
+ToolControlEditor_Label=ToolControl
+ToolControlEditor_Description=ToolControl bla bla bla
+ToolControlEditor_Id=Id
+
+VBindingTableEditor_Label=Binding Configuration
+VBindingTableEditor_Description=Binding Configuration Bla Bla Bla Bla
+VBindingTableEditor_Contexts=Contexts
+VBindingTableEditor_Name=Name
+VBindingTableEditor_LabelDescription=Description
+VBindingTableEditor_Id=Id
+VBindingTableEditor_Up=Up
+VBindingTableEditor_Down=Down
+VBindingTableEditor_Add=Add ...
+VBindingTableEditor_Remove=Remove
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/ObservableColumnLabelProvider.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/ObservableColumnLabelProvider.java
index 0647a79..c120788 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/ObservableColumnLabelProvider.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/ObservableColumnLabelProvider.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal;
 
 import java.util.Set;
@@ -71,7 +81,7 @@
 
 	public String getText(M element) {
 		Object value = attributeMaps[0].get(element);
-		return value == null ? "" : value.toString();
+		return value == null ? "" : value.toString(); //$NON-NLS-1$
 	}
 	
 	public Font getFont(M element) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/PatternFilter.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/PatternFilter.java
index 23ff9a5..6fc7603 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/PatternFilter.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/PatternFilter.java
@@ -38,12 +38,12 @@
 	/*
 	 * Cache of filtered elements in the tree
 	 */
-    private Map cache = new HashMap();
+    private Map<Object,Object[]> cache = new HashMap<Object,Object[]>();
     
     /*
      * Maps parent elements to TRUE or FALSE
      */
-    private Map foundAnyCache = new HashMap();
+    private Map<Object,Boolean> foundAnyCache = new HashMap<Object,Boolean>();
     
     private boolean useCache = false;
     
@@ -288,7 +288,7 @@
      * @return an array of words
      */
     private String[] getWords(String text){
-    	List words = new ArrayList();
+    	List<String> words = new ArrayList<String>();
 		// Break the text up into words, separating based on whitespace and
 		// common punctuation.
 		// Previously used String.split(..., "\\W"), where "\W" is a regular
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/StringMatcher.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/StringMatcher.java
index ddde765..cfd8768 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/StringMatcher.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/StringMatcher.java
@@ -284,7 +284,7 @@
             }
         }
 
-        Vector temp = new Vector();
+        Vector<String> temp = new Vector<String>();
 
         int pos = 0;
         StringBuffer buf = new StringBuffer();
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ClassContributionCollector.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ClassContributionCollector.java
index a976bc2..f7b4a5a 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ClassContributionCollector.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ClassContributionCollector.java
@@ -21,12 +21,10 @@
 	private CopyOnWriteArrayList<IClassContributionProvider> providers = new CopyOnWriteArrayList<IClassContributionProvider>();
 	
 	public void addContributor(IClassContributionProvider contributor) {
-		System.err.println("Add Contributor: " + contributor);
 		providers.add(contributor);
 	}
 	
 	public void removeContributor(IClassContributionProvider contributor) {
-		System.err.println("Remove Contributor: " + contributor);
 		providers.remove(contributor);
 	}
 	
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ComponentLabelProvider.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ComponentLabelProvider.java
index 9621c80..1ee6163 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ComponentLabelProvider.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ComponentLabelProvider.java
@@ -44,7 +44,7 @@
 					cell.setText(label);
 				} else {
 					StyledString styledString = new StyledString(label, null);
-					styledString.append(" - " + detailText, StyledString.DECORATIONS_STYLER);
+					styledString.append(" - " + detailText, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
 					cell.setText(styledString.getString());
 					cell.setStyleRanges(styledString.getStyleRanges());
 				}
@@ -56,7 +56,7 @@
 			String s = cell.getElement().toString();
 			cell.setText(s);
 		} else {
-			cell.setText(cell.getElement()+"");
+			cell.setText(cell.getElement().toString());
 		}
 	}
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
index 47bd78b..eef4517 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
@@ -15,8 +15,6 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.inject.Inject;
-
 import org.eclipse.core.databinding.observable.IObservable;
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.map.IMapChangeListener;
@@ -43,7 +41,7 @@
 import org.eclipse.e4.tools.emf.ui.internal.common.component.HandledToolItemEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.HandlerEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.MenuEditor;
-import org.eclipse.e4.tools.emf.ui.internal.common.component.MenuItemEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.MenuSeparatorEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.ModelComponentEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.ModelComponentsEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.PartDescriptorEditor;
@@ -54,19 +52,25 @@
 import org.eclipse.e4.tools.emf.ui.internal.common.component.PerspectiveStackEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.PlaceholderEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.ToolBarEditor;
-import org.eclipse.e4.tools.emf.ui.internal.common.component.ToolItemEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.ToolBarSeparatorEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.ToolControlEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.TrimBarEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.TrimmedWindowEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.WindowEditor;
-import org.eclipse.e4.tools.emf.ui.internal.common.component.WindowTrimEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VBindingTableEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VCommandEditor;
-import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VControlEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VWindowControlEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VHandlerEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VMenuEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VModelComponentBindingEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VPartDescriptor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VWindowEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VWindowTrimEditor;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.FeaturePath;
 import org.eclipse.emf.ecore.EClass;
@@ -92,17 +96,20 @@
 import org.eclipse.swt.widgets.Label;
 
 public class ModelEditor {
-	public static final int VIRTUAL_MENU = 0;
+	private static final String CSS_CLASS_KEY = "org.eclipse.e4.ui.css.CssClassName"; //$NON-NLS-1$
+	
+	public static final int VIRTUAL_PART_MENU = 0;
 	public static final int VIRTUAL_PART = 1;
 	public static final int VIRTUAL_HANDLER = 2;
 	public static final int VIRTUAL_BINDING_TABLE = 3;
 	public static final int VIRTUAL_COMMAND = 4;
 	public static final int VIRTUAL_WINDOWS = 5;
 	public static final int VIRTUAL_WINDOW_CONTROLS = 6;
-	public static final int VIRTUAL_WINDOW_TRIMS = 7;
-	public static final int VIRTUAL_PART_DESCRIPTORS = 8;
-	public static final int VIRTUAL_MODEL_COMP_COMMANDS = 9;
-	public static final int VIRTUAL_MODEL_COMP_BINDINGS = 10;
+	public static final int VIRTUAL_PART_DESCRIPTORS = 7;
+	public static final int VIRTUAL_MODEL_COMP_COMMANDS = 8;
+	public static final int VIRTUAL_MODEL_COMP_BINDINGS = 9;
+	public static final int VIRTUAL_PARTDESCRIPTOR_MENU = 10;
+	public static final int VIRTUAL_TRIMMED_WINDOW_TRIMS = 11;
 
 	private Map<EClass, AbstractComponentEditor> editorMap = new HashMap<EClass, AbstractComponentEditor>();
 	private AbstractComponentEditor[] virtualEditors;
@@ -115,7 +122,6 @@
 	private IModelResource modelProvider;
 	private IProject project;
 
-	@Inject
 	public ModelEditor(Composite composite, IModelResource modelProvider, IProject project) {
 		this.modelProvider = modelProvider;
 		this.project = project;
@@ -144,7 +150,7 @@
 
 		Composite headerContainer = new Composite(editingArea, SWT.NONE);
 		headerContainer.setBackgroundMode(SWT.INHERIT_DEFAULT);
-		headerContainer.setData("org.eclipse.e4.ui.css.CssClassName", "headerSectionContainer");
+		headerContainer.setData(CSS_CLASS_KEY, "headerSectionContainer"); //$NON-NLS-1$
 		headerContainer.setLayout(new GridLayout(2, false));
 		headerContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 
@@ -152,15 +158,15 @@
 		iconLabel.setLayoutData(new GridData(20, 20));
 
 		final Label textLabel = new Label(headerContainer, SWT.NONE);
-		textLabel.setData("org.eclipse.e4.ui.css.CssClassName", "sectionHeader");
+		textLabel.setData(CSS_CLASS_KEY, "sectionHeader"); //$NON-NLS-1$
 		textLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 
 		final ScrolledComposite scrolling = new ScrolledComposite(editingArea, SWT.H_SCROLL | SWT.V_SCROLL);
 		scrolling.setBackgroundMode(SWT.INHERIT_DEFAULT);
-		scrolling.setData("org.eclipse.e4.ui.css.CssClassName", "formContainer");
+		scrolling.setData(CSS_CLASS_KEY, "formContainer"); //$NON-NLS-1$
 		
 		final Composite contentContainer = new Composite(scrolling, SWT.NONE);
-		contentContainer.setData("org.eclipse.e4.ui.css.CssClassName", "formContainer");
+		contentContainer.setData(CSS_CLASS_KEY, "formContainer"); //$NON-NLS-1$
 		scrolling.setExpandHorizontal(true);
 		scrolling.setExpandVertical(true);
 		scrolling.setContent(contentContainer);
@@ -217,7 +223,7 @@
 
 	private TreeViewer createTreeViewerArea(Composite parent) {
 		parent = new Composite(parent, SWT.NONE);
-		parent.setData("org.eclipse.e4.ui.css.CssClassName", "formContainer");
+		parent.setData(CSS_CLASS_KEY, "formContainer"); //$NON-NLS-1$
 		parent.setBackgroundMode(SWT.INHERIT_DEFAULT);
 		
 		FillLayout l = new FillLayout();
@@ -266,17 +272,18 @@
 	}
 
 	private void registerVirtualEditors() {
-		virtualEditors = new AbstractComponentEditor[] { new VMenuEditor(modelProvider.getEditingDomain(), this), // V-Menu
+		virtualEditors = new AbstractComponentEditor[] { new VMenuEditor(modelProvider.getEditingDomain(), this, BasicPackageImpl.Literals.PART__MENUS), // V-Menu
 				null, // V-Part
 				new VHandlerEditor(modelProvider.getEditingDomain(), this), 
 				new VBindingTableEditor(modelProvider.getEditingDomain(), this), 
-				new VCommandEditor(modelProvider.getEditingDomain(), this, MApplicationPackage.Literals.APPLICATION__COMMANDS), 
+				new VCommandEditor(modelProvider.getEditingDomain(), this, ApplicationPackageImpl.Literals.APPLICATION__COMMANDS), 
 				new VWindowEditor(modelProvider.getEditingDomain(), this), 
-				new VControlEditor(modelProvider.getEditingDomain(), this), 
-				new VWindowTrimEditor(modelProvider.getEditingDomain(), this),
+				new VWindowControlEditor(modelProvider.getEditingDomain(), this), 
 				new VPartDescriptor(modelProvider.getEditingDomain(), this),
-				new VCommandEditor(modelProvider.getEditingDomain(), this, MApplicationPackage.Literals.MODEL_COMPONENT__COMMANDS),
-				new VModelComponentBindingEditor(modelProvider.getEditingDomain(), this)
+				new VCommandEditor(modelProvider.getEditingDomain(), this, ApplicationPackageImpl.Literals.MODEL_COMPONENT__COMMANDS),
+				new VModelComponentBindingEditor(modelProvider.getEditingDomain(), this),
+				new VMenuEditor(modelProvider.getEditingDomain(), this, org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS),
+				new VWindowTrimEditor(modelProvider.getEditingDomain(), this)
 		};
 	}
 
@@ -285,31 +292,39 @@
 	}
 
 	private void registerDefaultEditors() {
-		registerEditor(MApplicationPackage.Literals.APPLICATION, new ApplicationEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.MODEL_COMPONENTS, new ModelComponentsEditor(modelProvider.getEditingDomain(),this));
-		registerEditor(MApplicationPackage.Literals.MODEL_COMPONENT, new ModelComponentEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.PART, new PartEditor(modelProvider.getEditingDomain(),project));
-		registerEditor(MApplicationPackage.Literals.PART_DESCRIPTOR, new PartDescriptorEditor(modelProvider.getEditingDomain(),project));
-		registerEditor(MApplicationPackage.Literals.KEY_BINDING, new KeyBindingEditor(modelProvider.getEditingDomain(),modelProvider));
-		registerEditor(MApplicationPackage.Literals.HANDLER, new HandlerEditor(modelProvider.getEditingDomain(),modelProvider,project));
-		registerEditor(MApplicationPackage.Literals.COMMAND, new CommandEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.WINDOW, new WindowEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.PART_SASH_CONTAINER, new PartSashContainerEditor(modelProvider.getEditingDomain(), this));
-		registerEditor(MApplicationPackage.Literals.PART_STACK, new PartStackEditor(modelProvider.getEditingDomain(),this));
-		registerEditor(MApplicationPackage.Literals.WINDOW_TRIM, new WindowTrimEditor(modelProvider.getEditingDomain(), this));
-		registerEditor(MApplicationPackage.Literals.TOOL_BAR, new ToolBarEditor(modelProvider.getEditingDomain(), this));
-		registerEditor(MApplicationPackage.Literals.DIRECT_TOOL_ITEM, new DirectToolItemEditor(modelProvider.getEditingDomain(),project));
-		registerEditor(MApplicationPackage.Literals.HANDLED_TOOL_ITEM, new HandledToolItemEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.TOOL_ITEM, new ToolItemEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.PERSPECTIVE_STACK, new PerspectiveStackEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.PERSPECTIVE, new PerspectiveEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.PLACEHOLDER, new PlaceholderEditor(modelProvider.getEditingDomain()));
-		registerEditor(MApplicationPackage.Literals.MENU, new MenuEditor(modelProvider.getEditingDomain(), this));
-		registerEditor(MApplicationPackage.Literals.MENU_ITEM, new MenuItemEditor(modelProvider.getEditingDomain(), this));
-		registerEditor(MApplicationPackage.Literals.HANDLED_MENU_ITEM, new HandledMenuItemEditor(modelProvider.getEditingDomain(), this));
-		registerEditor(MApplicationPackage.Literals.DIRECT_MENU_ITEM, new DirectMenuItemEditor(modelProvider.getEditingDomain(), this, project));
-		registerEditor(MApplicationPackage.Literals.BINDING_TABLE, new BindingTableEditor(modelProvider.getEditingDomain(), this));
-		registerEditor(MApplicationPackage.Literals.INPUT_PART, new InputPartEditor(modelProvider.getEditingDomain(), project));
+		registerEditor(ApplicationPackageImpl.Literals.APPLICATION, new ApplicationEditor(modelProvider.getEditingDomain()));
+		registerEditor(ApplicationPackageImpl.Literals.MODEL_COMPONENTS, new ModelComponentsEditor(modelProvider.getEditingDomain(),this));
+		registerEditor(ApplicationPackageImpl.Literals.MODEL_COMPONENT, new ModelComponentEditor(modelProvider.getEditingDomain()));
+		
+		registerEditor(CommandsPackageImpl.Literals.KEY_BINDING, new KeyBindingEditor(modelProvider.getEditingDomain(),modelProvider));
+		registerEditor(CommandsPackageImpl.Literals.HANDLER, new HandlerEditor(modelProvider.getEditingDomain(),modelProvider,project));
+		registerEditor(CommandsPackageImpl.Literals.COMMAND, new CommandEditor(modelProvider.getEditingDomain()));
+		registerEditor(CommandsPackageImpl.Literals.BINDING_TABLE, new BindingTableEditor(modelProvider.getEditingDomain(), this));
+		
+		registerEditor(MenuPackageImpl.Literals.TOOL_BAR, new ToolBarEditor(modelProvider.getEditingDomain(), this));
+		registerEditor(MenuPackageImpl.Literals.DIRECT_TOOL_ITEM, new DirectToolItemEditor(modelProvider.getEditingDomain(),project));
+		registerEditor(MenuPackageImpl.Literals.HANDLED_TOOL_ITEM, new HandledToolItemEditor(modelProvider.getEditingDomain(),modelProvider));
+		registerEditor(MenuPackageImpl.Literals.TOOL_BAR_SEPARATOR, new ToolBarSeparatorEditor(modelProvider.getEditingDomain()));
+		registerEditor(MenuPackageImpl.Literals.TOOL_CONTROL, new ToolControlEditor(modelProvider.getEditingDomain(),project));
+		
+		registerEditor(MenuPackageImpl.Literals.MENU, new MenuEditor(modelProvider.getEditingDomain(), this));
+		registerEditor(MenuPackageImpl.Literals.MENU_SEPARATOR, new MenuSeparatorEditor(modelProvider.getEditingDomain()));
+		registerEditor(MenuPackageImpl.Literals.HANDLED_MENU_ITEM, new HandledMenuItemEditor(modelProvider.getEditingDomain(), modelProvider));
+		registerEditor(MenuPackageImpl.Literals.DIRECT_MENU_ITEM, new DirectMenuItemEditor(modelProvider.getEditingDomain(), this, project));
+		
+		registerEditor(BasicPackageImpl.Literals.PART, new PartEditor(modelProvider.getEditingDomain(),project));
+		registerEditor(BasicPackageImpl.Literals.WINDOW, new WindowEditor(modelProvider.getEditingDomain()));
+		registerEditor(BasicPackageImpl.Literals.TRIMMED_WINDOW, new TrimmedWindowEditor(modelProvider.getEditingDomain()));
+		registerEditor(BasicPackageImpl.Literals.PART_SASH_CONTAINER, new PartSashContainerEditor(modelProvider.getEditingDomain(), this));
+		registerEditor(BasicPackageImpl.Literals.PART_STACK, new PartStackEditor(modelProvider.getEditingDomain(),this));
+		registerEditor(BasicPackageImpl.Literals.INPUT_PART, new InputPartEditor(modelProvider.getEditingDomain(), project));
+		registerEditor(BasicPackageImpl.Literals.TRIM_BAR, new TrimBarEditor(modelProvider.getEditingDomain(), this));
+		
+		registerEditor(org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl.Literals.PART_DESCRIPTOR, new PartDescriptorEditor(modelProvider.getEditingDomain(),project));
+		
+		registerEditor(AdvancedPackageImpl.Literals.PERSPECTIVE_STACK, new PerspectiveStackEditor(modelProvider.getEditingDomain(),this));
+		registerEditor(AdvancedPackageImpl.Literals.PERSPECTIVE, new PerspectiveEditor(modelProvider.getEditingDomain(),this));
+		registerEditor(AdvancedPackageImpl.Literals.PLACEHOLDER, new PlaceholderEditor(modelProvider.getEditingDomain()));
 	}
 
 	public void registerEditor(EClass eClass, AbstractComponentEditor editor) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java
index 4601f74..a63049b 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java
@@ -17,9 +17,13 @@
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
@@ -41,10 +45,11 @@
 	private Image image;
 	private EMFDataBindingContext context;
 
-	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
-	private IListProperty BINDING_CONTAINER__BINDINGS = EMFProperties.list(MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES);
-	private IListProperty APPLICATION__COMMANDS = EMFProperties.list(MApplicationPackage.Literals.APPLICATION__COMMANDS);
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+	private IListProperty BINDING_CONTAINER__BINDINGS = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES);
+	private IListProperty APPLICATION__COMMANDS = EMFProperties.list(ApplicationPackageImpl.Literals.APPLICATION__COMMANDS);
+	private IListProperty PART_DESCRIPTOR_CONTAINER__DESCRIPTORS = EMFProperties.list(BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
 	public ApplicationEditor(EditingDomain editingDomain) {
 		super(editingDomain);
@@ -54,7 +59,7 @@
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Application.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -66,12 +71,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Application";
+		return Messages.ApplicationEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Application bla, bla, bla";
+		return Messages.ApplicationEditor_Description;
 	}
 
 	@Override
@@ -92,13 +97,13 @@
 
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.ApplicationEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 		
 		ControlFactory.createBindingsWidget(parent, this);
@@ -109,7 +114,16 @@
 	@Override
 	public IObservableList getChildList(Object element) {
 		WritableList list = new WritableList();
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, "Handlers") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, Messages.ApplicationEditor_Handlers) {
+
+			@Override
+			protected boolean accepted(Object o) {
+				return true;
+			}
+
+		});
+		
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PART_DESCRIPTORS, PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, element, Messages.ApplicationEditor_PartDescriptors) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -118,7 +132,7 @@
 
 		});
 
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_BINDING_TABLE, BINDING_CONTAINER__BINDINGS, element, "BindingTables") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_BINDING_TABLE, BINDING_CONTAINER__BINDINGS, element, Messages.ApplicationEditor_BindingTables) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -127,7 +141,7 @@
 
 		});
 
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_COMMAND, APPLICATION__COMMANDS, element, "Commands") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_COMMAND, APPLICATION__COMMANDS, element, Messages.ApplicationEditor_Commands) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -136,7 +150,7 @@
 
 		});
 
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_WINDOWS, ELEMENT_CONTAINER__CHILDREN, element, "Windows") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_WINDOWS, ELEMENT_CONTAINER__CHILDREN, element, Messages.ApplicationEditor_Windows) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -150,8 +164,6 @@
 
 	@Override
 	public String getDetailLabel(Object element) {
-		// TODO Auto-generated method stub
 		return null;
 	}
-
-}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/BindingTableEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/BindingTableEditor.java
index 382baea..a7506e0 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/BindingTableEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/BindingTableEditor.java
@@ -17,13 +17,15 @@
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MBindingTable;
-import org.eclipse.e4.ui.model.application.MHandler;
-import org.eclipse.e4.ui.model.application.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
@@ -61,7 +63,7 @@
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 	
-	private IListProperty BINDING_TABLE__BINDINGS = EMFProperties.list(MApplicationPackage.Literals.BINDING_TABLE__BINDINGS);
+	private IListProperty BINDING_TABLE__BINDINGS = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS);
 
 
 	public BindingTableEditor(EditingDomain editingDomain, ModelEditor editor) {
@@ -73,7 +75,8 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/BindingTable.png")); //$NON-NLS-1$
+//				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/BindingTable.gif"));
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -85,12 +88,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "BindingTable";
+		return Messages.BindingTableEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "BindingTable bla bla bla";
+		return Messages.BindingTableEditor_Description;
 	}
 
 	@Override
@@ -111,31 +114,31 @@
 
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.BindingTableEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 		
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Context Id");
+			l.setText(Messages.BindingTableEditor_ContextId);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.BINDING_TABLE__BINDING_CONTEXT_ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.BINDING_TABLE__BINDING_CONTEXT_ID).observeDetail(getMaster()));
 
 			Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
 			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");			
+			b.setText(Messages.BindingTableEditor_Find);			
 		}
 		
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Keybindings");
+			l.setText(Messages.BindingTableEditor_Keybindings);
 			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
 			final TableViewer viewer = new TableViewer(parent);
@@ -148,33 +151,33 @@
 			viewer.getTable().setHeaderVisible(true);
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.KEY_SEQUENCE__KEY_SEQUENCE);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.KEY_SEQUENCE__KEY_SEQUENCE);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("KeySequence");
+				column.getColumn().setText(Messages.BindingTableEditor_KeySequence);
 				column.getColumn().setWidth(100);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
 			}
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MApplicationPackage.Literals.KEY_BINDING__COMMAND, MApplicationPackage.Literals.COMMAND__COMMAND_NAME));
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(CommandsPackageImpl.Literals.KEY_BINDING__COMMAND, CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME));
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Command");
+				column.getColumn().setText(Messages.BindingTableEditor_Command);
 				column.getColumn().setWidth(200);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
 			}
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Id");
+				column.getColumn().setText(Messages.BindingTableEditor_Id);
 				column.getColumn().setWidth(170);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
 			}
 			
-			IEMFListProperty prop = EMFProperties.list(MApplicationPackage.Literals.BINDING_TABLE__BINDINGS);
+			IEMFListProperty prop = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS);
 			viewer.setInput(prop.observeDetail(getMaster()));
 
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -187,7 +190,7 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.BindingTableEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -200,7 +203,7 @@
 							MBindingTable container = (MBindingTable) getMaster().getValue();
 							int idx = container.getBindings().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_TABLE__BINDINGS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -214,7 +217,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.BindingTableEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -227,7 +230,7 @@
 							MBindingTable container = (MBindingTable) getMaster().getValue();
 							int idx = container.getBindings().indexOf(obj) + 1;
 							if( idx < container.getBindings().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_TABLE__BINDINGS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -241,15 +244,15 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add ...");
+			b.setText(Messages.BindingTableEditor_Add);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MKeyBinding handler = MApplicationFactory.eINSTANCE.createKeyBinding();
+					MKeyBinding handler = MCommandsFactory.INSTANCE.createKeyBinding();
 					System.err.println(getMaster().getValue());
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_TABLE__BINDINGS, handler);
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS, handler);
 
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -259,7 +262,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.BindingTableEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -267,7 +270,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> keybinding = ((IStructuredSelection)viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_TABLE__BINDINGS, keybinding);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS, keybinding);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -298,7 +301,7 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.BINDING_TABLE__BINDING_CONTEXT_ID)	
+			FeaturePath.fromList(CommandsPackageImpl.Literals.BINDING_TABLE__BINDING_CONTEXT_ID)	
 		};
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CommandEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CommandEditor.java
index 85b70bb..d22f35d 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CommandEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/CommandEditor.java
@@ -15,11 +15,13 @@
 
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MCommand;
-import org.eclipse.e4.ui.model.application.MCommandParameter;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.commands.MCommandParameter;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -70,7 +72,7 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Command.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -82,12 +84,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Command";
+		return Messages.CommandEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Command bla bla bla";
+		return Messages.CommandEditor_Description;
 	}
 
 	@Override
@@ -108,31 +110,31 @@
 
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.CommandEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Name");
+			l.setText(Messages.CommandEditor_Name);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.COMMAND__COMMAND_NAME).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Description");
+			l.setText(Messages.CommandEditor_LabelDescription);
 			l.setLayoutData(new GridData(GridData.BEGINNING,GridData.BEGINNING,false,false));
 
 			Text t = new Text(parent, SWT.BORDER|SWT.H_SCROLL|SWT.V_SCROLL);
@@ -140,13 +142,13 @@
 			gd.horizontalSpan = 2;
 			gd.heightHint=100;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.COMMAND__DESCRIPTION).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND__DESCRIPTION).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Parameters");
+			l.setText(Messages.CommandEditor_Parameters);
 			l.setLayoutData(new GridData(GridData.BEGINNING,GridData.BEGINNING,false,false));
 
 			final TableViewer viewer = new TableViewer(parent,SWT.FULL_SELECTION|SWT.MULTI|SWT.BORDER);
@@ -159,10 +161,10 @@
 			viewer.getControl().setLayoutData(gd);
 
 			{
-				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.COMMAND_PARAMETER__NAME);
+				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND_PARAMETER__NAME);
 				
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Name");
+				column.getColumn().setText(Messages.CommandEditor_ParameterName);
 				column.getColumn().setWidth(200);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MCommandParameter>(prop.observeDetail(cp.getKnownElements())));
 				column.setEditingSupport(new EditingSupport(viewer) {
@@ -170,7 +172,7 @@
 					
 					@Override
 					protected void setValue(Object element, Object value) {
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.COMMAND_PARAMETER__NAME, value);
+						Command cmd = SetCommand.create(getEditingDomain(), element, CommandsPackageImpl.Literals.COMMAND_PARAMETER__NAME, value);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -179,7 +181,7 @@
 					@Override
 					protected Object getValue(Object element) {
 						MCommandParameter obj = (MCommandParameter) element;
-						return obj.getName() != null ? obj.getName() : "";
+						return obj.getName() != null ? obj.getName() : ""; //$NON-NLS-1$
 					}
 					
 					@Override
@@ -195,10 +197,10 @@
 			}
 
 			{
-				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.COMMAND_PARAMETER__TYPE_ID);
+				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND_PARAMETER__TYPE_ID);
 				
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Type-Id");
+				column.getColumn().setText(Messages.CommandEditor_ParameterTypeId);
 				column.getColumn().setWidth(200);				
 				column.setLabelProvider(new ObservableColumnLabelProvider<MCommandParameter>(prop.observeDetail(cp.getKnownElements())));
 				column.setEditingSupport(new EditingSupport(viewer) {
@@ -206,7 +208,7 @@
 					
 					@Override
 					protected void setValue(Object element, Object value) {
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.COMMAND_PARAMETER__TYPE_ID, value);
+						Command cmd = SetCommand.create(getEditingDomain(), element, CommandsPackageImpl.Literals.COMMAND_PARAMETER__TYPE_ID, value);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -215,7 +217,7 @@
 					@Override
 					protected Object getValue(Object element) {
 						MCommandParameter obj = (MCommandParameter) element;
-						return obj.getTypeId() != null ? obj.getTypeId() : "";
+						return obj.getTypeId() != null ? obj.getTypeId() : ""; //$NON-NLS-1$
 					}
 					
 					@Override
@@ -231,24 +233,24 @@
 			}
 
 			{
-				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.COMMAND_PARAMETER__OPTIONAL);
+				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND_PARAMETER__OPTIONAL);
 				
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Optional");
+				column.getColumn().setText(Messages.CommandEditor_ParameterOptional);
 				column.getColumn().setWidth(200);				
 				column.setLabelProvider(new ObservableColumnLabelProvider<MCommandParameter>(prop.observeDetail(cp.getKnownElements())) {
 					@Override
 					public String getText(MCommandParameter element) {
-						return element.isOptional() ? "yes" : "no";
+						return element.isOptional() ? Messages.CommandEditor_ParameterOptional_Yes : Messages.CommandEditor_ParameterOptional_No;
 					}
 				});
 				column.setEditingSupport(new EditingSupport(viewer) {
-					private ComboBoxCellEditor editor = new ComboBoxCellEditor(viewer.getTable(), new String[] { "yes", "no" });
+					private ComboBoxCellEditor editor = new ComboBoxCellEditor(viewer.getTable(), new String[] { Messages.CommandEditor_ParameterOptional_Yes, Messages.CommandEditor_ParameterOptional_No });
 					
 					@Override
 					protected void setValue(Object element, Object value) {
 						int idx = ((Number)value).intValue();
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.COMMAND_PARAMETER__OPTIONAL, idx == 0);
+						Command cmd = SetCommand.create(getEditingDomain(), element, CommandsPackageImpl.Literals.COMMAND_PARAMETER__OPTIONAL, idx == 0);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -286,7 +288,7 @@
 			TableViewerEditor.create(viewer, editorActivationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR);
 
 			
-			IEMFEditListProperty mProp = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.COMMAND__PARAMETERS);
+			IEMFEditListProperty mProp = EMFEditProperties.list(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND__PARAMETERS);
 			viewer.setInput(mProp.observeDetail(getMaster()));
 
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -299,24 +301,24 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.CommandEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.CommandEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add ...");
+			b.setText(Messages.CommandEditor_Add);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MCommandParameter param = MApplicationFactory.eINSTANCE.createCommandParameter();
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.COMMAND__PARAMETERS, param);
+					MCommandParameter param = MCommandsFactory.INSTANCE.createCommandParameter();
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.COMMAND__PARAMETERS, param);
 					
 					if( cmd.canExecute() ) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -326,7 +328,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.CommandEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 		}
@@ -338,7 +340,6 @@
 
 	@Override
 	public IObservableList getChildList(Object element) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
@@ -355,7 +356,7 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.COMMAND__COMMAND_NAME)	
+			FeaturePath.fromList(CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME)	
 		};
 	}
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java
index a015606..b918e97 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ControlFactory.java
@@ -1,12 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal.common.component;
 
 import java.util.Arrays;
 import java.util.List;
 
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationElement;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.IEMFListProperty;
@@ -36,7 +48,7 @@
 public class ControlFactory {
 	public static void createBindingsWidget(Composite parent, final AbstractComponentEditor editor) {
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Bindings");
+			l.setText(Messages.ControlFactory_BindingContexts);
 			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 			
 			final Text t = new Text(parent, SWT.BORDER);
@@ -45,19 +57,19 @@
 				@Override
 				public void keyPressed(KeyEvent e) {
 					if (e.keyCode == SWT.CR || e.keyCode == SWT.LF) {
-						handleAddText( editor, MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS, t);
+						handleAddText( editor, CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS, t);
 					}
 				}
 			});
 			
 			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
-			b.setText("Add");
+			b.setText(Messages.ControlFactory_Add);
 			b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					handleAddText( editor, MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS, t);
+					handleAddText( editor, CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS, t);
 				}
 			});
 			
@@ -70,7 +82,7 @@
 			gd.heightHint = 150;
 			viewer.getControl().setLayoutData(gd);
 			
-			IEMFListProperty prop = EMFProperties.list(MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS);
+			IEMFListProperty prop = EMFProperties.list(CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS);
 			viewer.setInput(prop.observeDetail(editor.getMaster()));
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -83,7 +95,7 @@
 			buttonComp.setLayout(gl);
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.ControlFactory_Up);
 			b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -96,7 +108,7 @@
 							MApplication container = (MApplication) editor.getMaster().getValue();
 							int idx = container.getCommands().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS, obj, idx);
+								Command cmd = MoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									editor.getEditingDomain().getCommandStack().execute(cmd);
@@ -110,7 +122,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.ControlFactory_Down);
 			b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -123,7 +135,7 @@
 							MApplication container = (MApplication) editor.getMaster().getValue();
 							int idx = container.getCommands().indexOf(obj) + 1;
 							if( idx < container.getCommands().size() ) {
-								Command cmd = MoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS, obj, idx);
+								Command cmd = MoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									editor.getEditingDomain().getCommandStack().execute(cmd);
@@ -137,7 +149,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.ControlFactory_Remove);
 			b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -146,7 +158,7 @@
 					if( ! viewer.getSelection().isEmpty() ) {
 						MApplication el = (MApplication) editor.getMaster().getValue();
 						List<?> ids = ((IStructuredSelection)viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(editor.getEditingDomain(), el, MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS, ids);
+						Command cmd = RemoveCommand.create(editor.getEditingDomain(), el, CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS, ids);
 						if( cmd.canExecute() ) {
 							editor.getEditingDomain().getCommandStack().execute(cmd);
 							if( el.getBindingContexts().size() > 0 ) {
@@ -160,7 +172,7 @@
 	
 	public static void createTagsWidget( Composite parent, final AbstractComponentEditor editor ) {
 		Label l = new Label(parent, SWT.NONE);
-		l.setText("Tags");
+		l.setText(Messages.ControlFactory_Tags);
 		l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 		final Text tagText = new Text(parent, SWT.BORDER);
@@ -169,17 +181,17 @@
 			@Override
 			public void keyPressed(KeyEvent e) {
 				if (e.keyCode == SWT.CR || e.keyCode == SWT.LF) {
-					handleAddText(editor, MApplicationPackage.Literals.APPLICATION_ELEMENT__TAGS, tagText);
+					handleAddText(editor, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, tagText);
 				}
 			}
 		});
 
 		Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
-		b.setText("Add");
+		b.setText(Messages.ControlFactory_Add);
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
-				handleAddText(editor, MApplicationPackage.Literals.APPLICATION_ELEMENT__TAGS, tagText);
+				handleAddText(editor, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, tagText);
 			}
 		});
 		b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.TABLE_ADD_IMAGE));
@@ -198,7 +210,7 @@
 		gd.heightHint = 120;
 		viewer.getControl().setLayoutData(gd);
 
-		IEMFEditListProperty prop = EMFEditProperties.list(editor.getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__TAGS);
+		IEMFEditListProperty prop = EMFEditProperties.list(editor.getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS);
 		viewer.setInput(prop.observeDetail(editor.getMaster()));
 
 		Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -211,17 +223,17 @@
 		buttonComp.setLayout(gl);
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Up");
+		b.setText(Messages.ControlFactory_Up);
 		b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.ARROW_UP));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Down");
+		b.setText(Messages.ControlFactory_Down);
 		b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.ARROW_DOWN));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Remove");
+		b.setText(Messages.ControlFactory_Remove);
 		b.setImage(editor.getImage(b.getDisplay(), AbstractComponentEditor.TABLE_DELETE_IMAGE));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 		b.addSelectionListener(new SelectionAdapter() {
@@ -230,7 +242,7 @@
 				IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
 				if( ! s.isEmpty() ) {
 					MApplicationElement appEl = (MApplicationElement) editor.getMaster().getValue();
-					Command cmd = RemoveCommand.create(editor.getEditingDomain(), appEl, MApplicationPackage.Literals.APPLICATION_ELEMENT__TAGS, s.toList());
+					Command cmd = RemoveCommand.create(editor.getEditingDomain(), appEl, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, s.toList());
 					if( cmd.canExecute() ) {
 						editor.getEditingDomain().getCommandStack().execute(cmd);
 					}
@@ -241,7 +253,7 @@
 
 	private static void handleAddText( AbstractComponentEditor editor, EStructuralFeature feature, Text tagText) {
 		if (tagText.getText().trim().length() > 0) {
-			String[] tags = tagText.getText().split(";");
+			String[] tags = tagText.getText().split(";"); //$NON-NLS-1$
 			for( int i = 0; i < tags.length;i++ ) {
 				tags[i] = tags[i].trim();
 			}
@@ -251,7 +263,7 @@
 			if (cmd.canExecute()) {
 				editor.getEditingDomain().getCommandStack().execute(cmd);
 			}
-			tagText.setText("");
+			tagText.setText(""); //$NON-NLS-1$
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java
index b7065fd..e5b3762 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectMenuItemEditor.java
@@ -15,10 +15,11 @@
 
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.ContributionClassDialog;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
 import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -40,7 +41,7 @@
 	private IProject project;
 	
 	public DirectMenuItemEditor(EditingDomain editingDomain, ModelEditor editor, IProject project) {
-		super(editingDomain, editor);
+		super(editingDomain);
 		this.project = project;
 	}
 
@@ -48,7 +49,7 @@
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectMenuItem.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -60,12 +61,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "DirectMenuItem";
+		return Messages.DirectMenuItemEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "DirectMenuItem bla bla bla";
+		return Messages.DirectMenuItemEditor_Description;
 	}
 	
 	@Override
@@ -75,15 +76,15 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Class URI");
+			l.setText(Messages.DirectMenuItemEditor_ClassURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI).observeDetail(master));
 
 			final Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
 			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");
+			b.setText(Messages.DirectMenuItemEditor_Find);
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java
index b076239..fd09657 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/DirectToolItemEditor.java
@@ -15,9 +15,10 @@
 
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.ContributionClassDialog;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
 import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -47,7 +48,7 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/DirectToolItem.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -63,14 +64,14 @@
 		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
 
 		Label l = new Label(parent, SWT.NONE);
-		l.setText("Class URI");
+		l.setText(Messages.DirectToolItemEditor_ClassURI);
 
 		Text t = new Text(parent, SWT.BORDER);
 		t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value( getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__URI).observeDetail(master));
+		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value( getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI).observeDetail(master));
 
 		final Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
-		b.setText("Find ...");
+		b.setText(Messages.DirectToolItemEditor_Find);
 		b.setImage(getImage(b.getDisplay(), SEARCH_IMAGE));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
 		b.addSelectionListener(new SelectionAdapter() {
@@ -84,11 +85,11 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Direct Tool Item";
+		return Messages.DirectToolItemEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Direct Tool Item bla bla bla";
+		return Messages.DirectToolItemEditor_Description;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java
index adf83a1..1689160 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledMenuItemEditor.java
@@ -14,12 +14,17 @@
 import java.net.URL;
 
 import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.e4.tools.emf.ui.common.IModelResource;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
-import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MHandledItem;
-import org.eclipse.e4.ui.model.application.MParameter;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.HandledMenuItemCommandSelectionDialog;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MParameter;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -58,16 +63,18 @@
 
 public class HandledMenuItemEditor extends MenuItemEditor {
 	private Image image;
+	private IModelResource resource;
 
-	public HandledMenuItemEditor(EditingDomain editingDomain, ModelEditor editor) {
-		super(editingDomain, editor);
+	public HandledMenuItemEditor(EditingDomain editingDomain, IModelResource resource) {
+		super(editingDomain);
+		this.resource = resource;
 	}
 
 	@Override
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledMenuItem.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -79,12 +86,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "HandledMenuItem";
+		return Messages.HandledMenuItemEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "HandledMenuItem bla bla bla";
+		return Messages.HandledMenuItemEditor_Description;
 	}
 
 	@Override
@@ -94,23 +101,30 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Command");
+			l.setText(Messages.HandledMenuItemEditor_Command);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			t.setEnabled(false);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MApplicationPackage.Literals.HANDLED_ITEM__COMMAND, MApplicationPackage.Literals.APPLICATION_ELEMENT__ID)).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID)).observeDetail(master));
 
-			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
-			b.setText("Find ...");
+			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.HandledMenuItemEditor_Find);
 			b.setImage(getImage(b.getDisplay(), SEARCH_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					HandledMenuItemCommandSelectionDialog dialog = new HandledMenuItemCommandSelectionDialog(b.getShell(), (MHandledItem) getMaster().getValue(), resource);
+					dialog.open();
+				}
+			});
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Parameters");
+			l.setText(Messages.HandledMenuItemEditor_Parameters);
 			l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 			final TableViewer tableviewer = new TableViewer(parent);
@@ -123,10 +137,10 @@
 			tableviewer.setContentProvider(cp);
 
 			{
-				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PARAMETER__TAG);
+				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.PARAMETER__NAME);
 
 				TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-				column.getColumn().setText("Tag");
+				column.getColumn().setText(Messages.HandledMenuItemEditor_Tag);
 				column.getColumn().setWidth(200);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MParameter>(prop.observeDetail(cp.getKnownElements())));
 				column.setEditingSupport(new EditingSupport(tableviewer) {
@@ -134,7 +148,7 @@
 
 					@Override
 					protected void setValue(Object element, Object value) {
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.PARAMETER__TAG, value);
+						Command cmd = SetCommand.create(getEditingDomain(), element, CommandsPackageImpl.Literals.PARAMETER__NAME, value);
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -142,8 +156,8 @@
 
 					@Override
 					protected Object getValue(Object element) {
-						String val = ((MParameter) element).getTag();
-						return val == null ? "" : val;
+						String val = ((MParameter) element).getName();
+						return val == null ? "" : val; //$NON-NLS-1$
 					}
 
 					@Override
@@ -159,10 +173,10 @@
 			}
 
 			{
-				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PARAMETER__VALUE);
+				IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.PARAMETER__VALUE);
 
 				TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-				column.getColumn().setText("Value");
+				column.getColumn().setText(Messages.HandledMenuItemEditor_Value);
 				column.getColumn().setWidth(200);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MParameter>(prop.observeDetail(cp.getKnownElements())));
 				column.setEditingSupport(new EditingSupport(tableviewer) {
@@ -170,7 +184,7 @@
 
 					@Override
 					protected void setValue(Object element, Object value) {
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.PARAMETER__VALUE, value);
+						Command cmd = SetCommand.create(getEditingDomain(), element, CommandsPackageImpl.Literals.PARAMETER__VALUE, value);
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -179,7 +193,7 @@
 					@Override
 					protected Object getValue(Object element) {
 						String val = ((MParameter) element).getValue();
-						return val == null ? "" : val;
+						return val == null ? "" : val; //$NON-NLS-1$
 					}
 
 					@Override
@@ -205,7 +219,7 @@
 			};
 			TableViewerEditor.create(tableviewer, editorActivationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR);
 
-			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.HANDLED_ITEM__PARAMETERS);
+			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
 			tableviewer.setInput(prop.observeDetail(master));
 
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -218,25 +232,25 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.HandledMenuItemEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.HandledMenuItemEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add ...");
+			b.setText(Messages.HandledMenuItemEditor_Add);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
 					MHandledItem item = (MHandledItem) master.getValue();
-					MParameter param = MApplicationFactory.eINSTANCE.createParameter();
-					Command cmd = AddCommand.create(getEditingDomain(), item, MApplicationPackage.Literals.HANDLED_ITEM__PARAMETERS, param);
+					MParameter param = MCommandsFactory.INSTANCE.createParameter();
+					Command cmd = AddCommand.create(getEditingDomain(), item, MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS, param);
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
 						tableviewer.editElement(param, 0);
@@ -245,14 +259,14 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.HandledMenuItemEditor_Remove);
 			b.addSelectionListener(new SelectionAdapter() {
 
 				public void widgetSelected(SelectionEvent e) {
 					IStructuredSelection s = (IStructuredSelection) tableviewer.getSelection();
 					if (!s.isEmpty()) {
 						MHandledItem item = (MHandledItem) master.getValue();
-						Command cmd = RemoveCommand.create(getEditingDomain(), item, MApplicationPackage.Literals.HANDLED_ITEM__PARAMETERS, s.toList());
+						Command cmd = RemoveCommand.create(getEditingDomain(), item, MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS, s.toList());
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java
index be54826..a442f71 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandledToolItemEditor.java
@@ -14,11 +14,17 @@
 import java.net.URL;
 
 import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.e4.tools.emf.ui.common.IModelResource;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MHandledItem;
-import org.eclipse.e4.ui.model.application.MParameter;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.HandledToolItemCommandSelectionDialog;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MParameter;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -57,16 +63,18 @@
 
 public class HandledToolItemEditor extends ToolItemEditor {
 	private Image image;
+	private IModelResource resource;
 
-	public HandledToolItemEditor(EditingDomain editingDomain) {
+	public HandledToolItemEditor(EditingDomain editingDomain, IModelResource resource) {
 		super(editingDomain);
+		this.resource = resource;
 	}
 
 	@Override
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/HandledToolItem.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -80,23 +88,32 @@
 	protected void createSubTypeFormElements(Composite parent, EMFDataBindingContext context, final WritableValue master) {
 		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
 
-		Label l = new Label(parent, SWT.NONE);
-		l.setText("Command");
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.HandledToolItemEditor_Command);
 
-		Text t = new Text(parent, SWT.BORDER);
-		t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		t.setEnabled(false);
-		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value( getEditingDomain(), FeaturePath.fromList(MApplicationPackage.Literals.HANDLED_ITEM__COMMAND, MApplicationPackage.Literals.APPLICATION_ELEMENT__ID)).observeDetail(master));
+			Text t = new Text(parent, SWT.BORDER);
+			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			t.setEnabled(false);
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID)).observeDetail(master));
 
-		Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
-		b.setText("Find ...");
-		b.setImage(getImage(b.getDisplay(), SEARCH_IMAGE));
-		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
+			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.HandledToolItemEditor_Find);
+			b.setImage(getImage(b.getDisplay(), SEARCH_IMAGE));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					HandledToolItemCommandSelectionDialog dialog = new HandledToolItemCommandSelectionDialog(b.getShell(), (MHandledItem) getMaster().getValue(), resource);
+					dialog.open();
+				}
+			});
+		}
 
 		// ------------------------------------------------------------
 
-		l = new Label(parent, SWT.NONE);
-		l.setText("Parameters");
+		Label l = new Label(parent, SWT.NONE);
+		l.setText(Messages.HandledToolItemEditor_Parameters);
 		l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 		final TableViewer tableviewer = new TableViewer(parent);
@@ -107,12 +124,12 @@
 
 		ObservableListContentProvider cp = new ObservableListContentProvider();
 		tableviewer.setContentProvider(cp);
-		
+
 		{
-			IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PARAMETER__TAG);
-			
+			IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.PARAMETER__NAME);
+
 			TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Tag");
+			column.getColumn().setText(Messages.HandledToolItemEditor_ParametersName);
 			column.getColumn().setWidth(200);
 			column.setLabelProvider(new ObservableColumnLabelProvider<MParameter>(prop.observeDetail(cp.getKnownElements())));
 			column.setEditingSupport(new EditingSupport(tableviewer) {
@@ -120,16 +137,16 @@
 
 				@Override
 				protected void setValue(Object element, Object value) {
-					Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PARAMETER__TAG, value);
-					if( cmd.canExecute() ) {
+					Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.PARAMETER__NAME, value);
+					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
 					}
 				}
 
 				@Override
 				protected Object getValue(Object element) {
-					String val = ((MParameter)element).getTag();
-					return val == null ? "" : val;
+					String val = ((MParameter) element).getName();
+					return val == null ? "" : val; //$NON-NLS-1$
 				}
 
 				@Override
@@ -145,10 +162,10 @@
 		}
 
 		{
-			IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PARAMETER__VALUE);
-			
+			IEMFValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.PARAMETER__VALUE);
+
 			TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Value");
+			column.getColumn().setText(Messages.HandledToolItemEditor_ParametersValue);
 			column.getColumn().setWidth(200);
 			column.setLabelProvider(new ObservableColumnLabelProvider<MParameter>(prop.observeDetail(cp.getKnownElements())));
 			column.setEditingSupport(new EditingSupport(tableviewer) {
@@ -156,16 +173,16 @@
 
 				@Override
 				protected void setValue(Object element, Object value) {
-					Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PARAMETER__VALUE, value);
-					if( cmd.canExecute() ) {
+					Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.PARAMETER__VALUE, value);
+					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
 					}
 				}
 
 				@Override
 				protected Object getValue(Object element) {
-					String val = ((MParameter)element).getValue();
-					return val == null ? "" : val;
+					String val = ((MParameter) element).getValue();
+					return val == null ? "" : val; //$NON-NLS-1$
 				}
 
 				@Override
@@ -180,53 +197,50 @@
 			});
 		}
 
-
 		ColumnViewerEditorActivationStrategy editorActivationStrategy = new ColumnViewerEditorActivationStrategy(tableviewer) {
 			@Override
 			protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
-				boolean singleSelect = ((IStructuredSelection)tableviewer.getSelection()).size() == 1;
-				boolean isLeftDoubleMouseSelect = event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION && ((MouseEvent)event.sourceEvent).button == 1;
+				boolean singleSelect = ((IStructuredSelection) tableviewer.getSelection()).size() == 1;
+				boolean isLeftDoubleMouseSelect = event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION && ((MouseEvent) event.sourceEvent).button == 1;
 
-				return singleSelect && (isLeftDoubleMouseSelect
-						|| event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC
-						|| event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL);
+				return singleSelect && (isLeftDoubleMouseSelect || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL);
 			}
 		};
 		TableViewerEditor.create(tableviewer, editorActivationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR);
 
-		IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.HANDLED_ITEM__PARAMETERS);
+		IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS);
 		tableviewer.setInput(prop.observeDetail(getMaster()));
-		
+
 		Composite buttonComp = new Composite(parent, SWT.NONE);
-		buttonComp.setLayoutData(new GridData(GridData.FILL,GridData.END,false,false));
+		buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
 		GridLayout gl = new GridLayout();
-		gl.marginLeft=0;
-		gl.marginRight=0;
-		gl.marginWidth=0;
-		gl.marginHeight=0;
+		gl.marginLeft = 0;
+		gl.marginRight = 0;
+		gl.marginWidth = 0;
+		gl.marginHeight = 0;
 		buttonComp.setLayout(gl);
 
-		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Up");
+		Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+		b.setText(Messages.HandledToolItemEditor_Up);
 		b.setImage(getImage(b.getDisplay(), ARROW_UP));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Down");
+		b.setText(Messages.HandledToolItemEditor_Down);
 		b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Add ...");
+		b.setText(Messages.HandledToolItemEditor_Add);
 		b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				MHandledItem item = (MHandledItem) master.getValue();
-				MParameter param = MApplicationFactory.eINSTANCE.createParameter();
-				Command cmd = AddCommand.create(getEditingDomain(), item, MApplicationPackage.Literals.HANDLED_ITEM__PARAMETERS, param);
-				if( cmd.canExecute() ) {
+				MParameter param = MCommandsFactory.INSTANCE.createParameter();
+				Command cmd = AddCommand.create(getEditingDomain(), item, MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS, param);
+				if (cmd.canExecute()) {
 					getEditingDomain().getCommandStack().execute(cmd);
 				}
 				tableviewer.editElement(param, 0);
@@ -234,15 +248,15 @@
 		});
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Remove");
+		b.setText(Messages.HandledToolItemEditor_Remove);
 		b.addSelectionListener(new SelectionAdapter() {
 
 			public void widgetSelected(SelectionEvent e) {
 				IStructuredSelection s = (IStructuredSelection) tableviewer.getSelection();
-				if( !s.isEmpty() ) {
+				if (!s.isEmpty()) {
 					MHandledItem item = (MHandledItem) master.getValue();
-					Command cmd = RemoveCommand.create(getEditingDomain(), item, MApplicationPackage.Literals.HANDLED_ITEM__PARAMETERS, s.toList());
-					if( cmd.canExecute() ) {
+					Command cmd = RemoveCommand.create(getEditingDomain(), item, MenuPackageImpl.Literals.HANDLED_ITEM__PARAMETERS, s.toList());
+					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
 					}
 				}
@@ -256,11 +270,11 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Handled Tool Item";
+		return Messages.HandledToolItemEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Handled Tool Item bla bla bla";
+		return Messages.HandledToolItemEditor_Description;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java
index 714683f..5507efc 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/HandlerEditor.java
@@ -17,11 +17,13 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.ContributionClassDialog;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.HandlerCommandSelectionDialog;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
 import org.eclipse.e4.ui.model.application.MContribution;
-import org.eclipse.e4.ui.model.application.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
@@ -57,7 +59,7 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Handler.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -68,12 +70,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Handler";
+		return Messages.HandlerEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Handler bla bla bla";
+		return Messages.HandlerEditor_Description;
 	}
 
 	@Override
@@ -95,27 +97,27 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.HandlerEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Command");
+			l.setText(Messages.HandlerEditor_Command);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			t.setEnabled(false);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MApplicationPackage.Literals.HANDLER__COMMAND, MApplicationPackage.Literals.APPLICATION_ELEMENT__ID)).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(CommandsPackageImpl.Literals.HANDLER__COMMAND, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID)).observeDetail(getMaster()));
 
 			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
-			b.setText("Find ...");
+			b.setText(Messages.HandlerEditor_Find);
 			b.setImage(getImage(b.getDisplay(), SEARCH_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -130,15 +132,15 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Class URI");
+			l.setText(Messages.HandlerEditor_ClassURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__URI).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI).observeDetail(getMaster()));
 
 			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
 			b.setImage(getImage(b.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");
+			b.setText(Messages.HandlerEditor_Find);
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
@@ -156,7 +158,6 @@
 
 	@Override
 	public IObservableList getChildList(Object element) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
@@ -172,6 +173,6 @@
 
 	@Override
 	public FeaturePath[] getLabelProperties() {
-		return new FeaturePath[] { FeaturePath.fromList(MApplicationPackage.Literals.HANDLER__COMMAND, MApplicationPackage.Literals.COMMAND__COMMAND_NAME) };
+		return new FeaturePath[] { FeaturePath.fromList(CommandsPackageImpl.Literals.HANDLER__COMMAND, CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME) };
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/InputPartEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/InputPartEditor.java
index ff97bd3..c81967a 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/InputPartEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/InputPartEditor.java
@@ -12,7 +12,8 @@
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -33,7 +34,7 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "InputPart";
+		return Messages.InputPartEditor_Label;
 	}
 	
 	@Override
@@ -43,13 +44,13 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("InputURI");
+			l.setText(Messages.InputPartEditor_InputURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.INPUT__INPUT_URI).observeDetail(master));			
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.INPUT__INPUT_URI).observeDetail(master));			
 		}
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/KeyBindingEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/KeyBindingEditor.java
index baf05e7..8ec5723 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/KeyBindingEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/KeyBindingEditor.java
@@ -17,12 +17,14 @@
 import org.eclipse.core.databinding.property.value.IValueProperty;
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.KeyBindingCommandSelectionDialog;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MKeyBinding;
-import org.eclipse.e4.ui.model.application.MKeySequence;
-import org.eclipse.e4.ui.model.application.MParameter;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.MKeySequence;
+import org.eclipse.e4.ui.model.application.commands.MParameter;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -73,7 +75,7 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/KeyBinding.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -85,12 +87,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Binding";
+		return Messages.KeyBindingEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Binding bla bla bla";
+		return Messages.KeyBindingEditor_Description;
 	}
 
 	@Override
@@ -112,39 +114,39 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.KeyBindingEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Sequence");
+			l.setText(Messages.KeyBindingEditor_Sequence);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.KEY_SEQUENCE__KEY_SEQUENCE).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.KEY_SEQUENCE__KEY_SEQUENCE).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Command");
+			l.setText(Messages.KeyBindingEditor_Command);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			t.setEnabled(false);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MApplicationPackage.Literals.KEY_BINDING__COMMAND, MApplicationPackage.Literals.APPLICATION_ELEMENT__ID)).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(CommandsPackageImpl.Literals.KEY_BINDING__COMMAND, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID)).observeDetail(getMaster()));
 
 			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
-			b.setText("Find ...");
+			b.setText(Messages.KeyBindingEditor_Find);
 			b.setImage(getImage(b.getDisplay(), SEARCH_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -157,7 +159,7 @@
 		}
 
 		Label l = new Label(parent, SWT.NONE);
-		l.setText("Parameters");
+		l.setText(Messages.KeyBindingEditor_Parameters);
 		l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 		final TableViewer tableviewer = new TableViewer(parent);
@@ -165,23 +167,23 @@
 		gd.heightHint = 120;
 		tableviewer.getTable().setHeaderVisible(true);
 		tableviewer.getControl().setLayoutData(gd);
-		IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.KEY_BINDING__PARAMETERS);
+		IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS);
 
 		TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-		column.getColumn().setText("Tag");
+		column.getColumn().setText(Messages.KeyBindingEditor_ParametersKey);
 		column.getColumn().setWidth(200);
 		column.setEditingSupport(new EditingSupport(tableviewer) {
 			private TextCellEditor cellEditor = new TextCellEditor(tableviewer.getTable());
 
 			@Override
 			protected void setValue(Object element, Object value) {
-				((MParameter) element).setTag((String) value);
+				((MParameter) element).setName((String) value);
 			}
 
 			@Override
 			protected Object getValue(Object element) {
-				String val = ((MParameter) element).getTag();
-				return val == null ? "" : val;
+				String val = ((MParameter) element).getName();
+				return val == null ? "" : val; //$NON-NLS-1$
 			}
 
 			@Override
@@ -196,7 +198,7 @@
 		});
 
 		column = new TableViewerColumn(tableviewer, SWT.NONE);
-		column.getColumn().setText("Value");
+		column.getColumn().setText(Messages.KeyBindingEditor_ParametersValue);
 		column.getColumn().setWidth(200);
 		column.setEditingSupport(new EditingSupport(tableviewer) {
 			private TextCellEditor cellEditor = new TextCellEditor(tableviewer.getTable());
@@ -209,7 +211,7 @@
 			@Override
 			protected Object getValue(Object element) {
 				String val = ((MParameter) element).getValue();
-				return val == null ? "" : val;
+				return val == null ? "" : val; //$NON-NLS-1$
 			}
 
 			@Override
@@ -234,7 +236,7 @@
 		};
 		TableViewerEditor.create(tableviewer, editorActivationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR);
 
-		ViewerSupport.bind(tableviewer, prop.observeDetail(getMaster()), new IValueProperty[] { EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PARAMETER__TAG), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PARAMETER__VALUE) });
+		ViewerSupport.bind(tableviewer, prop.observeDetail(getMaster()), new IValueProperty[] { EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.PARAMETER__NAME), EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.PARAMETER__VALUE) });
 
 		Composite buttonComp = new Composite(parent, SWT.NONE);
 		buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
@@ -246,25 +248,25 @@
 		buttonComp.setLayout(gl);
 
 		Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Up");
+		b.setText(Messages.KeyBindingEditor_Up);
 		b.setImage(getImage(b.getDisplay(), ARROW_UP));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Down");
+		b.setText(Messages.KeyBindingEditor_Down);
 		b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Add ...");
+		b.setText(Messages.KeyBindingEditor_Add);
 		b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				MKeyBinding item = (MKeyBinding) getMaster().getValue();
-				MParameter param = MApplicationFactory.eINSTANCE.createParameter();
-				Command cmd = AddCommand.create(getEditingDomain(), item, MApplicationPackage.Literals.KEY_BINDING__PARAMETERS, param);
+				MParameter param = MCommandsFactory.INSTANCE.createParameter();
+				Command cmd = AddCommand.create(getEditingDomain(), item, CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS, param);
 				if (cmd.canExecute()) {
 					getEditingDomain().getCommandStack().execute(cmd);
 				}
@@ -273,14 +275,14 @@
 		});
 
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-		b.setText("Remove");
+		b.setText(Messages.KeyBindingEditor_Remove);
 		b.addSelectionListener(new SelectionAdapter() {
 
 			public void widgetSelected(SelectionEvent e) {
 				IStructuredSelection s = (IStructuredSelection) tableviewer.getSelection();
 				if (!s.isEmpty()) {
 					MKeyBinding item = (MKeyBinding) getMaster().getValue();
-					Command cmd = RemoveCommand.create(getEditingDomain(), item, MApplicationPackage.Literals.KEY_BINDING__PARAMETERS, s.toList());
+					Command cmd = RemoveCommand.create(getEditingDomain(), item, CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS, s.toList());
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
 					}
@@ -298,7 +300,6 @@
 
 	@Override
 	public IObservableList getChildList(Object element) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
@@ -313,6 +314,6 @@
 
 	@Override
 	public FeaturePath[] getLabelProperties() {
-		return new FeaturePath[] { FeaturePath.fromList(MApplicationPackage.Literals.KEY_SEQUENCE__KEY_SEQUENCE) };
+		return new FeaturePath[] { FeaturePath.fromList(CommandsPackageImpl.Literals.KEY_SEQUENCE__KEY_SEQUENCE) };
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java
index 9cd961c..35f3aff 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuEditor.java
@@ -18,15 +18,16 @@
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.ItemType;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
-import org.eclipse.e4.ui.model.application.MHandler;
-import org.eclipse.e4.ui.model.application.MMenuItem;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+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.impl.UiPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
@@ -34,6 +35,7 @@
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.command.AddCommand;
 import org.eclipse.emf.edit.command.MoveCommand;
 import org.eclipse.emf.edit.command.RemoveCommand;
@@ -67,7 +69,7 @@
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
 	private class Struct {
 		private final String label;
@@ -90,7 +92,7 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Menu.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -102,12 +104,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Menu";
+		return Messages.MenuEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Menu bla bla bla";
+		return Messages.MenuEditor_Description;
 	}
 
 	@Override
@@ -129,19 +131,57 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.MenuEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("MenuItems");
+			l.setText(Messages.MenuEditor_LabelLabel);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL).observeDetail(master));
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.MenuEditor_Tooltip);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.MenuEditor_IconURI);
+
+			Text t = new Text(parent, SWT.BORDER);
+			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));
+
+			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
+			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
+			b.setText(Messages.MenuItemEditor_Find);
+		}
+		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.MenuEditor_MenuItems);
 			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
 			final TableViewer viewer = new TableViewer(parent);
@@ -155,21 +195,21 @@
 
 			{
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Type");
+				column.getColumn().setText(Messages.MenuEditor_MenuItemType);
 				column.getColumn().setWidth(300);
 				column.setLabelProvider(new ComponentLabelProvider(editor));
 			}
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ITEM__TYPE);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("ItemType");
+				column.getColumn().setText(Messages.MenuEditor_MenuItemItemType);
 				column.getColumn().setWidth(100);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
 			}
 
-			IEMFListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFListProperty prop = EMFEditProperties.list(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 			viewer.setInput(prop.observeDetail(master));
 
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -182,7 +222,7 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.MenuEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -195,7 +235,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) - 1;
 							if (idx >= 0) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -209,7 +249,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.MenuEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -222,7 +262,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) + 1;
 							if (idx < container.getChildren().size()) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -246,8 +286,8 @@
 				}
 			});
 
-			Struct defaultStruct = new Struct("MenuItem", MApplicationPackage.Literals.MENU_ITEM, false);
-			childrenDropDown.setInput(new Struct[] { new Struct("Separator", MApplicationPackage.Literals.MENU_ITEM, true), defaultStruct, new Struct("Handled MenuItem", MApplicationPackage.Literals.HANDLED_MENU_ITEM, false), new Struct("Direct MenuItem", MApplicationPackage.Literals.DIRECT_MENU_ITEM, false) });
+			Struct defaultStruct = new Struct(Messages.MenuEditor_HandledMenuItem, MenuPackageImpl.Literals.HANDLED_MENU_ITEM, false);
+			childrenDropDown.setInput(new Struct[] { new Struct(Messages.MenuEditor_Separator, MenuPackageImpl.Literals.MENU_SEPARATOR, true), new Struct(Messages.MenuEditor_Menu, MenuPackageImpl.Literals.MENU, false), defaultStruct, new Struct(Messages.MenuEditor_DirectMenuItem, MenuPackageImpl.Literals.DIRECT_MENU_ITEM, false) });
 			childrenDropDown.setSelection(new StructuredSelection(defaultStruct));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
@@ -259,13 +299,9 @@
 					if (!childrenDropDown.getSelection().isEmpty()) {
 						Struct struct = (Struct) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement();
 						EClass eClass = struct.eClass;
-						MMenuItem eObject = (MMenuItem) MApplicationFactory.eINSTANCE.create(eClass);
+						MMenuElement eObject = (MMenuElement) EcoreUtil.create(eClass);
 
-						if (struct.separator) {
-							eObject.setType(ItemType.SEPARATOR);
-						}
-
-						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
+						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
 
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
@@ -278,7 +314,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.MenuEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -286,7 +322,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if (!viewer.getSelection().isEmpty()) {
 						List<?> keybinding = ((IStructuredSelection) viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, keybinding);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, keybinding);
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -295,7 +331,7 @@
 			});
 		}
 		
-		ControlFactory.createTagsWidget(parent, this);
+		ControlFactory.createTagsWidget(parent, this); 
 
 		return parent;
 	}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java
index b6d099e..d1a1b68 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuItemEditor.java
@@ -12,52 +12,27 @@
 
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.List;
 
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
-import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
-import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
-import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
-import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.ItemType;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
-import org.eclipse.e4.ui.model.application.MHandler;
-import org.eclipse.e4.ui.model.application.MMenuItem;
-import org.eclipse.e4.ui.model.application.MUILabel;
-import org.eclipse.emf.common.command.Command;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.ItemType;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
-import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.FeaturePath;
-import org.eclipse.emf.databinding.IEMFListProperty;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
-import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.edit.command.AddCommand;
-import org.eclipse.emf.edit.command.MoveCommand;
-import org.eclipse.emf.edit.command.RemoveCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
 import org.eclipse.jface.databinding.swt.WidgetProperties;
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ViewerProperties;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StackLayout;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -67,51 +42,21 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
-public class MenuItemEditor extends AbstractComponentEditor {
+public abstract class MenuItemEditor extends AbstractComponentEditor {
 
 	private Composite composite;
 	private Image menuImage;
-	private Image separatorImage;
 	private EMFDataBindingContext context;
-	private ModelEditor editor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
-
-	private class Struct {
-		private final String label;
-		private final EClass eClass;
-		private final boolean separator;
-
-		public Struct(String label, EClass eClass, boolean separator) {
-			this.label = label;
-			this.eClass = eClass;
-			this.separator = separator;
-		}
-	}
-
-	public MenuItemEditor(EditingDomain editingDomain, ModelEditor editor) {
+	public MenuItemEditor(EditingDomain editingDomain) {
 		super(editingDomain);
-		this.editor = editor;
 	}
 
 	@Override
 	public Image getImage(Object element, Display display) {
-		MMenuItem item = (MMenuItem) element;
-		if (item.getType() == ItemType.SEPARATOR) {
-			if (separatorImage == null) {
-				try {
-					separatorImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem_separator.gif"));
-				} catch (MalformedURLException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-			}
-
-			return separatorImage;
-		} else {
 			if (menuImage == null) {
 				try {
-					menuImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif"));
+					menuImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuItem.gif")); //$NON-NLS-1$
 				} catch (MalformedURLException e) {
 					// TODO Auto-generated catch block
 					e.printStackTrace();
@@ -119,23 +64,6 @@
 			}
 
 			return menuImage;
-		}
-	}
-
-	@Override
-	public String getLabel(Object element) {
-		MMenuItem item = (MMenuItem) element;
-		if (item.getType() == ItemType.SEPARATOR) {
-			return "Separator";
-		} else {
-			return "MenuItem";
-		}
-
-	}
-
-	@Override
-	public String getDescription(Object element) {
-		return "MenuItem bla bla bla";
 	}
 
 	@Override
@@ -149,30 +77,6 @@
 	}
 
 	private Composite createForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
-		final Composite container = new Composite(parent, SWT.NONE);
-		final StackLayout layout = new StackLayout();
-		container.setLayout(layout);
-
-		final Composite menuFormComposite = createMenuItemForm(container, context, master);
-		final Composite separatorComposite = createSeparatorForm(container, context, master);
-
-		getMaster().addValueChangeListener(new IValueChangeListener() {
-
-			public void handleValueChange(ValueChangeEvent event) {
-				MMenuItem item = (MMenuItem) event.diff.getNewValue();
-				if (item.getType() == ItemType.SEPARATOR) {
-					layout.topControl = separatorComposite;
-				} else {
-					layout.topControl = menuFormComposite;
-				}
-				container.layout(true, true);
-			}
-		});
-
-		return container;
-	}
-
-	private Composite createSeparatorForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
 		parent = new Composite(parent, SWT.NONE);
 		parent.setLayout(new GridLayout(3, false));
 
@@ -181,41 +85,20 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.MenuItemEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
-		}
-
-		return parent;
-	}
-
-	private Composite createMenuItemForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
-		parent = new Composite(parent, SWT.NONE);
-		parent.setLayout(new GridLayout(3, false));
-
-		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
-
-		// ------------------------------------------------------------
-		{
-			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
-
-			Text t = new Text(parent, SWT.BORDER);
-			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-			gd.horizontalSpan = 2;
-			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		if (this.getClass() != MenuItemEditor.class) {
 			// ------------------------------------------------------------
 			{
 				Label l = new Label(parent, SWT.NONE);
-				l.setText("Type");
+				l.setText(Messages.MenuItemEditor_Type);
 
 				ComboViewer viewer = new ComboViewer(parent);
 				viewer.setContentProvider(new ArrayContentProvider());
@@ -223,7 +106,7 @@
 				GridData gd = new GridData();
 				gd.horizontalSpan = 2;
 				viewer.getControl().setLayoutData(gd);
-				IObservableValue itemTypeObs = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ITEM__TYPE).observeDetail(master);
+				IObservableValue itemTypeObs = EMFEditProperties.value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE).observeDetail(master);
 				context.bindValue(ViewerProperties.singleSelection().observe(viewer), itemTypeObs);
 			}
 		}
@@ -231,39 +114,39 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Label");
+			l.setText(Messages.MenuItemEditor_Label);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Tooltip");
+			l.setText(Messages.MenuItemEditor_Tooltip);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Icon URI");
+			l.setText(Messages.MenuItemEditor_IconURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__ICON_URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));
 
 			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
 			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");
+			b.setText(Messages.MenuItemEditor_Find);
 		}
 
 		createFormSubTypeForm(parent, context, master);
@@ -273,169 +156,11 @@
 		return parent;
 	}
 
-	protected void createFormSubTypeForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
-
-		// ------------------------------------------------------------
-		{
-			Label l = new Label(parent, SWT.NONE);
-			l.setText("MenuItems");
-			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
-
-			final TableViewer viewer = new TableViewer(parent);
-			ObservableListContentProvider cp = new ObservableListContentProvider();
-			viewer.setContentProvider(cp);
-
-			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-			gd.heightHint = 300;
-			viewer.getControl().setLayoutData(gd);
-			viewer.getTable().setHeaderVisible(true);
-
-			{
-				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Type");
-				column.getColumn().setWidth(300);
-				column.setLabelProvider(new ComponentLabelProvider(editor));
-			}
-
-			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ITEM__TYPE);
-
-				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("ItemType");
-				column.getColumn().setWidth(100);
-				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
-			}
-
-			IEMFListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
-			viewer.setInput(prop.observeDetail(master));
-
-			Composite buttonComp = new Composite(parent, SWT.NONE);
-			buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
-			GridLayout gl = new GridLayout(2, false);
-			gl.marginLeft = 0;
-			gl.marginRight = 0;
-			gl.marginWidth = 0;
-			gl.marginHeight = 0;
-			buttonComp.setLayout(gl);
-
-			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
-			b.setImage(getImage(b.getDisplay(), ARROW_UP));
-			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
-			b.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (!viewer.getSelection().isEmpty()) {
-						IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
-						if (s.size() == 1) {
-							Object obj = s.getFirstElement();
-							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
-							int idx = container.getChildren().indexOf(obj) - 1;
-							if (idx >= 0) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
-
-								if (cmd.canExecute()) {
-									getEditingDomain().getCommandStack().execute(cmd);
-									viewer.setSelection(new StructuredSelection(obj));
-								}
-							}
-
-						}
-					}
-				}
-			});
-
-			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
-			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
-			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
-			b.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (!viewer.getSelection().isEmpty()) {
-						IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
-						if (s.size() == 1) {
-							Object obj = s.getFirstElement();
-							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
-							int idx = container.getChildren().indexOf(obj) + 1;
-							if (idx < container.getChildren().size()) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
-
-								if (cmd.canExecute()) {
-									getEditingDomain().getCommandStack().execute(cmd);
-									viewer.setSelection(new StructuredSelection(obj));
-								}
-							}
-
-						}
-					}
-				}
-			});
-
-			final ComboViewer childrenDropDown = new ComboViewer(buttonComp);
-			childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
-			childrenDropDown.setContentProvider(new ArrayContentProvider());
-			childrenDropDown.setLabelProvider(new LabelProvider() {
-				@Override
-				public String getText(Object element) {
-					Struct struct = (Struct) element;
-					return struct.label;
-				}
-			});
-
-			Struct defaultStruct = new Struct("MenuItem", MApplicationPackage.Literals.MENU_ITEM, false);
-			childrenDropDown.setInput(new Struct[] { new Struct("Separator", MApplicationPackage.Literals.MENU_ITEM, true), defaultStruct, new Struct("Handled MenuItem", MApplicationPackage.Literals.HANDLED_MENU_ITEM, false), new Struct("Direct MenuItem", MApplicationPackage.Literals.DIRECT_MENU_ITEM, false) });
-			childrenDropDown.setSelection(new StructuredSelection(defaultStruct));
-
-			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
-			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
-			b.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (!childrenDropDown.getSelection().isEmpty()) {
-						Struct struct = (Struct) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement();
-						EClass eClass = struct.eClass;
-						MMenuItem eObject = (MMenuItem) MApplicationFactory.eINSTANCE.create(eClass);
-
-						if (struct.separator) {
-							eObject.setType(ItemType.SEPARATOR);
-						}
-
-						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
-
-						if (cmd.canExecute()) {
-							getEditingDomain().getCommandStack().execute(cmd);
-							if (!struct.separator) {
-								editor.setSelection(eObject);
-							}
-						}
-					}
-				}
-			});
-
-			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
-			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
-			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
-			b.addSelectionListener(new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (!viewer.getSelection().isEmpty()) {
-						List<?> keybinding = ((IStructuredSelection) viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, keybinding);
-						if (cmd.canExecute()) {
-							getEditingDomain().getCommandStack().execute(cmd);
-						}
-					}
-				}
-			});
-		}
-	}
+	protected abstract void createFormSubTypeForm(Composite parent, EMFDataBindingContext context, WritableValue master);
 
 	@Override
 	public IObservableList getChildList(Object element) {
-		return ELEMENT_CONTAINER__CHILDREN.observe(element);
+		return null;
 	}
 
 	@Override
@@ -449,6 +174,6 @@
 
 	@Override
 	public FeaturePath[] getLabelProperties() {
-		return new FeaturePath[] { FeaturePath.fromList(MApplicationPackage.Literals.UI_LABEL__LABEL) };
+		return new FeaturePath[] { FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__LABEL) };
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuSeparatorEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuSeparatorEditor.java
new file mode 100644
index 0000000..2f2af59
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuSeparatorEditor.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.ui.internal.common.component;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.edit.EMFEditProperties;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class MenuSeparatorEditor extends AbstractComponentEditor {
+	private Image separatorImage;
+	private Composite composite;
+	private EMFDataBindingContext context;
+	
+	public MenuSeparatorEditor(EditingDomain editingDomain) {
+		super(editingDomain);
+	}
+
+	@Override
+	public Image getImage(Object element, Display display) {
+		if (separatorImage == null) {
+			try {
+				separatorImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/MenuSeparator.gif")); //$NON-NLS-1$
+			} catch (MalformedURLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+		return separatorImage;
+	}
+
+	@Override
+	public String getLabel(Object element) {
+		return Messages.MenuSeparatorEditor_Label;
+	}
+
+	@Override
+	public String getDetailLabel(Object element) {
+		return null;
+	}
+
+	@Override
+	public String getDescription(Object element) {
+		return null;
+	}
+
+	@Override
+	public Composite getEditor(Composite parent, Object object) {
+		if (composite == null) {
+			context = new EMFDataBindingContext();
+			composite = createForm(parent, context, getMaster());
+		}
+		getMaster().setValue(object);
+		return composite;
+	}
+	
+	private Composite createForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
+		parent = new Composite(parent, SWT.NONE);
+		parent.setLayout(new GridLayout(3, false));
+
+		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.MenuSeparatorEditor_Id);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
+		}
+		
+		//TODO Should we add visible to mimic a GroupMarker of 3.x
+
+		return parent;
+	}
+
+	@Override
+	public IObservableList getChildList(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentEditor.java
index 64be4f2..f527de9 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentEditor.java
@@ -17,13 +17,16 @@
 import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MMenu;
 import org.eclipse.e4.ui.model.application.MModelComponent;
-import org.eclipse.e4.ui.model.application.MPart;
-import org.eclipse.e4.ui.model.application.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -48,12 +51,12 @@
 	private Image image;
 	private EMFDataBindingContext context;
 
-	private IListProperty MODEL_COMPONENT__CHILDREN = EMFProperties.list( MApplicationPackage.Literals.MODEL_COMPONENT__CHILDREN);
-	private IListProperty PART_DESCRIPTOR_CONTAINER__DESCRIPTORS = EMFProperties.list( MApplicationPackage.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS);
-	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
-	private IListProperty BINDING_CONTAINER__BINDINGS = EMFProperties.list(MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES);
-	private IListProperty MODEL_COMPONENT__COMMANDS = EMFProperties.list(MApplicationPackage.Literals.MODEL_COMPONENT__COMMANDS);
-	private IListProperty MODEL_COMPONENT__BINDINGS = EMFProperties.list(MApplicationPackage.Literals.MODEL_COMPONENT__BINDINGS);
+	private IListProperty MODEL_COMPONENT__CHILDREN = EMFProperties.list( ApplicationPackageImpl.Literals.MODEL_COMPONENT__CHILDREN);
+	private IListProperty PART_DESCRIPTOR_CONTAINER__DESCRIPTORS = EMFProperties.list( BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS);
+	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+	private IListProperty BINDING_CONTAINER__BINDINGS = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES);
+	private IListProperty MODEL_COMPONENT__COMMANDS = EMFProperties.list(ApplicationPackageImpl.Literals.MODEL_COMPONENT__COMMANDS);
+	private IListProperty MODEL_COMPONENT__BINDINGS = EMFProperties.list(ApplicationPackageImpl.Literals.MODEL_COMPONENT__BINDINGS);
 	
 	public ModelComponentEditor(EditingDomain editingDomain) {
 		super(editingDomain);
@@ -93,52 +96,52 @@
 		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
 
 		Label l = new Label(parent, SWT.NONE);
-		l.setText("Id");
+		l.setText(Messages.ModelComponentEditor_Id);
 
 		Text t = new Text(parent, SWT.BORDER);
 		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 		gd.horizontalSpan=2;
 		t.setLayoutData(gd);
-		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 
 		// ------------------------------------------------------------
 
 		l = new Label(parent, SWT.NONE);
-		l.setText("Parent-Id");
+		l.setText(Messages.ModelComponentEditor_ParentId);
 
 		t = new Text(parent, SWT.BORDER);
 		t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.MODEL_COMPONENT__PARENT_ID).observeDetail(getMaster()));
+		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.MODEL_COMPONENT__PARENT_ID).observeDetail(getMaster()));
 
 		Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
-		b.setText("Find ...");
+		b.setText(Messages.ModelComponentEditor_Find);
 
 		// ------------------------------------------------------------
 
 		l = new Label(parent, SWT.NONE);
-		l.setText("Position in Parent");
+		l.setText(Messages.ModelComponentEditor_PositionInParent);
 
 		t = new Text(parent, SWT.BORDER);
 		gd = new GridData(GridData.FILL_HORIZONTAL);
 		gd.horizontalSpan=2;
 		t.setLayoutData(gd);
-		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.MODEL_COMPONENT__POSITION_IN_PARENT).observeDetail(getMaster()));
+		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.MODEL_COMPONENT__POSITION_IN_PARENT).observeDetail(getMaster()));
 
 		// ------------------------------------------------------------
 
 		l = new Label(parent, SWT.NONE);
-		l.setText("Processor");
+		l.setText(Messages.ModelComponentEditor_Processor);
 
 		t = new Text(parent, SWT.BORDER);
 		gd = new GridData(GridData.FILL_HORIZONTAL);
 		gd.horizontalSpan=2;
 		t.setLayoutData(gd);
-		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.MODEL_COMPONENT__PROCESSOR).observeDetail(getMaster()));
+		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.MODEL_COMPONENT__PROCESSOR).observeDetail(getMaster()));
 		
 		// ------------------------------------------------------------
 
 		l = new Label(parent, SWT.NONE);
-		l.setText("Tags");
+		l.setText(Messages.ModelComponentEditor_Tags);
 
 		t = new Text(parent, SWT.BORDER);
 		gd = new GridData(GridData.FILL_HORIZONTAL);
@@ -159,7 +162,7 @@
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelComponent.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelComponent.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -170,19 +173,19 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Model Component";
+		return Messages.ModelComponentEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "The model component ... bla bla bla";
+		return Messages.ModelComponentEditor_Description;
 	}
 
 	@Override
 	public IObservableList getChildList(Object element) {
 		WritableList list = new WritableList();
 		
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, "Handlers") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, Messages.ModelComponentEditor_Handlers) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -191,7 +194,7 @@
 
 		});
 
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_BINDING_TABLE, BINDING_CONTAINER__BINDINGS, element, "BindingTables") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_BINDING_TABLE, BINDING_CONTAINER__BINDINGS, element, Messages.ModelComponentEditor_BindingTables) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -200,7 +203,7 @@
 
 		});
 		
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_MODEL_COMP_BINDINGS, MODEL_COMPONENT__BINDINGS, element, "KeyBindings") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_MODEL_COMP_BINDINGS, MODEL_COMPONENT__BINDINGS, element, Messages.ModelComponentEditor_KeyBindings) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -210,7 +213,7 @@
 		});
 		
 		
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_MODEL_COMP_COMMANDS, MODEL_COMPONENT__COMMANDS, element, "Commands") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_MODEL_COMP_COMMANDS, MODEL_COMPONENT__COMMANDS, element, Messages.ModelComponentEditor_Commands) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -219,7 +222,7 @@
 
 		});
 		
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_MENU, MODEL_COMPONENT__CHILDREN, element, "Menus") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PART_MENU, MODEL_COMPONENT__CHILDREN, element, Messages.ModelComponentEditor_Menus) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -227,7 +230,7 @@
 			}
 
 		});
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PART, MODEL_COMPONENT__CHILDREN, element, "Parts") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PART, MODEL_COMPONENT__CHILDREN, element, Messages.ModelComponentEditor_Parts) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -235,7 +238,7 @@
 			}
 
 		});
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PART_DESCRIPTORS, PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, element, "PartDescriptors") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PART_DESCRIPTORS, PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, element, Messages.ModelComponentEditor_PartDescriptors) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -251,7 +254,7 @@
 	public String getDetailLabel(Object element) {
 		MModelComponent o = (MModelComponent) element;
 		if( o.getParentID() != null ) {
-			return "parentId: " + o.getParentID();
+			return Messages.ModelComponentEditor_DetailParentId + ": " + o.getParentID(); //$NON-NLS-1$
 		}
 		return null;
 	}
@@ -259,7 +262,7 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.MODEL_COMPONENT__PARENT_ID)	
+			FeaturePath.fromList(ApplicationPackageImpl.Literals.MODEL_COMPONENT__PARENT_ID)	
 		};
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentsEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentsEditor.java
index 4e6c714..a081f28 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentsEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelComponentsEditor.java
@@ -17,12 +17,13 @@
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
 import org.eclipse.e4.ui.model.application.MModelComponent;
 import org.eclipse.e4.ui.model.application.MModelComponents;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.IEMFListProperty;
@@ -47,7 +48,7 @@
 
 public class ModelComponentsEditor extends AbstractComponentEditor {
 
-	private IListProperty MODEL_COMPONENTS__COMPONENTS = EMFProperties.list(MApplicationPackage.Literals.MODEL_COMPONENTS__COMPONENTS);
+	private IListProperty MODEL_COMPONENTS__COMPONENTS = EMFProperties.list(ApplicationPackageImpl.Literals.MODEL_COMPONENTS__COMPONENTS);
 
 	private Composite composite;
 	private Image image;
@@ -62,7 +63,7 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelComponents.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ModelComponents.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -73,12 +74,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Model Components";
+		return Messages.ModelComponentsEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Some bla bla bla bla";
+		return Messages.ModelComponentsEditor_Description;
 	}
 
 	@Override
@@ -96,7 +97,7 @@
 
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Model Contributions");
+			l.setText(Messages.ModelComponentsEditor_ModelContributions);
 			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
 			final TableViewer viewer = new TableViewer(parent);
@@ -106,7 +107,7 @@
 			gd.heightHint = 300;
 			viewer.getControl().setLayoutData(gd);
 
-			IEMFListProperty prop = EMFProperties.list(MApplicationPackage.Literals.MODEL_COMPONENTS__COMPONENTS);
+			IEMFListProperty prop = EMFProperties.list(ApplicationPackageImpl.Literals.MODEL_COMPONENTS__COMPONENTS);
 			viewer.setInput(prop.observeDetail(getMaster()));
 
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -119,7 +120,7 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.ModelComponentsEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -132,7 +133,7 @@
 							MModelComponents container = (MModelComponents) getMaster().getValue();
 							int idx = container.getComponents().indexOf(obj) - 1;
 							if (idx >= 0) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENTS__COMPONENTS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENTS__COMPONENTS, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -146,7 +147,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.ModelComponentsEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -159,7 +160,7 @@
 							MModelComponents container = (MModelComponents) getMaster().getValue();
 							int idx = container.getComponents().indexOf(obj) + 1;
 							if (idx < container.getComponents().size()) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENTS__COMPONENTS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENTS__COMPONENTS, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -173,15 +174,15 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add");
+			b.setText(Messages.ModelComponentsEditor_Add);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MModelComponent component = MApplicationFactory.eINSTANCE.createModelComponent();
+					MModelComponent component = MApplicationFactory.INSTANCE.createModelComponent();
 
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENTS__COMPONENTS, component);
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENTS__COMPONENTS, component);
 
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -191,7 +192,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.ModelComponentsEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -200,7 +201,7 @@
 					if (!viewer.getSelection().isEmpty()) {
 						List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList();
 
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENTS__COMPONENTS, elements);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENTS__COMPONENTS, elements);
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
index f012cd6..0e603ee 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartDescriptorEditor.java
@@ -20,12 +20,16 @@
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.ContributionClassDialog;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
 import org.eclipse.e4.ui.model.application.MContribution;
-import org.eclipse.e4.ui.model.application.MPart;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -59,8 +63,8 @@
 	private EMFDataBindingContext context;
 	private IProject project;
 	
-	private IListProperty PART__MENUS = EMFProperties.list(MApplicationPackage.Literals.PART__MENUS);
-	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
+	private IListProperty PART__MENUS = EMFProperties.list(BasicPackageImpl.Literals.PART_DESCRIPTOR__MENUS);
+	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
 
 	public PartDescriptorEditor(EditingDomain editingDomain, IProject project) {
 		super(editingDomain);
@@ -71,7 +75,7 @@
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -83,12 +87,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "PartDescriptor";
+		return Messages.PartDescriptorEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "PartDescriptor Bla Bla Bla Bla";
+		return Messages.PartDescriptorEditor_Descriptor;
 	}
 
 	@Override
@@ -110,65 +114,65 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.PartDescriptorEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(master));			
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(master));			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Label");
+			l.setText(Messages.PartDescriptorEditor_LabelLabel);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL).observeDetail(master));			
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL).observeDetail(master));			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Tooltip");
+			l.setText(Messages.PartDescriptorEditor_Tooltip);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__TOOLTIP).observeDetail(master));			
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP).observeDetail(master));			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Icon URI");
+			l.setText(Messages.PartDescriptorEditor_IconURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__ICON_URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));
 
 			Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
 			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");			
+			b.setText(Messages.PartDescriptorEditor_Find);			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Class URI");
+			l.setText(Messages.PartDescriptorEditor_ClassURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.PART_DESCRIPTOR__CONTRIBUTION_URI).observeDetail(master));
 
 			final Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
 			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");
+			b.setText(Messages.PartDescriptorEditor_Find);
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
@@ -181,12 +185,39 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Closeable");
+			l.setText(Messages.PartDescriptorEditor_ContainerData);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan=2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA).observeDetail(master));
+		}
+		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.PartDescriptorEditor_Dirtyable);
 
 			Button checkbox = new Button(parent, SWT.CHECK);
 			checkbox.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, 2, 1));
 			
-			IEMFEditValueProperty mprop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PART__CLOSEABLE);
+			IEMFEditValueProperty mprop = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.PART_DESCRIPTOR__DIRTYABLE);
+			IWidgetValueProperty uiProp = WidgetProperties.selection();
+			
+			context.bindValue(uiProp.observe(checkbox), mprop.observeDetail(master));
+		}
+
+		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.PartDescriptorEditor_Closeable);
+
+			Button checkbox = new Button(parent, SWT.CHECK);
+			checkbox.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, 2, 1));
+			
+			IEMFEditValueProperty mprop = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.PART_DESCRIPTOR__CLOSEABLE);
 			IWidgetValueProperty uiProp = WidgetProperties.selection();
 			
 			context.bindValue(uiProp.observe(checkbox), mprop.observeDetail(master));
@@ -195,12 +226,12 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Multiple");
+			l.setText(Messages.PartDescriptorEditor_Multiple);
 
 			Button checkbox = new Button(parent, SWT.CHECK);
 			checkbox.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, 2, 1));
 			
-			IEMFEditValueProperty mprop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PART_DESCRIPTOR__ALLOW_MULTIPLE);
+			IEMFEditValueProperty mprop = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.PART_DESCRIPTOR__ALLOW_MULTIPLE);
 			IWidgetValueProperty uiProp = WidgetProperties.selection();
 			
 			context.bindValue(uiProp.observe(checkbox), mprop.observeDetail(master));
@@ -209,17 +240,17 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Category");
+			l.setText(Messages.PartDescriptorEditor_Category);
 			
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL,GridData.BEGINNING, true, false, 2, 1));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PART_DESCRIPTOR__CATEGORY).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.PART_DESCRIPTOR__CATEGORY).observeDetail(master));
 		}
 		
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Persited State");
+			l.setText(Messages.PartDescriptorEditor_PersitedState);
 			l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 			TableViewer tableviewer = new TableViewer(parent);
@@ -231,7 +262,7 @@
 			tableviewer.getControl().setLayoutData(gd);
 			
 			TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Key");
+			column.getColumn().setText(Messages.PartDescriptorEditor_PersitedStateKey);
 			column.getColumn().setWidth(200);
 			column.setLabelProvider(new ColumnLabelProvider() {
 				@SuppressWarnings("unchecked")
@@ -244,7 +275,7 @@
 
 			//FIXME How can we react upon changes in the Map-Value?
 			column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Value");
+			column.getColumn().setText(Messages.PartDescriptorEditor_PersitedStateValue);
 			column.getColumn().setWidth(200);
 			column.setLabelProvider(new ColumnLabelProvider() {
 				@SuppressWarnings("unchecked")
@@ -255,7 +286,7 @@
 				}
 			});
 			
-			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__PERSISTED_STATE);
+			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__PERSISTED_STATE);
 			tableviewer.setInput(prop.observeDetail(getMaster()));
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -268,12 +299,12 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add ...");
+			b.setText(Messages.PartDescriptorEditor_Add);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.PartDescriptorEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 		}
@@ -281,7 +312,7 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Variables");
+			l.setText(Messages.PartDescriptorEditor_Variables);
 			l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 			ListViewer viewer = new ListViewer(parent);
@@ -294,7 +325,7 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Properties");
+			l.setText(Messages.PartDescriptorEditor_Properties);
 			l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 			TableViewer tableviewer = new TableViewer(parent);
@@ -305,48 +336,24 @@
 			tableviewer.getControl().setLayoutData(gd);
 
 			TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Key");
+			column.getColumn().setText(Messages.PartDescriptorEditor_PropertiesKey);
 			column.getColumn().setWidth(200);
 
 			column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Value");
+			column.getColumn().setText(Messages.PartDescriptorEditor_PropertiesValue);
 			column.getColumn().setWidth(200);
 		}
 
 
 		ControlFactory.createTagsWidget(parent, this);
 
-//		// ------------------------------------------------------------
-//
-//		l = new Label(parent, SWT.NONE);
-//		l.setText("");
-//
-//		Composite booleanContainer = new Composite(parent,SWT.NONE);
-//		gd = new GridData(GridData.FILL_HORIZONTAL);
-//		gd.horizontalSpan=2;
-//		booleanContainer.setBackgroundMode(SWT.INHERIT_DEFAULT);
-//		booleanContainer.setLayoutData(gd);
-//		booleanContainer.setLayout(new GridLayout(4,false));
-//
-//		Button checkbox = new Button(booleanContainer, SWT.CHECK);
-//		checkbox.setText("to render");
-//
-//		checkbox = new Button(booleanContainer, SWT.CHECK);
-//		checkbox.setText("on Top");
-//
-//		checkbox = new Button(booleanContainer, SWT.CHECK);
-//		checkbox.setText("visible");
-//
-//		checkbox = new Button(booleanContainer, SWT.CHECK);
-//		checkbox.setText("closeable");
-
 		return parent;
 	}
 
 	@Override
 	public IObservableList getChildList(Object element) {
 		WritableList list = new WritableList();
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_MENU, PART__MENUS, element, "Menus") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PARTDESCRIPTOR_MENU, PART__MENUS, element, Messages.PartDescriptorEditor_Menus) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -355,7 +362,7 @@
 
 		});
 
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, "Handlers") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, Messages.PartDescriptorEditor_Handlers) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -369,14 +376,14 @@
 
 	@Override
 	public String getDetailLabel(Object element) {
-		MPart o = (MPart) element;
+		MPartDescriptor o = (MPartDescriptor) element;
 		return o.getLabel();
 	}
 
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.UI_LABEL__LABEL)	
+			FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__LABEL)	
 		};
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
index 7fd167f..1bfedac 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartEditor.java
@@ -20,12 +20,16 @@
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
 import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.ContributionClassDialog;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
 import org.eclipse.e4.ui.model.application.MContribution;
-import org.eclipse.e4.ui.model.application.MPart;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -58,8 +62,8 @@
 	private EMFDataBindingContext context;
 	private IProject project;
 
-	private IListProperty PART__MENUS = EMFProperties.list(MApplicationPackage.Literals.PART__MENUS);
-	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
+	private IListProperty PART__MENUS = EMFProperties.list(BasicPackageImpl.Literals.PART__MENUS);
+	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
 
 	public PartEditor(EditingDomain editingDomain, IProject project) {
 		super(editingDomain);
@@ -70,7 +74,7 @@
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Part.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -82,12 +86,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Part";
+		return Messages.PartEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Part Bla Bla Bla Bla";
+		return Messages.PartEditor_Description;
 	}
 
 	@Override
@@ -109,65 +113,65 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.PartEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(master));			
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(master));			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Label");
+			l.setText(Messages.PartEditor_LabelLabel);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL).observeDetail(master));			
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL).observeDetail(master));			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Tooltip");
+			l.setText(Messages.PartEditor_Tooltip);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__TOOLTIP).observeDetail(master));			
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP).observeDetail(master));			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Icon URI");
+			l.setText(Messages.PartEditor_IconURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__ICON_URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));
 
 			Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
 			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");			
+			b.setText(Messages.PartEditor_Find);			
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Class URI");
+			l.setText(Messages.PartEditor_ClassURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI).observeDetail(master));
 
 			final Button b = new Button(parent, SWT.PUSH|SWT.FLAT);
 			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
-			b.setText("Find ...");
+			b.setText(Messages.PartEditor_Find);
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
@@ -177,17 +181,29 @@
 			});
 		}
 		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.PartEditor_ContainerData);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan=2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA).observeDetail(master));
+		}
+		
 		createSubformElements(parent, context, master);
 		
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Closeable");
+			l.setText(Messages.PartEditor_Closeable);
 
 			Button checkbox = new Button(parent, SWT.CHECK);
 			checkbox.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, 2, 1));
 			
-			IEMFEditValueProperty mprop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PART__CLOSEABLE);
+			IEMFEditValueProperty mprop = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.PART__CLOSEABLE);
 			IWidgetValueProperty uiProp = WidgetProperties.selection();
 			
 			context.bindValue(uiProp.observe(checkbox), mprop.observeDetail(master));
@@ -235,7 +251,7 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Persited State");
+			l.setText(Messages.PartEditor_PersitedState);
 			l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
 
 			TableViewer tableviewer = new TableViewer(parent);
@@ -247,7 +263,7 @@
 			tableviewer.getControl().setLayoutData(gd);
 			
 			TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Key");
+			column.getColumn().setText(Messages.PartEditor_PersitedStateKey);
 			column.getColumn().setWidth(200);
 			column.setLabelProvider(new ColumnLabelProvider() {
 				@SuppressWarnings("unchecked")
@@ -260,7 +276,7 @@
 
 			//FIXME How can we react upon changes in the Map-Value?
 			column = new TableViewerColumn(tableviewer, SWT.NONE);
-			column.getColumn().setText("Value");
+			column.getColumn().setText(Messages.PartEditor_PersitedStateValue);
 			column.getColumn().setWidth(200);
 			column.setLabelProvider(new ColumnLabelProvider() {
 				@SuppressWarnings("unchecked")
@@ -271,7 +287,7 @@
 				}
 			});
 			
-			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__PERSISTED_STATE);
+			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__PERSISTED_STATE);
 			tableviewer.setInput(prop.observeDetail(getMaster()));
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -284,12 +300,12 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add ...");
+			b.setText(Messages.PartEditor_Add);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.PartEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 		}
@@ -306,7 +322,7 @@
 	@Override
 	public IObservableList getChildList(Object element) {
 		WritableList list = new WritableList();
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_MENU, PART__MENUS, element, "Menus") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_PART_MENU, PART__MENUS, element, Messages.PartEditor_Menus) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -315,7 +331,7 @@
 
 		});
 
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, "Handlers") {
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, Messages.PartEditor_Handlers) {
 
 			@Override
 			protected boolean accepted(Object o) {
@@ -336,7 +352,7 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.UI_LABEL__LABEL)	
+			FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__LABEL)	
 		};
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java
index b815c75..5ba46b7 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java
@@ -22,12 +22,14 @@
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
-import org.eclipse.e4.ui.model.application.MPartSashContainer;
+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.basic.MPartSashContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
@@ -38,6 +40,7 @@
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.command.AddCommand;
 import org.eclipse.emf.edit.command.MoveCommand;
 import org.eclipse.emf.edit.command.RemoveCommand;
@@ -74,7 +77,7 @@
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
 	public PartSashContainerEditor(EditingDomain editingDomain, ModelEditor editor) {
 		super(editingDomain);
@@ -87,7 +90,7 @@
 
 		if( vImage == null && ! horizontal ) {
 			try {
-				vImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif"));
+				vImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer_vertical.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -96,7 +99,7 @@
 
 		if( hImage == null && horizontal ) {
 			try {
-				hImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif"));
+				hImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartSashContainer.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -112,12 +115,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Sash";
+		return Messages.PartSashContainerEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Sash bla bla bla";
+		return Messages.PartSashContainerEditor_Description;
 	}
 
 	@Override
@@ -140,19 +143,19 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.PartSashContainerEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Orientation");
+			l.setText(Messages.PartSashContainerEditor_Orientation);
 
 			ComboViewer viewer = new ComboViewer(parent);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
@@ -162,30 +165,30 @@
 			viewer.setLabelProvider(new LabelProvider() {
 				@Override
 				public String getText(Object element) {
-					return ((Boolean)element).booleanValue() ? "Horizontal" : "Vertical";
+					return ((Boolean)element).booleanValue() ? Messages.PartSashContainerEditor_Horizontal : Messages.PartSashContainerEditor_Vertical;
 				}
 			});
 			viewer.setInput(new Boolean[] { Boolean.TRUE, Boolean.FALSE });
 			IViewerValueProperty vProp = ViewerProperties.singleSelection();
-			context.bindValue(vProp.observe(viewer), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.GENERIC_TILE__HORIZONTAL).observeDetail(getMaster()));
+			context.bindValue(vProp.observe(viewer), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Selected Element");
+			l.setText(Messages.PartSashContainerEditor_SelectedElement);
 
 			ComboViewer viewer = new ComboViewer(parent);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			viewer.getControl().setLayoutData(gd);
-			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 			IViewerValueProperty vProp = ViewerProperties.singleSelection();
 
 			final Binding[] binding = new Binding[1];
 			final IObservableValue uiObs = vProp.observe(viewer);
-			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
+			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
 			getMaster().addValueChangeListener(new IValueChangeListener() {
 
 				public void handleValueChange(ValueChangeEvent event) {
@@ -205,12 +208,24 @@
 				}
 			});
 		}
+		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.PartSashContainerEditor_ContainerData);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan=2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA).observeDetail(master));
+		}
 
 		ControlFactory.createTagsWidget(parent, this);
 
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Controls");
+			l.setText(Messages.PartSashContainerEditor_Controls);
 			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 			
 			final TableViewer viewer = new TableViewer(parent);
@@ -221,7 +236,7 @@
 			viewer.setContentProvider(cp);
 			viewer.setLabelProvider(new ComponentLabelProvider(editor));
 			
-			IEMFListProperty prop = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 			viewer.setInput(prop.observeDetail(getMaster()));
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -234,7 +249,7 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.PartSashContainerEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -247,7 +262,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -261,7 +276,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.PartSashContainerEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -274,7 +289,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) + 1;
 							if( idx < container.getChildren().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -298,11 +313,12 @@
 				}
 			});
 			childrenDropDown.setInput(new EClass[] {
-					MApplicationPackage.Literals.PART_SASH_CONTAINER,
-					MApplicationPackage.Literals.PART_STACK,
-					MApplicationPackage.Literals.PART
+					BasicPackageImpl.Literals.PART_SASH_CONTAINER,
+					BasicPackageImpl.Literals.PART_STACK,
+					BasicPackageImpl.Literals.PART,
+					BasicPackageImpl.Literals.INPUT_PART
 			});
-			childrenDropDown.setSelection(new StructuredSelection(MApplicationPackage.Literals.PART_SASH_CONTAINER));
+			childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART_SASH_CONTAINER));
 			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
@@ -312,9 +328,9 @@
 				public void widgetSelected(SelectionEvent e) {
 					if( ! childrenDropDown.getSelection().isEmpty() ) {
 						EClass eClass = (EClass) ((IStructuredSelection)childrenDropDown.getSelection()).getFirstElement();
-						EObject eObject = MApplicationFactory.eINSTANCE.create(eClass);
+						EObject eObject = EcoreUtil.create(eClass);
 						
-						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
+						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
 						
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
@@ -325,7 +341,7 @@
 			});
 			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.PartSashContainerEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -334,7 +350,7 @@
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> elements = ((IStructuredSelection)viewer.getSelection()).toList();
 						
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -360,7 +376,7 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.GENERIC_TILE__HORIZONTAL)	
+			FeaturePath.fromList(UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL)	
 		};
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java
index e6085c3..8f6597f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java
@@ -22,12 +22,13 @@
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
-import org.eclipse.e4.ui.model.application.MPart;
+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.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
@@ -35,6 +36,9 @@
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditListProperty;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.command.AddCommand;
 import org.eclipse.emf.edit.command.MoveCommand;
 import org.eclipse.emf.edit.command.RemoveCommand;
@@ -45,8 +49,10 @@
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ViewerProperties;
 import org.eclipse.jface.databinding.viewers.ViewerSupport;
+import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
@@ -68,7 +74,7 @@
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
 	public PartStackEditor(EditingDomain editingDomain, ModelEditor editor) {
 		super(editingDomain);
@@ -79,7 +85,7 @@
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PartStack.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -91,12 +97,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Part Stack";
+		return Messages.PartStackEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Stack bla bla bla";
+		return Messages.PartStackEditor_Description;
 	}
 
 	@Override
@@ -119,31 +125,31 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.PartStackEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Selected Element");
+			l.setText(Messages.PartStackEditor_SelectedElement);
 
 			ComboViewer viewer = new ComboViewer(parent);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			viewer.getControl().setLayoutData(gd);
-			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL);
+			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL);
 			IViewerValueProperty vProp = ViewerProperties.singleSelection();
 
 			final Binding[] binding = new Binding[1];
 			final IObservableValue uiObs = vProp.observe(viewer);
-			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
+			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
 			getMaster().addValueChangeListener(new IValueChangeListener() {
 
 				public void handleValueChange(ValueChangeEvent event) {
@@ -167,7 +173,19 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Parts");
+			l.setText(Messages.PartStackEditor_ContainerData);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan=2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA).observeDetail(master));
+		}
+		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.PartStackEditor_Parts);
 			
 			final TableViewer viewer = new TableViewer(parent);
 			viewer.setContentProvider(new ObservableListContentProvider());
@@ -177,12 +195,12 @@
 			viewer.getControl().setLayoutData(gd);
 			
 			
-			IEMFListProperty prop = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 			viewer.setInput(prop.observeDetail(getMaster()));
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
 			buttonComp.setLayoutData(new GridData(GridData.FILL,GridData.END,false,false));
-			GridLayout gl = new GridLayout();
+			GridLayout gl = new GridLayout(2,false);
 			gl.marginLeft=0;
 			gl.marginRight=0;
 			gl.marginWidth=0;
@@ -190,9 +208,9 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.PartStackEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
-			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 			b.addSelectionListener(new SelectionAdapter() { 
 				@Override
 				public void widgetSelected(SelectionEvent e) {  
@@ -203,7 +221,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -217,9 +235,9 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.PartStackEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
-			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
@@ -230,7 +248,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) + 1;
 							if( idx < container.getChildren().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -243,35 +261,54 @@
 				}
 			});
 			
+			final ComboViewer childrenDropDown = new ComboViewer(buttonComp);
+			childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			childrenDropDown.setContentProvider(new ArrayContentProvider());
+			childrenDropDown.setLabelProvider(new LabelProvider() {
+				@Override
+				public String getText(Object element) {
+					EClass eclass = (EClass) element;
+					return eclass.getName();
+				}
+			});
+			childrenDropDown.setInput(new EClass[] {
+					BasicPackageImpl.Literals.PART_SASH_CONTAINER,
+					BasicPackageImpl.Literals.PART_STACK,
+					BasicPackageImpl.Literals.PART,
+					BasicPackageImpl.Literals.INPUT_PART
+			});
+			childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART_SASH_CONTAINER));
+			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add Part");
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MPart part = MApplicationFactory.eINSTANCE.createPart();
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, part);
+					EClass eClass = (EClass) ((IStructuredSelection)childrenDropDown.getSelection()).getFirstElement();
+					EObject eObject = EcoreUtil.create(eClass);
+					
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
 					
 					if( cmd.canExecute() ) {
 						getEditingDomain().getCommandStack().execute(cmd);
-						editor.setSelection(part);
+						editor.setSelection(eObject);
 					}
 				}
 			});
 			
 			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.PartStackEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
-			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> elements = ((IStructuredSelection)viewer.getSelection()).toList();
 						
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveEditor.java
index 70730a4..c2b152b 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveEditor.java
@@ -1,7 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal.common.component;
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.List;
 
 import org.eclipse.core.databinding.Binding;
 import org.eclipse.core.databinding.observable.list.IObservableList;
@@ -11,22 +22,45 @@
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MPerspective;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
+import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
+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.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.FeaturePath;
+import org.eclipse.emf.databinding.IEMFListProperty;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditListProperty;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.MoveCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
 import org.eclipse.jface.databinding.swt.WidgetProperties;
 import org.eclipse.jface.databinding.viewers.IViewerValueProperty;
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ViewerProperties;
 import org.eclipse.jface.databinding.viewers.ViewerSupport;
+import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -40,18 +74,20 @@
 	private Composite composite;
 	private Image image;
 	private EMFDataBindingContext context;
+	private ModelEditor editor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
-	public PerspectiveEditor(EditingDomain editingDomain) {
+	public PerspectiveEditor(EditingDomain editingDomain, ModelEditor editor) {
 		super(editingDomain);
+		this.editor = editor;
 	}
 
 	@Override
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Perspective.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -63,7 +99,7 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Perspective";
+		return Messages.PerspectiveEditor_Label;
 	}
 
 	@Override
@@ -79,13 +115,13 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.UI_LABEL__LABEL)	
+			FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__LABEL)	
 		};
 	}
 	
 	@Override
 	public String getDescription(Object element) {
-		return "Perspective Bla Bla Bla";
+		return Messages.PerspectiveEditor_Description;
 	}
 
 	@Override
@@ -107,31 +143,31 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.PerspectiveEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Selected Element");
+			l.setText(Messages.PerspectiveEditor_SelectedElement);
 
 			ComboViewer viewer = new ComboViewer(parent);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			viewer.getControl().setLayoutData(gd);
-			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 			IViewerValueProperty vProp = ViewerProperties.singleSelection();
 
 			final Binding[] binding = new Binding[1];
 			final IObservableValue uiObs = vProp.observe(viewer);
-			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
+			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
 			getMaster().addValueChangeListener(new IValueChangeListener() {
 
 				public void handleValueChange(ValueChangeEvent event) {
@@ -155,40 +191,177 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Label");
+			l.setText(Messages.PerspectiveEditor_Label);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Tooltip");
+			l.setText(Messages.PerspectiveEditor_Tooltip);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Icon URI");
+			l.setText(Messages.PerspectiveEditor_IconURI);
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__ICON_URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));
 
 			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
-			b.setText("Find ...");
+			b.setText(Messages.PerspectiveEditor_Find);
 		}
 
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.PerspectiveEditor_Controls);
+			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+			
+			final TableViewer viewer = new TableViewer(parent);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.heightHint = 200;
+			viewer.getControl().setLayoutData(gd);
+			ObservableListContentProvider cp = new ObservableListContentProvider();
+			viewer.setContentProvider(cp);
+			viewer.setLabelProvider(new ComponentLabelProvider(editor));
+			
+			IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+			viewer.setInput(prop.observeDetail(getMaster()));
+			
+			Composite buttonComp = new Composite(parent, SWT.NONE);
+			buttonComp.setLayoutData(new GridData(GridData.FILL,GridData.END,false,false));
+			GridLayout gl = new GridLayout(2,false);
+			gl.marginLeft=0;
+			gl.marginRight=0;
+			gl.marginWidth=0;
+			gl.marginHeight=0;
+			buttonComp.setLayout(gl);
+
+			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.PerspectiveEditor_Up);
+			b.setImage(getImage(b.getDisplay(), ARROW_UP));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! viewer.getSelection().isEmpty() ) {
+						IStructuredSelection s = (IStructuredSelection)viewer.getSelection();
+						if( s.size() == 1 ) {
+							Object obj = s.getFirstElement();
+							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
+							int idx = container.getChildren().indexOf(obj) - 1;
+							if( idx >= 0 ) {
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								
+								if( cmd.canExecute() ) {
+									getEditingDomain().getCommandStack().execute(cmd);
+									viewer.setSelection(new StructuredSelection(obj));
+								}
+							}
+							
+						}
+					}
+				}
+			});
+
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.PerspectiveEditor_Down);
+			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! viewer.getSelection().isEmpty() ) {
+						IStructuredSelection s = (IStructuredSelection)viewer.getSelection();
+						if( s.size() == 1 ) {
+							Object obj = s.getFirstElement();
+							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
+							int idx = container.getChildren().indexOf(obj) + 1;
+							if( idx < container.getChildren().size() ) {
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								
+								if( cmd.canExecute() ) {
+									getEditingDomain().getCommandStack().execute(cmd);
+									viewer.setSelection(new StructuredSelection(obj));
+								}
+							}
+							
+						}
+					}
+				}
+			});
+			
+			final ComboViewer childrenDropDown = new ComboViewer(buttonComp);
+			childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			childrenDropDown.setContentProvider(new ArrayContentProvider());
+			childrenDropDown.setLabelProvider(new LabelProvider() {
+				@Override
+				public String getText(Object element) {
+					EClass eclass = (EClass) element;
+					return eclass.getName();
+				}
+			});
+			childrenDropDown.setInput(new EClass[] {
+					BasicPackageImpl.Literals.PART_SASH_CONTAINER,
+					BasicPackageImpl.Literals.PART_STACK,
+					BasicPackageImpl.Literals.PART,
+					BasicPackageImpl.Literals.INPUT_PART,
+					AdvancedPackageImpl.Literals.PLACEHOLDER
+			});
+			childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART_SASH_CONTAINER));
+			
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! childrenDropDown.getSelection().isEmpty() ) {
+						EClass eClass = (EClass) ((IStructuredSelection)childrenDropDown.getSelection()).getFirstElement();
+						EObject eObject = EcoreUtil.create(eClass);
+						
+						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
+						
+						if( cmd.canExecute() ) {
+							getEditingDomain().getCommandStack().execute(cmd);
+							editor.setSelection(eObject);
+						}
+					}
+				}
+			});
+			
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.PerspectiveEditor_Remove);
+			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! viewer.getSelection().isEmpty() ) {
+						List<?> elements = ((IStructuredSelection)viewer.getSelection()).toList();
+						
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
+						if( cmd.canExecute() ) {
+							getEditingDomain().getCommandStack().execute(cmd);
+						}
+					}
+				}
+			});
+		}
+		
 		ControlFactory.createTagsWidget(parent, this);
 
 		return parent;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveStackEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveStackEditor.java
index 31624f5..276555f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveStackEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PerspectiveStackEditor.java
@@ -12,6 +12,7 @@
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.List;
 
 import org.eclipse.core.databinding.Binding;
 import org.eclipse.core.databinding.observable.list.IObservableList;
@@ -21,23 +22,42 @@
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
+import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
+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.advanced.MAdvancedFactory;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
+import org.eclipse.emf.databinding.IEMFListProperty;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditListProperty;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.MoveCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
 import org.eclipse.jface.databinding.swt.WidgetProperties;
 import org.eclipse.jface.databinding.viewers.IViewerValueProperty;
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
 import org.eclipse.jface.databinding.viewers.ViewerProperties;
 import org.eclipse.jface.databinding.viewers.ViewerSupport;
 import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
@@ -47,18 +67,20 @@
 	private Composite composite;
 	private Image image;
 	private EMFDataBindingContext context;
+	private ModelEditor modelEditor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
-	public PerspectiveStackEditor(EditingDomain editingDomain) {
+	public PerspectiveStackEditor(EditingDomain editingDomain, ModelEditor modelEditor) {
 		super(editingDomain);
+		this.modelEditor = modelEditor;
 	}
 
 	@Override
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/PerspectiveStack.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -70,7 +92,7 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Perspective Stack";
+		return Messages.PerspectiveStackEditor_Label;
 	}
 
 	@Override
@@ -80,7 +102,7 @@
 
 	@Override
 	public String getDescription(Object element) {
-		return "Perspective Stack Bla Bla Bla";
+		return Messages.PerspectiveStackEditor_Description;
 	}
 
 	@Override
@@ -103,31 +125,31 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.PerspectiveStackEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Selected Element");
+			l.setText(Messages.PerspectiveStackEditor_SelectedElement);
 
 			ComboViewer viewer = new ComboViewer(parent);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			viewer.getControl().setLayoutData(gd);
-			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL);
+			IEMFEditListProperty listProp = EMFEditProperties.list(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL);
 			IViewerValueProperty vProp = ViewerProperties.singleSelection();
 
 			final Binding[] binding = new Binding[1];
 			final IObservableValue uiObs = vProp.observe(viewer);
-			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
+			final IObservableValue mObs = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT).observeDetail(getMaster());
 			getMaster().addValueChangeListener(new IValueChangeListener() {
 
 				public void handleValueChange(ValueChangeEvent event) {
@@ -147,6 +169,122 @@
 				}
 			});
 		}
+		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.PerspectiveStackEditor_Perspectives);
+			
+			final TableViewer viewer = new TableViewer(parent);
+			viewer.setContentProvider(new ObservableListContentProvider());
+			viewer.setLabelProvider(new ComponentLabelProvider(modelEditor));
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.heightHint = 300;
+			viewer.getControl().setLayoutData(gd);
+			
+			
+			IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+			viewer.setInput(prop.observeDetail(getMaster()));
+			
+			Composite buttonComp = new Composite(parent, SWT.NONE);
+			buttonComp.setLayoutData(new GridData(GridData.FILL,GridData.END,false,false));
+			GridLayout gl = new GridLayout();
+			gl.marginLeft=0;
+			gl.marginRight=0;
+			gl.marginWidth=0;
+			gl.marginHeight=0;
+			buttonComp.setLayout(gl);
+
+			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.PartStackEditor_Up);
+			b.setImage(getImage(b.getDisplay(), ARROW_UP));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() { 
+				@Override
+				public void widgetSelected(SelectionEvent e) {  
+					if( ! viewer.getSelection().isEmpty() ) {
+						IStructuredSelection s = (IStructuredSelection)viewer.getSelection();
+						if( s.size() == 1 ) {
+							Object obj = s.getFirstElement();
+							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
+							int idx = container.getChildren().indexOf(obj) - 1;
+							if( idx >= 0 ) {
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								
+								if( cmd.canExecute() ) {
+									getEditingDomain().getCommandStack().execute(cmd);
+									viewer.setSelection(new StructuredSelection(obj));
+								}
+							}
+							
+						}
+					}
+				}
+			});
+
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.PartStackEditor_Down);
+			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! viewer.getSelection().isEmpty() ) {
+						IStructuredSelection s = (IStructuredSelection)viewer.getSelection();
+						if( s.size() == 1 ) {
+							Object obj = s.getFirstElement();
+							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
+							int idx = container.getChildren().indexOf(obj) + 1;
+							if( idx < container.getChildren().size() ) {
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								
+								if( cmd.canExecute() ) {
+									getEditingDomain().getCommandStack().execute(cmd);
+									viewer.setSelection(new StructuredSelection(obj));
+								}
+							}
+							
+						}
+					}
+				}
+			});
+						
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					MPerspective eObject = MAdvancedFactory.INSTANCE.createPerspective();
+					
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
+					
+					if( cmd.canExecute() ) {
+						getEditingDomain().getCommandStack().execute(cmd);
+						modelEditor.setSelection(eObject);
+					}
+				}
+			});
+			
+			
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText(Messages.PartStackEditor_Remove);
+			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					if( ! viewer.getSelection().isEmpty() ) {
+						List<?> elements = ((IStructuredSelection)viewer.getSelection()).toList();
+						
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
+						if( cmd.canExecute() ) {
+							getEditingDomain().getCommandStack().execute(cmd);
+						}
+					}
+				}
+			});
+		}
 
 		ControlFactory.createTagsWidget(parent, this);
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PlaceholderEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PlaceholderEditor.java
index 90b8d08..690708f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PlaceholderEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PlaceholderEditor.java
@@ -16,9 +16,10 @@
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MPlaceholder;
-import org.eclipse.e4.ui.model.application.MUILabel;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.MUILabel;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.ecore.EObject;
@@ -47,7 +48,7 @@
 	public Image getImage(Object element, Display display) {
 		if (image == null) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Placeholder.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -59,7 +60,7 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Placeholder";
+		return Messages.PlaceholderEditor_Label;
 	}
 
 	@Override
@@ -72,17 +73,17 @@
 			if( pl.getRef() instanceof MUILabel ) {
 				MUILabel label = (MUILabel) pl.getRef();
 				if( label.getLabel() != null && label.getLabel().trim().length() > 0 ) {
-					b.append(" (" + label.getLabel() + ")");
+					b.append(" (" + label.getLabel() + ")");  //$NON-NLS-1$//$NON-NLS-2$
 				} else if( label.getTooltip() != null && label.getTooltip().trim().length() > 0 ) {
-					b.append(" (" + label.getTooltip() + ")");
+					b.append(" (" + label.getTooltip() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
 				} else {
-					if( pl.getRef().getId() != null && pl.getRef().getId().trim().length() > 0 ) {
-						b.append(pl.getRef().getId());
+					if( pl.getRef().getElementId() != null && pl.getRef().getElementId().trim().length() > 0 ) {
+						b.append(pl.getRef().getElementId());
 					}
 				}
 			} else {
-				if( pl.getRef().getId() != null && pl.getRef().getId().trim().length() > 0 ) {
-					b.append(" (" + pl.getRef().getId() + ")");
+				if( pl.getRef().getElementId() != null && pl.getRef().getElementId().trim().length() > 0 ) {
+					b.append(" (" + pl.getRef().getElementId() + ")");  //$NON-NLS-1$//$NON-NLS-2$
 				}
 			}
 
@@ -94,7 +95,7 @@
 
 	@Override
 	public String getDescription(Object element) {
-		return "Placeholder Bla Bla Bla Bla";
+		return Messages.PlaceholderEditor_Descriptor;
 	}
 
 	@Override
@@ -116,13 +117,13 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.PlaceholderEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		return parent;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarEditor.java
index 552d287..0574fac 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarEditor.java
@@ -18,15 +18,16 @@
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.list.IListProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.ItemType;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
-import org.eclipse.e4.ui.model.application.MHandler;
-import org.eclipse.e4.ui.model.application.MToolItem;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+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.impl.UiPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
@@ -34,6 +35,7 @@
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.command.AddCommand;
 import org.eclipse.emf.edit.command.MoveCommand;
 import org.eclipse.emf.edit.command.RemoveCommand;
@@ -67,7 +69,7 @@
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
 	private class Struct {
 		private final String label;
@@ -91,7 +93,7 @@
 	public Image getImage(Object element, Display display) {
 		if( image == null ) {
 			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Toolbar.gif"));
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/Toolbar.gif")); //$NON-NLS-1$
 			} catch (MalformedURLException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -102,12 +104,12 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Toolbar";
+		return Messages.ToolBarEditor_Label;
 	}
 
 	@Override
 	public String getDescription(Object element) {
-		return "Toolbar bla bla bla";
+		return Messages.ToolBarEditor_Description;
 	}
 
 	@Override
@@ -129,19 +131,19 @@
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Id");
+			l.setText(Messages.ToolBarEditor_Id);
 
 			Text t = new Text(parent, SWT.BORDER);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("ToolbarItems");
+			l.setText(Messages.ToolBarEditor_ToolbarItems);
 			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
 			final TableViewer viewer = new TableViewer(parent);
@@ -155,21 +157,21 @@
 
 			{
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("Type");
+				column.getColumn().setText(Messages.ToolBarEditor_ToolbarItemsType);
 				column.getColumn().setWidth(300);
 				column.setLabelProvider(new ComponentLabelProvider(editor));
 			}
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ITEM__TYPE);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-				column.getColumn().setText("ItemType");
+				column.getColumn().setText(Messages.ToolBarEditor_ToolbarItemsItemType);
 				column.getColumn().setWidth(100);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MHandler>(prop.observeDetail(cp.getKnownElements())));
 			}
 
-			IEMFListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFListProperty prop = EMFEditProperties.list(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 			viewer.setInput(prop.observeDetail(master));
 
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -182,7 +184,7 @@
 			buttonComp.setLayout(gl);
 
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.ToolBarEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -195,7 +197,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) - 1;
 							if (idx >= 0) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -209,7 +211,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.ToolBarEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -222,7 +224,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) + 1;
 							if (idx < container.getChildren().size()) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -246,8 +248,8 @@
 				}
 			});
 
-			Struct defaultStruct = new Struct("Handled ToolItem", MApplicationPackage.Literals.HANDLED_TOOL_ITEM, false);
-			childrenDropDown.setInput(new Struct[] { defaultStruct, new Struct("Direct ToolItem", MApplicationPackage.Literals.DIRECT_TOOL_ITEM, false), new Struct("Separator", MApplicationPackage.Literals.TOOL_ITEM, true) });
+			Struct defaultStruct = new Struct(Messages.ToolBarEditor_HandledToolItem, MenuPackageImpl.Literals.HANDLED_TOOL_ITEM, false);
+			childrenDropDown.setInput(new Struct[] { defaultStruct, new Struct(Messages.ToolBarEditor_DirectToolItem, MenuPackageImpl.Literals.DIRECT_TOOL_ITEM, false), new Struct(Messages.ToolBarEditor_ToolControl, MenuPackageImpl.Literals.TOOL_CONTROL, false), new Struct(Messages.ToolBarEditor_Separator, MenuPackageImpl.Literals.TOOL_BAR_SEPARATOR, true) });
 			childrenDropDown.setSelection(new StructuredSelection(defaultStruct));
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
@@ -259,13 +261,9 @@
 					if (!childrenDropDown.getSelection().isEmpty()) {
 						Struct struct = (Struct) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement();
 						EClass eClass = struct.eClass;
-						MToolItem eObject = (MToolItem) MApplicationFactory.eINSTANCE.create(eClass);
+						MToolBarElement eObject = (MToolBarElement) EcoreUtil.create(eClass);
 
-						if (struct.separator) {
-							eObject.setType(ItemType.SEPARATOR);
-						}
-
-						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
+						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
 
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
@@ -278,7 +276,7 @@
 			});
 
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.ToolBarEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -286,7 +284,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if (!viewer.getSelection().isEmpty()) {
 						List<?> keybinding = ((IStructuredSelection) viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, keybinding);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, keybinding);
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarSeparatorEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarSeparatorEditor.java
new file mode 100644
index 0000000..2ef4e6c
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarSeparatorEditor.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.ui.internal.common.component;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.edit.EMFEditProperties;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class ToolBarSeparatorEditor extends AbstractComponentEditor {
+	private Image separatorImage;
+	private Composite composite;
+	private EMFDataBindingContext context;
+	
+	public ToolBarSeparatorEditor(EditingDomain editingDomain) {
+		super(editingDomain);
+	}
+
+	@Override
+	public Image getImage(Object element, Display display) {
+		if (separatorImage == null) {
+			try {
+				separatorImage = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolBarSeparator.gif")); //$NON-NLS-1$
+			} catch (MalformedURLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+		return separatorImage;
+	}
+
+	@Override
+	public String getLabel(Object element) {
+		return Messages.ToolBarSeparatorEditor_Label;
+	}
+
+	@Override
+	public String getDetailLabel(Object element) {
+		return null;
+	}
+
+	@Override
+	public String getDescription(Object element) {
+		return null;
+	}
+
+	@Override
+	public Composite getEditor(Composite parent, Object object) {
+		if (composite == null) {
+			context = new EMFDataBindingContext();
+			composite = createForm(parent, context, getMaster());
+		}
+		getMaster().setValue(object);
+		return composite;
+	}
+	
+	private Composite createForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
+		parent = new Composite(parent, SWT.NONE);
+		parent.setLayout(new GridLayout(3, false));
+
+		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.ToolBarSeparatorEditor_Id);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
+		}
+
+		return parent;
+	}
+
+	@Override
+	public IObservableList getChildList(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolControlEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolControlEditor.java
new file mode 100644
index 0000000..429fe92
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolControlEditor.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.ui.internal.common.component;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Map.Entry;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.ContributionClassDialog;
+import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.databinding.edit.EMFEditProperties;
+import org.eclipse.emf.databinding.edit.IEMFEditListProperty;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
+import org.eclipse.jface.databinding.swt.WidgetProperties;
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class ToolControlEditor extends AbstractComponentEditor {
+	private Image image;
+	private EMFDataBindingContext context;
+	private Composite composite;
+	private IProject project;
+
+	public ToolControlEditor(EditingDomain editingDomain, IProject project) {
+		super(editingDomain);
+		this.project = project;
+	}
+
+	@Override
+	public String getLabel(Object element) {
+		return Messages.ToolControlEditor_Label;
+	}
+
+	@Override
+	public String getDescription(Object element) {
+		return Messages.ToolControlEditor_Description;
+	}
+
+	@Override
+	public Image getImage(Object element, Display display) {
+		if (image == null) {
+			try {
+				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolControl.gif")); //$NON-NLS-1$
+			} catch (MalformedURLException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+		return image;
+	}
+
+	@Override
+	public String getDetailLabel(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Composite getEditor(Composite parent, Object object) {
+		if (composite == null) {
+			context = new EMFDataBindingContext();
+			composite = createForm(parent, context, getMaster());
+		}
+		getMaster().setValue(object);
+		return composite;
+	}
+
+	private Composite createForm(Composite parent, EMFDataBindingContext context2, WritableValue master) {
+		parent = new Composite(parent, SWT.NONE);
+		parent.setLayout(new GridLayout(3, false));
+
+		IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.ToolControlEditor_Id);
+
+			Text t = new Text(parent, SWT.BORDER);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			t.setLayoutData(gd);
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(master));
+		}
+
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText(Messages.ToolControlEditor_ClassURI);
+
+			Text t = new Text(parent, SWT.BORDER);
+			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI).observeDetail(master));
+
+			final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
+			b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE));
+			b.setText("Find ...");
+			b.addSelectionListener(new SelectionAdapter() {
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					ContributionClassDialog dialog = new ContributionClassDialog(b.getShell(), project, getEditingDomain(), (MContribution) getMaster().getValue());
+					dialog.open();
+				}
+			});
+		}
+		
+		// ------------------------------------------------------------
+		{
+			Label l = new Label(parent, SWT.NONE);
+			l.setText("Persited State");
+			l.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
+
+			TableViewer tableviewer = new TableViewer(parent);
+			tableviewer.getTable().setHeaderVisible(true);
+			ObservableListContentProvider cp = new ObservableListContentProvider();
+			tableviewer.setContentProvider(cp);
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.heightHint = 80;
+			tableviewer.getControl().setLayoutData(gd);
+			
+			TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
+			column.getColumn().setText("Key");
+			column.getColumn().setWidth(200);
+			column.setLabelProvider(new ColumnLabelProvider() {
+				@SuppressWarnings("unchecked")
+				@Override
+				public String getText(Object element) {
+					Entry<String, String> entry = (Entry<String, String>) element;
+					return entry.getKey();
+				}
+			}); 
+
+			//FIXME How can we react upon changes in the Map-Value?
+			column = new TableViewerColumn(tableviewer, SWT.NONE);
+			column.getColumn().setText("Value");
+			column.getColumn().setWidth(200);
+			column.setLabelProvider(new ColumnLabelProvider() {
+				@SuppressWarnings("unchecked")
+				@Override
+				public String getText(Object element) {
+					Entry<String, String> entry = (Entry<String, String>) element;
+					return entry.getValue();
+				}
+			});
+			
+			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__PERSISTED_STATE);
+			tableviewer.setInput(prop.observeDetail(getMaster()));
+			
+			Composite buttonComp = new Composite(parent, SWT.NONE);
+			buttonComp.setLayoutData(new GridData(GridData.FILL,GridData.END,false,false));
+			GridLayout gl = new GridLayout();
+			gl.marginLeft=0;
+			gl.marginRight=0;
+			gl.marginWidth=0;
+			gl.marginHeight=0;
+			buttonComp.setLayout(gl);
+
+			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText("Add ...");
+			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+
+			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+			b.setText("Remove");
+			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
+			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+		}
+
+		return parent;
+	}
+
+	@Override
+	public IObservableList getChildList(Object element) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
index 345d3b7..9bf6c01 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolItemEditor.java
@@ -10,17 +10,16 @@
  ******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal.common.component;
 
-import java.net.MalformedURLException;
-import java.net.URL;
-
 import org.eclipse.core.databinding.observable.list.IObservableList;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.core.databinding.property.value.IValueProperty;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
-import org.eclipse.e4.ui.model.application.ItemType;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MToolItem;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.ItemType;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
@@ -31,18 +30,15 @@
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
-public class ToolItemEditor extends AbstractComponentEditor {
+public abstract class ToolItemEditor extends AbstractComponentEditor {
 	private Composite composite;
-	private Image image;
 	private EMFDataBindingContext context;
 
 	public ToolItemEditor(EditingDomain editingDomain) {
@@ -50,30 +46,6 @@
 	}
 
 	@Override
-	public Image getImage(Object element, Display display) {
-		if (image == null) {
-			try {
-				image = loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.ui.model.workbench.edit/icons/full/obj16/ToolItem_separator.gif"));
-			} catch (MalformedURLException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-		}
-
-		return image;
-	}
-
-	@Override
-	public String getLabel(Object element) {
-		return "Separator";
-	}
-
-	@Override
-	public String getDescription(Object element) {
-		return "Separator bla bla bla";
-	}
-
-	@Override
 	public Composite getEditor(Composite parent, Object object) {
 		if (composite == null) {
 			context = new EMFDataBindingContext();
@@ -96,11 +68,9 @@
 		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 		gd.horizontalSpan = 2;
 		t.setLayoutData(gd);
-		context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(master));
+		context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(master));
 
-		if (this.getClass() != ToolItemEditor.class) {
-			createFormSubTypeForm(parent, context, master);
-		}
+		createFormSubTypeForm(parent, context, master);
 
 		return parent;
 	}
@@ -119,7 +89,7 @@
 			GridData gd = new GridData();
 			gd.horizontalSpan = 2;
 			viewer.getControl().setLayoutData(gd);
-			IObservableValue itemTypeObs = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.ITEM__TYPE).observeDetail(master);
+			IObservableValue itemTypeObs = EMFEditProperties.value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE).observeDetail(master);
 			context.bindValue(ViewerProperties.singleSelection().observe(viewer), itemTypeObs);
 		}
 
@@ -132,7 +102,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observe(t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL).observeDetail(master));
+			context.bindValue(textProp.observe(t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
@@ -144,7 +114,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observe(t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
+			context.bindValue(textProp.observe(t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
@@ -154,7 +124,7 @@
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observe(t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__ICON_URI).observeDetail(master));
+			context.bindValue(textProp.observe(t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));
 
 			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
 			b.setText("Find ...");
@@ -182,23 +152,16 @@
 	@Override
 	public String getDetailLabel(Object element) {
 		MToolItem item = (MToolItem) element;
-		if (item.getType() == ItemType.SEPARATOR) {
-			return null;
-		} else {
-			if (item.getLabel() != null && item.getLabel().trim().length() > 0) {
-				return item.getLabel();
-			} else if (item.getTooltip() != null && item.getTooltip().trim().length() > 0) {
-				return item.getTooltip();
-			}
+		if (item.getLabel() != null && item.getLabel().trim().length() > 0) {
+			return item.getLabel();
+		} else if (item.getTooltip() != null && item.getTooltip().trim().length() > 0) {
+			return item.getTooltip();
 		}
 		return null;
 	}
 
 	@Override
 	public FeaturePath[] getLabelProperties() {
-		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.UI_LABEL__LABEL),
-			FeaturePath.fromList(MApplicationPackage.Literals.UI_LABEL__TOOLTIP)
-		};
+		return new FeaturePath[] { FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__LABEL), FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__TOOLTIP) };
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowTrimEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimBarEditor.java
similarity index 85%
rename from bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowTrimEditor.java
rename to bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimBarEditor.java
index b95636f..033eafa 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowTrimEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimBarEditor.java
@@ -21,12 +21,13 @@
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
-import org.eclipse.e4.ui.model.application.MToolBar;
-import org.eclipse.e4.ui.model.application.MTrimContainer;
-import org.eclipse.e4.ui.model.application.SideValue;
+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.MGenericTrimContainer;
+import org.eclipse.e4.ui.model.application.ui.SideValue;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
@@ -58,16 +59,16 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
-public class WindowTrimEditor extends AbstractComponentEditor {
+public class TrimBarEditor extends AbstractComponentEditor {
 
 	private Composite composite;
 	private Image image;
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 
-	public WindowTrimEditor(EditingDomain editingDomain, ModelEditor editor) {
+	public TrimBarEditor(EditingDomain editingDomain, ModelEditor editor) {
 		super(editingDomain);
 		this.editor = editor;
 	}
@@ -122,7 +123,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
@@ -136,7 +137,7 @@
 			GridData gd = new GridData();
 			gd.horizontalSpan = 2;
 			viewer.getControl().setLayoutData(gd);
-			IObservableValue sideValueObs = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.TRIM_CONTAINER__SIDE).observeDetail(master);
+			IObservableValue sideValueObs = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.GENERIC_TRIM_CONTAINER__SIDE).observeDetail(master);
 			context.bindValue(ViewerProperties.singleSelection().observe(viewer), sideValueObs);
 		}
 
@@ -153,7 +154,7 @@
 			gd.heightHint = 300;
 			viewer.getControl().setLayoutData(gd);
 			
-			IEMFListProperty prop = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 			viewer.setInput(prop.observeDetail(getMaster()));
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -179,7 +180,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -206,7 +207,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) + 1;
 							if( idx < container.getChildren().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -226,8 +227,8 @@
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MToolBar toolbar = MApplicationFactory.eINSTANCE.createToolBar();
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, toolbar);
+					MToolBar toolbar = MMenuFactory.INSTANCE.createToolBar();
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, toolbar);
 					
 					if( cmd.canExecute() ) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -247,7 +248,7 @@
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> elements = ((IStructuredSelection)viewer.getSelection()).toList();
 						
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -266,7 +267,7 @@
 
 	@Override
 	public String getDetailLabel(Object element) {
-		MTrimContainer<?> trim = (MTrimContainer<?>) element;
+		MGenericTrimContainer<?> trim = (MGenericTrimContainer<?>) element;
 		
 		if( trim.getSide() != null ) {
 			return trim.getSide().toString();
@@ -278,7 +279,7 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.TRIM_CONTAINER__SIDE)	
+			FeaturePath.fromList(UiPackageImpl.Literals.GENERIC_TRIM_CONTAINER__SIDE)	
 		};
 	}
 
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimmedWindowEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimmedWindowEditor.java
new file mode 100644
index 0000000..aabc235
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimmedWindowEditor.java
@@ -0,0 +1,36 @@
+package org.eclipse.e4.tools.emf.ui.internal.common.component;
+
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.property.list.IListProperty;
+import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.emf.databinding.EMFProperties;
+import org.eclipse.emf.edit.domain.EditingDomain;
+
+public class TrimmedWindowEditor extends WindowEditor {
+	private IListProperty TRIMMED_WINDOW__TRIM_BARS = EMFProperties.list(BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS);
+	
+	public TrimmedWindowEditor(EditingDomain editingDomain) {
+		super(editingDomain);
+	}
+
+	public IObservableList getChildList(Object element) {
+		IObservableList list = super.getChildList(element);
+		
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_TRIMMED_WINDOW_TRIMS, TRIMMED_WINDOW__TRIM_BARS, element, "TrimBars") {
+
+			@Override
+			protected boolean accepted(Object o) {
+				return true;
+			}
+
+		});
+		return list;
+	}
+	
+	@Override
+	public String getLabel(Object element) {
+		return "Trimmed Window";
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java
index 222d4dc..e2d17d2 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/WindowEditor.java
@@ -23,9 +23,11 @@
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MWindow;
-import org.eclipse.e4.ui.model.application.MWindowTrim;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.EMFProperties;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -49,9 +51,10 @@
 	private Image image;
 	private EMFDataBindingContext context;
 
-	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
-	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
-	private IValueProperty WINDOW__MAIN_MENU = EMFProperties.value(MApplicationPackage.Literals.WINDOW__MAIN_MENU);
+	private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
+	private IListProperty WINDOW__WINDOWS = EMFProperties.list(BasicPackageImpl.Literals.WINDOW__WINDOWS);
+	private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
+	private IValueProperty WINDOW__MAIN_MENU = EMFProperties.value(BasicPackageImpl.Literals.WINDOW__MAIN_MENU);
 
 	public WindowEditor(EditingDomain editingDomain) {
 		super(editingDomain);
@@ -107,7 +110,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
@@ -119,7 +122,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__X).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__X).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
@@ -131,7 +134,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__Y).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__Y).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
@@ -143,7 +146,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__WIDTH).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__WIDTH).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
@@ -155,7 +158,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan=2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__HEIGHT).observeDetail(getMaster()));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__HEIGHT).observeDetail(getMaster()));
 		}
 
 		// ------------------------------------------------------------
@@ -167,7 +170,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
@@ -179,7 +182,7 @@
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			t.setLayoutData(gd);
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP).observeDetail(master));
 		}
 
 		// ------------------------------------------------------------
@@ -189,7 +192,7 @@
 
 			Text t = new Text(parent, SWT.BORDER);
 			t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__ICON_URI).observeDetail(master));
+			context.bindValue(textProp.observeDelayed(200,t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));
 
 			Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
 			b.setText("Find ...");
@@ -214,12 +217,12 @@
 			}
 
 		});
-
-		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_WINDOW_TRIMS, ELEMENT_CONTAINER__CHILDREN, element, "Trims") {
+		
+		list.add(new VirtualEntry<Object>( ModelEditor.VIRTUAL_WINDOWS, WINDOW__WINDOWS, element, "Windows") {
 
 			@Override
 			protected boolean accepted(Object o) {
-				return o instanceof MWindowTrim;
+				return true;
 			}
 
 		});
@@ -228,7 +231,7 @@
 
 			@Override
 			protected boolean accepted(Object o) {
-				return !(o instanceof MWindowTrim);
+				return true;
 			}
 
 		});
@@ -266,7 +269,7 @@
 	@Override
 	public FeaturePath[] getLabelProperties() {
 		return new FeaturePath[] {
-			FeaturePath.fromList(MApplicationPackage.Literals.UI_LABEL__LABEL)	
+			FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__LABEL)	
 		};
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractCommandSelectionDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractCommandSelectionDialog.java
index a2ccb38..87a3710 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractCommandSelectionDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AbstractCommandSelectionDialog.java
@@ -13,13 +13,12 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.core.databinding.observable.list.WritableList;
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
 import org.eclipse.e4.tools.emf.ui.internal.PatternFilter;
 import org.eclipse.e4.ui.model.application.MApplication;
-import org.eclipse.e4.ui.model.application.MCommand;
 import org.eclipse.e4.ui.model.application.MModelComponent;
 import org.eclipse.e4.ui.model.application.MModelComponents;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.jface.dialogs.TitleAreaDialog;
@@ -145,8 +144,8 @@
 			if( cmd.getDescription() != null ) {
 				styledString.append(" - " + cmd.getDescription(),StyledString.DECORATIONS_STYLER);
 			}
-			if( cmd.getId() != null ) {
-				styledString.append(" - " + cmd.getId(),StyledString.DECORATIONS_STYLER);
+			if( cmd.getElementId() != null ) {
+				styledString.append(" - " + cmd.getElementId(),StyledString.DECORATIONS_STYLER);
 			}
 			cell.setText(styledString.getString());
 			cell.setStyleRanges(styledString.getStyleRanges());
@@ -167,8 +166,8 @@
 				s += " " + command.getDescription();
 			}
 			
-			if( command.getId() != null ) {
-				s += " " + command.getId();
+			if( command.getElementId() != null ) {
+				s += " " + command.getElementId();
 			}
 			
 			return s;
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ContributionClassDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ContributionClassDialog.java
index d12ccd5..e0fd19c 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ContributionClassDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/ContributionClassDialog.java
@@ -17,8 +17,8 @@
 import org.eclipse.e4.tools.emf.ui.common.IClassContributionProvider.ContributionResultHandler;
 import org.eclipse.e4.tools.emf.ui.common.IClassContributionProvider.Filter;
 import org.eclipse.e4.tools.emf.ui.internal.common.ClassContributionCollector;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
 import org.eclipse.e4.ui.model.application.MContribution;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -155,7 +155,7 @@
 		if( ! s.isEmpty() ) {
 			ContributionData cd = (ContributionData) s.getFirstElement();
 			String uri = "platform:/plugin/" + cd.bundleName + "/" + cd.className;
-			Command cmd = SetCommand.create(editingDomain, contribution, MApplicationPackage.Literals.CONTRIBUTION__URI, uri);
+			Command cmd = SetCommand.create(editingDomain, contribution, ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI, uri);
 			if( cmd.canExecute() ) {
 				editingDomain.getCommandStack().execute(cmd);
 				super.okPressed();
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandledMenuItemCommandSelectionDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandledMenuItemCommandSelectionDialog.java
new file mode 100644
index 0000000..39f72eb
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandledMenuItemCommandSelectionDialog.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
+
+import org.eclipse.e4.tools.emf.ui.common.IModelResource;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.swt.widgets.Shell;
+
+public class HandledMenuItemCommandSelectionDialog extends AbstractCommandSelectionDialog {
+	private MHandledItem handler;
+	
+	public HandledMenuItemCommandSelectionDialog(Shell parentShell, MHandledItem handler, IModelResource resource) {
+		super(parentShell, resource);
+		this.handler = handler;
+	}
+	
+	@Override
+	protected String getShellTitle() {
+		return  "MenuItem Command";
+	}
+	
+	@Override
+	protected String getDialogTitle() {
+		return "MenuItem-Command";
+	}
+	
+	@Override
+	protected String getDialogMessage() {
+		return "Connect the MenuItem to a command";
+	}
+
+	@Override
+	protected Command createStoreCommand( EditingDomain editingDomain, MCommand command) {
+		return SetCommand.create(editingDomain, handler, MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND, command);
+	}
+}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandledToolItemCommandSelectionDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandledToolItemCommandSelectionDialog.java
new file mode 100644
index 0000000..8f9b034
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandledToolItemCommandSelectionDialog.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
+
+import org.eclipse.e4.tools.emf.ui.common.IModelResource;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.swt.widgets.Shell;
+
+public class HandledToolItemCommandSelectionDialog extends AbstractCommandSelectionDialog {
+	private MHandledItem handler;
+	
+	public HandledToolItemCommandSelectionDialog(Shell parentShell, MHandledItem handler, IModelResource resource) {
+		super(parentShell, resource);
+		this.handler = handler;
+	}
+	
+	@Override
+	protected String getShellTitle() {
+		return  "ToolItem Command";
+	}
+	
+	@Override
+	protected String getDialogTitle() {
+		return "ToolItem-Command";
+	}
+	
+	@Override
+	protected String getDialogMessage() {
+		return "Connect the ToolItem to a command";
+	}
+
+	@Override
+	protected Command createStoreCommand( EditingDomain editingDomain, MCommand command) {
+		return SetCommand.create(editingDomain, handler, MenuPackageImpl.Literals.HANDLED_ITEM__COMMAND, command);
+	}
+}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandlerCommandSelectionDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandlerCommandSelectionDialog.java
index 3532bf7..ace3d85 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandlerCommandSelectionDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/HandlerCommandSelectionDialog.java
@@ -11,9 +11,9 @@
 package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
 
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MCommand;
-import org.eclipse.e4.ui.model.application.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -44,6 +44,6 @@
 
 	@Override
 	protected Command createStoreCommand( EditingDomain editingDomain, MCommand command) {
-		return SetCommand.create(editingDomain, handler, MApplicationPackage.Literals.HANDLER__COMMAND, command);
+		return SetCommand.create(editingDomain, handler, CommandsPackageImpl.Literals.HANDLER__COMMAND, command);
 	}
 }
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/KeyBindingCommandSelectionDialog.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/KeyBindingCommandSelectionDialog.java
index 6b7ed91..bda337a 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/KeyBindingCommandSelectionDialog.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/KeyBindingCommandSelectionDialog.java
@@ -11,9 +11,9 @@
 package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs;
 
 import org.eclipse.e4.tools.emf.ui.common.IModelResource;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MCommand;
-import org.eclipse.e4.ui.model.application.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -44,6 +44,6 @@
 	
 	@Override
 	protected Command createStoreCommand( EditingDomain editingDomain, MCommand command) {
-		return SetCommand.create(editingDomain, binding, MApplicationPackage.Literals.KEY_BINDING__COMMAND, command);
+		return SetCommand.create(editingDomain, binding, CommandsPackageImpl.Literals.KEY_BINDING__COMMAND, command);
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VBindingTableEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VBindingTableEditor.java
index 9c3df27..fd90c78 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VBindingTableEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VBindingTableEditor.java
@@ -22,15 +22,17 @@
 import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
 import org.eclipse.core.databinding.observable.value.WritableValue;
 import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
+import org.eclipse.e4.tools.emf.ui.internal.Messages;
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MBindingContainer;
-import org.eclipse.e4.ui.model.application.MBindingContext;
-import org.eclipse.e4.ui.model.application.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MBindingContext;
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MBindingTableContainer;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.command.CompoundCommand;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
@@ -89,7 +91,7 @@
 
 	@Override
 	public String getLabel(Object element) {
-		return "Binding Configuration";
+		return Messages.VBindingTableEditor_Label;
 	}
 
 	@Override
@@ -99,7 +101,7 @@
 
 	@Override
 	public String getDescription(Object element) {
-		return "Binding Configuration Bla Bla Bla Bla";
+		return Messages.VBindingTableEditor_Description;
 	}
 
 	@Override
@@ -120,7 +122,7 @@
 
 		{
 			Label l = new Label(parent, SWT.NONE);
-			l.setText("Contexts");
+			l.setText(Messages.VBindingTableEditor_Contexts);
 			l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
 			contextsViewer = new TreeViewer(parent);
@@ -133,7 +135,7 @@
 			
 			final WritableList list = new WritableList();
 			
-			IEMFValueProperty listProp = EMFProperties.value(MApplicationPackage.Literals.BINDING_CONTAINER__ROOT_CONTEXT);
+			IEMFValueProperty listProp = EMFProperties.value(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT);
 			IObservableValue val = listProp.observeDetail(getMaster());
 			val.addValueChangeListener(new IValueChangeListener() {
 				
@@ -151,10 +153,10 @@
 			
 			
 			{
-				IEMFValueProperty prop = EMFProperties.value(MApplicationPackage.Literals.BINDING_CONTEXT__NAME);
+				IEMFValueProperty prop = EMFProperties.value(CommandsPackageImpl.Literals.BINDING_CONTEXT__NAME);
 				
 				TreeViewerColumn column = new TreeViewerColumn(contextsViewer, SWT.NONE);
-				column.getColumn().setText("Name");
+				column.getColumn().setText(Messages.VBindingTableEditor_Name);
 				column.getColumn().setWidth(200);				
 				column.setLabelProvider(new ObservableColumnLabelProvider<MBindingContext>(prop.observeDetail(pv.getKnownElements())));
 				column.setEditingSupport(new EditingSupport(contextsViewer) {
@@ -162,7 +164,7 @@
 					
 					@Override
 					protected void setValue(Object element, Object value) {
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.BINDING_CONTEXT__NAME, value);
+						Command cmd = SetCommand.create(getEditingDomain(), element, CommandsPackageImpl.Literals.BINDING_CONTEXT__NAME, value);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -171,7 +173,7 @@
 					@Override
 					protected Object getValue(Object element) {
 						MBindingContext ctx = (MBindingContext) element; 
-						return ctx.getName() != null ? ctx.getName() : "";
+						return ctx.getName() != null ? ctx.getName() : ""; //$NON-NLS-1$
 					}
 					
 					@Override
@@ -187,10 +189,10 @@
 			}
 			
 			{
-				IEMFValueProperty prop = EMFProperties.value(MApplicationPackage.Literals.BINDING_CONTEXT__DESCRIPTION);
+				IEMFValueProperty prop = EMFProperties.value(CommandsPackageImpl.Literals.BINDING_CONTEXT__DESCRIPTION);
 				
 				TreeViewerColumn column = new TreeViewerColumn(contextsViewer, SWT.NONE);
-				column.getColumn().setText("Description");
+				column.getColumn().setText(Messages.VBindingTableEditor_LabelDescription);
 				column.getColumn().setWidth(200);				
 				column.setLabelProvider(new ObservableColumnLabelProvider<MBindingContext>(prop.observeDetail(pv.getKnownElements())));				
 				column.setEditingSupport(new EditingSupport(contextsViewer) {
@@ -198,7 +200,7 @@
 					
 					@Override
 					protected void setValue(Object element, Object value) {
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.BINDING_CONTEXT__DESCRIPTION, value);
+						Command cmd = SetCommand.create(getEditingDomain(), element, CommandsPackageImpl.Literals.BINDING_CONTEXT__DESCRIPTION, value);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -207,7 +209,7 @@
 					@Override
 					protected Object getValue(Object element) {
 						MBindingContext ctx = (MBindingContext) element; 
-						return ctx.getDescription() != null ? ctx.getDescription() : "";
+						return ctx.getDescription() != null ? ctx.getDescription() : ""; //$NON-NLS-1$
 					}
 					
 					@Override
@@ -223,10 +225,10 @@
 			}
 			
 			{
-				IEMFValueProperty prop = EMFProperties.value(MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+				IEMFValueProperty prop = EMFProperties.value(ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 				
 				TreeViewerColumn column = new TreeViewerColumn(contextsViewer, SWT.NONE);
-				column.getColumn().setText("Id");
+				column.getColumn().setText(Messages.VBindingTableEditor_Id);
 				column.getColumn().setWidth(200);
 				column.setLabelProvider(new ObservableColumnLabelProvider<MBindingContext>(prop.observeDetail(pv.getKnownElements())));				
 				column.setEditingSupport(new EditingSupport(contextsViewer) {
@@ -234,7 +236,7 @@
 					
 					@Override
 					protected void setValue(Object element, Object value) {
-						Command cmd = SetCommand.create(getEditingDomain(), element, MApplicationPackage.Literals.APPLICATION_ELEMENT__ID, value);
+						Command cmd = SetCommand.create(getEditingDomain(), element, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID, value);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -243,7 +245,7 @@
 					@Override
 					protected Object getValue(Object element) {
 						MBindingContext ctx = (MBindingContext) element; 
-						return ctx.getId() != null ? ctx.getId() : "";
+						return ctx.getElementId() != null ? ctx.getElementId() : ""; //$NON-NLS-1$
 					}
 					
 					@Override
@@ -269,7 +271,7 @@
 							|| event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL);
 				}
 			};
-			TreeViewerEditor.create(contextsViewer, editorActivationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR);
+			TreeViewerEditor.create(contextsViewer, editorActivationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.KEEP_EDITOR_ON_DOUBLE_CLICK);
 
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -282,36 +284,36 @@
 			buttonComp.setLayout(gl);
 			
 			Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Up");
+			b.setText(Messages.VBindingTableEditor_Up);
 			b.setImage(getImage(b.getDisplay(), ARROW_UP));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Down");
+			b.setText(Messages.VBindingTableEditor_Down);
 			b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Add ...");
+			b.setText(Messages.VBindingTableEditor_Add);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
 					IStructuredSelection s = (IStructuredSelection) contextsViewer.getSelection();
-					MBindingContext context = MApplicationFactory.eINSTANCE.createBindingContext();
+					MBindingContext context = MCommandsFactory.INSTANCE.createBindingContext();
 					MBindingContext parentContext = null;
 					
 					if( ! s.isEmpty() ) {
 						parentContext = (MBindingContext) s.getFirstElement();
-						Command cmd = AddCommand.create(getEditingDomain(), parentContext, MApplicationPackage.Literals.BINDING_CONTEXT__CHILDREN, context);
+						Command cmd = AddCommand.create(getEditingDomain(), parentContext, CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN, context);
 						
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 							contextsViewer.setSelection(new StructuredSelection(context));
 						}
-					} else if( s.isEmpty() && ((MBindingContainer)getMaster().getValue()).getRootContext() == null ) {
-						Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_CONTAINER__ROOT_CONTEXT, context);
+					} else if( s.isEmpty() && ((MBindingTableContainer)getMaster().getValue()).getRootContext() == null ) {
+						Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, context);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 							contextsViewer.setSelection(new StructuredSelection(context));
@@ -323,7 +325,7 @@
 			});
 			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
-			b.setText("Remove");
+			b.setText(Messages.VBindingTableEditor_Remove);
 			b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
 			b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
 			b.addSelectionListener(new SelectionAdapter() {
@@ -336,14 +338,14 @@
 						for( Object o : s.toArray() ) {
 							MBindingContext ctx = (MBindingContext) o;
 							EObject owner = ((EObject)ctx).eContainer();
-							if( owner instanceof MBindingContainer ) {
-								Command cmd = SetCommand.create(getEditingDomain(), owner, MApplicationPackage.Literals.BINDING_CONTAINER__ROOT_CONTEXT, null);
+							if( owner instanceof MBindingTableContainer ) {
+								Command cmd = SetCommand.create(getEditingDomain(), owner, CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, null);
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
 									return;
 								}
 							} else {
-								commands.add(RemoveCommand.create(getEditingDomain(), owner, MApplicationPackage.Literals.BINDING_CONTEXT__CHILDREN, ctx));
+								commands.add(RemoveCommand.create(getEditingDomain(), owner, CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN, ctx));
 							}
 						}
 						
@@ -389,10 +391,10 @@
 						IStructuredSelection s = (IStructuredSelection) bindingViewer.getSelection();
 						if (s.size() == 1) {
 							Object obj = s.getFirstElement();
-							MBindingContainer container = (MBindingContainer) getMaster().getValue();
+							MBindingTableContainer container = (MBindingTableContainer) getMaster().getValue();
 							int idx = container.getBindingTables().indexOf(obj) - 1;
 							if (idx >= 0) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -416,10 +418,10 @@
 						IStructuredSelection s = (IStructuredSelection) bindingViewer.getSelection();
 						if (s.size() == 1) {
 							Object obj = s.getFirstElement();
-							MBindingContainer container = (MBindingContainer) getMaster().getValue();
+							MBindingTableContainer container = (MBindingTableContainer) getMaster().getValue();
 							int idx = container.getBindingTables().indexOf(obj) + 1;
 							if (idx < container.getBindingTables().size()) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES, obj, idx);
 
 								if (cmd.canExecute()) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -439,8 +441,8 @@
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MBindingTable command = MApplicationFactory.eINSTANCE.createBindingTable();
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES, command);
+					MBindingTable command = MCommandsFactory.INSTANCE.createBindingTable();
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES, command);
 
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -458,7 +460,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if (!bindingViewer.getSelection().isEmpty()) {
 						List<?> commands = ((IStructuredSelection) bindingViewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES, commands);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES, commands);
 						if (cmd.canExecute()) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
@@ -477,7 +479,7 @@
 	}
 
 	private class ObservableFactoryImpl implements IObservableFactory {
-		private IEMFListProperty prop = EMFProperties.list(MApplicationPackage.Literals.BINDING_CONTEXT__CHILDREN);
+		private IEMFListProperty prop = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN);
 		
 		public IObservable createObservable(Object target) {
 			if( target instanceof IObservableList ) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VCommandEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VCommandEditor.java
index 26be242..91ee4b8 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VCommandEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VCommandEditor.java
@@ -19,10 +19,11 @@
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
 import org.eclipse.e4.ui.model.application.MApplication;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MCommand;
-import org.eclipse.e4.ui.model.application.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsFactoryImpl;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
@@ -113,7 +114,7 @@
 			viewer.getTable().setHeaderVisible(true);
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.COMMAND__COMMAND_NAME);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME);
 					
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Name");
@@ -122,7 +123,7 @@
 			}
 			
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 					
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Id");
@@ -200,7 +201,7 @@
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MCommand command = MApplicationFactory.eINSTANCE.createCommand();
+					MCommand command = CommandsFactoryImpl.eINSTANCE.createCommand();
 					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), commandsFeature, command);
 					
 					if( cmd.canExecute() ) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VHandlerEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VHandlerEditor.java
index 28b4d8a..a522ebf 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VHandlerEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VHandlerEditor.java
@@ -18,10 +18,11 @@
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MHandler;
-import org.eclipse.e4.ui.model.application.MHandlerContainer;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MHandlerContainer;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -109,7 +110,7 @@
 			viewer.getTable().setHeaderVisible(true);
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MApplicationPackage.Literals.HANDLER__COMMAND, MApplicationPackage.Literals.COMMAND__COMMAND_NAME));
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(CommandsPackageImpl.Literals.HANDLER__COMMAND, CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME));
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Command");
@@ -118,7 +119,7 @@
 			}
 			
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.CONTRIBUTION__URI);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.CONTRIBUTION__CONTRIBUTION_URI);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Class");
@@ -127,7 +128,7 @@
 			}
 			
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Id");
@@ -158,7 +159,7 @@
 							MHandlerContainer container = (MHandlerContainer) getMaster().getValue();
 							int idx = container.getHandlers().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -185,7 +186,7 @@
 							MHandlerContainer container = (MHandlerContainer) getMaster().getValue();
 							int idx = container.getHandlers().indexOf(obj) + 1;
 							if( idx < container.getHandlers().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -205,8 +206,8 @@
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MHandler handler = MApplicationFactory.eINSTANCE.createHandler();
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS, handler);
+					MHandler handler = MCommandsFactory.INSTANCE.createHandler();
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS, handler);
 					
 					if( cmd.canExecute() ) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -224,7 +225,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> handlers = ((IStructuredSelection)viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS, handlers);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS, handlers);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java
index 965dc16..4b80825 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java
@@ -18,13 +18,15 @@
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MMenu;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.command.AddCommand;
 import org.eclipse.emf.edit.command.RemoveCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
@@ -47,10 +49,12 @@
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 	private TableViewer viewer;
+	private EStructuralFeature feature;
 
-	public VMenuEditor(EditingDomain editingDomain, ModelEditor editor) {
+	public VMenuEditor(EditingDomain editingDomain, ModelEditor editor, EStructuralFeature feature) {
 		super(editingDomain);
 		this.editor = editor;
+		this.feature = feature;
 	}
 
 	@Override
@@ -97,7 +101,7 @@
 		ObservableListContentProvider cp = new ObservableListContentProvider();
 		viewer.setContentProvider(cp);
 		
-		IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+		IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 		viewer.setLabelProvider(new ObservableColumnLabelProvider<MMenu>(valProp.observeDetail(cp.getKnownElements())));
 		
 		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
@@ -130,8 +134,8 @@
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
-				MMenu handler = MApplicationFactory.eINSTANCE.createMenu();
-				Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PART__MENUS, handler);
+				MMenu handler = MMenuFactory.INSTANCE.createMenu();
+				Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), feature, handler);
 
 				if (cmd.canExecute()) {
 					getEditingDomain().getCommandStack().execute(cmd);
@@ -149,7 +153,7 @@
 			public void widgetSelected(SelectionEvent e) {
 				if (!viewer.getSelection().isEmpty()) {
 					List<?> windows = ((IStructuredSelection) viewer.getSelection()).toList();
-					Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PART__MENUS, windows);
+					Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.PART__MENUS, windows);
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
 					}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelComponentBindingEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelComponentBindingEditor.java
index 5659932..4387053 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelComponentBindingEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelComponentBindingEditor.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * 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:
+ *     Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.e4.tools.emf.ui.internal.common.component.virtual;
 
 import java.util.List;
@@ -8,11 +18,12 @@
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MBindingTable;
-import org.eclipse.e4.ui.model.application.MHandler;
-import org.eclipse.e4.ui.model.application.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.FeaturePath;
@@ -101,7 +112,7 @@
 			viewer.getTable().setHeaderVisible(true);
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.KEY_SEQUENCE__KEY_SEQUENCE);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.KEY_SEQUENCE__KEY_SEQUENCE);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("KeySequence");
@@ -110,7 +121,7 @@
 			}
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(MApplicationPackage.Literals.KEY_BINDING__COMMAND, MApplicationPackage.Literals.COMMAND__COMMAND_NAME));
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), FeaturePath.fromList(CommandsPackageImpl.Literals.KEY_BINDING__COMMAND, CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME));
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Command");
@@ -119,7 +130,7 @@
 			}
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.APPLICATION_ELEMENT__ID);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);
 
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Id");
@@ -150,7 +161,7 @@
 							MBindingTable container = (MBindingTable) getMaster().getValue();
 							int idx = container.getBindings().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENT__BINDINGS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENT__BINDINGS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -177,7 +188,7 @@
 							MBindingTable container = (MBindingTable) getMaster().getValue();
 							int idx = container.getBindings().indexOf(obj) + 1;
 							if( idx < container.getBindings().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENT__BINDINGS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENT__BINDINGS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -197,9 +208,9 @@
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MKeyBinding handler = MApplicationFactory.eINSTANCE.createKeyBinding();
+					MKeyBinding handler = MCommandsFactory.INSTANCE.createKeyBinding();
 					System.err.println(getMaster().getValue());
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENT__BINDINGS, handler);
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENT__BINDINGS, handler);
 
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -217,7 +228,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> keybinding = ((IStructuredSelection)viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.MODEL_COMPONENT__BINDINGS, keybinding);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), ApplicationPackageImpl.Literals.MODEL_COMPONENT__BINDINGS, keybinding);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VPartDescriptor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VPartDescriptor.java
index 47fcb53..a7a67a9 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VPartDescriptor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VPartDescriptor.java
@@ -18,11 +18,12 @@
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MHandler;
-import org.eclipse.e4.ui.model.application.MPartDescriptor;
-import org.eclipse.e4.ui.model.application.MPartDescriptorContainer;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptor;
+import org.eclipse.e4.ui.model.application.descriptor.basic.MPartDescriptorContainer;
+import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
@@ -109,7 +110,7 @@
 			viewer.getTable().setHeaderVisible(true);
 
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL);
 					
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Name");
@@ -118,7 +119,7 @@
 			}
 			
 			{
-				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.PART_DESCRIPTOR__CATEGORY);
+				IEMFEditValueProperty prop = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.PART_DESCRIPTOR__CATEGORY);
 					
 				TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 				column.getColumn().setText("Category");
@@ -149,7 +150,7 @@
 							MPartDescriptorContainer container = (MPartDescriptorContainer) getMaster().getValue();
 							int idx = container.getDescriptors().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -176,7 +177,7 @@
 							MPartDescriptorContainer container = (MPartDescriptorContainer) getMaster().getValue();
 							int idx = container.getDescriptors().indexOf(obj) + 1;
 							if( idx < container.getDescriptors().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -196,8 +197,8 @@
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MPartDescriptor command = MApplicationFactory.eINSTANCE.createPartDescriptor();
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, command);
+					MPartDescriptor command = MBasicFactory.INSTANCE.createPartDescriptor();
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, command);
 					
 					if( cmd.canExecute() ) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -215,7 +216,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> commands = ((IStructuredSelection)viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, commands);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, commands);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VControlEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java
similarity index 86%
rename from bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VControlEditor.java
rename to bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java
index e7840fb..f7d3bae 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VControlEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java
@@ -18,15 +18,17 @@
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditListProperty;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.command.AddCommand;
 import org.eclipse.emf.edit.command.MoveCommand;
 import org.eclipse.emf.edit.command.RemoveCommand;
@@ -49,13 +51,13 @@
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 
-public class VControlEditor extends AbstractComponentEditor {
+public class VWindowControlEditor extends AbstractComponentEditor {
 	private Composite composite;
 	private EMFDataBindingContext context;
 	private ModelEditor editor;
 	private TableViewer viewer;
 
-	public VControlEditor(EditingDomain editingDomain, ModelEditor editor) {
+	public VWindowControlEditor(EditingDomain editingDomain, ModelEditor editor) {
 		super(editingDomain);
 		this.editor = editor;
 	}
@@ -112,7 +114,7 @@
 			viewer.getControl().setLayoutData(gd);
 
 			
-			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN);
+			IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
 			viewer.setInput(prop.observeDetail(getMaster()));
 			
 			Composite buttonComp = new Composite(parent, SWT.NONE);
@@ -138,7 +140,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) - 1;
 							if( idx >= 0 ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -165,7 +167,7 @@
 							MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 							int idx = container.getChildren().indexOf(obj) + 1;
 							if( idx < container.getChildren().size() ) {
-								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+								Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 								
 								if( cmd.canExecute() ) {
 									getEditingDomain().getCommandStack().execute(cmd);
@@ -189,12 +191,13 @@
 				}
 			});
 			childrenDropDown.setInput(new EClass[] {
-					MApplicationPackage.Literals.PERSPECTIVE_STACK,
-					MApplicationPackage.Literals.PART_SASH_CONTAINER,
-					MApplicationPackage.Literals.PART_STACK,
-					MApplicationPackage.Literals.PART
+					AdvancedPackageImpl.Literals.PERSPECTIVE_STACK,
+					BasicPackageImpl.Literals.PART_SASH_CONTAINER,
+					BasicPackageImpl.Literals.PART_STACK,
+					BasicPackageImpl.Literals.PART,
+					BasicPackageImpl.Literals.INPUT_PART
 			});
-			childrenDropDown.setSelection(new StructuredSelection(MApplicationPackage.Literals.PERSPECTIVE_STACK));
+			childrenDropDown.setSelection(new StructuredSelection(AdvancedPackageImpl.Literals.PERSPECTIVE_STACK));
 			
 			b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
 			b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
@@ -204,9 +207,10 @@
 				public void widgetSelected(SelectionEvent e) {
 					if( ! childrenDropDown.getSelection().isEmpty() ) {
 						EClass eClass = (EClass) ((IStructuredSelection)childrenDropDown.getSelection()).getFirstElement();
-						EObject eObject = MApplicationFactory.eINSTANCE.create(eClass);
 						
-						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
+						EObject eObject = EcoreUtil.create(eClass);
+						
+						Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
 						
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
@@ -226,7 +230,7 @@
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> elements = ((IStructuredSelection)viewer.getSelection()).toList();
 						
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowEditor.java
index 8dec90f..ac1aede 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowEditor.java
@@ -18,20 +18,27 @@
 import org.eclipse.e4.tools.emf.ui.internal.ObservableColumnLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MElementContainer;
-import org.eclipse.e4.ui.model.application.MWindow;
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.databinding.edit.EMFEditProperties;
 import org.eclipse.emf.databinding.edit.IEMFEditValueProperty;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.command.AddCommand;
 import org.eclipse.emf.edit.command.MoveCommand;
 import org.eclipse.emf.edit.command.RemoveCommand;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
@@ -107,7 +114,7 @@
 		viewer.getTable().setHeaderVisible(true);
 
 		{
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.UI_LABEL__LABEL);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL);
 
 			TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 			column.getColumn().setText("Name");
@@ -116,7 +123,7 @@
 		}
 
 		{
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__X);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__X);
 
 			TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 			column.getColumn().setText("X");
@@ -125,7 +132,7 @@
 		}
 
 		{
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__Y);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__Y);
 
 			TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 			column.getColumn().setText("Y");
@@ -134,7 +141,7 @@
 		}
 
 		{
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__WIDTH);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__WIDTH);
 
 			TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 			column.getColumn().setText("Width");
@@ -143,7 +150,7 @@
 		}
 
 		{
-			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), MApplicationPackage.Literals.WINDOW__HEIGHT);
+			IEMFEditValueProperty valProp = EMFEditProperties.value(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__HEIGHT);
 
 			TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
 			column.getColumn().setText("Height");
@@ -153,7 +160,7 @@
 
 		Composite buttonComp = new Composite(parent, SWT.NONE);
 		buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
-		GridLayout gl = new GridLayout();
+		GridLayout gl = new GridLayout(2,false);
 		gl.marginLeft = 0;
 		gl.marginRight = 0;
 		gl.marginWidth = 0;
@@ -161,9 +168,10 @@
 		buttonComp.setLayout(gl);
 
 		Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+		
 		b.setText("Up");
 		b.setImage(getImage(b.getDisplay(), ARROW_UP));
-		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
@@ -174,7 +182,7 @@
 						MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 						int idx = container.getChildren().indexOf(obj) - 1;
 						if( idx >= 0 ) {
-							Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+							Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 							
 							if( cmd.canExecute() ) {
 								getEditingDomain().getCommandStack().execute(cmd);
@@ -190,7 +198,7 @@
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
 		b.setText("Down");
 		b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
-		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
@@ -201,7 +209,7 @@
 						MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
 						int idx = container.getChildren().indexOf(obj) + 1;
 						if( idx < container.getChildren().size() ) {
-							Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
+							Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, obj, idx);
 							
 							if( cmd.canExecute() ) {
 								getEditingDomain().getCommandStack().execute(cmd);
@@ -214,15 +222,30 @@
 			}
 		});
 
+		final ComboViewer childrenDropDown = new ComboViewer(buttonComp);
+		childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+		childrenDropDown.setContentProvider(new ArrayContentProvider());
+		childrenDropDown.setLabelProvider(new LabelProvider() {
+			@Override
+			public String getText(Object element) {
+				EClass eclass = (EClass) element;
+				return eclass.getName();
+			}
+		});
+		childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.WINDOW, BasicPackageImpl.Literals.TRIMMED_WINDOW });
+		childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.WINDOW));
+		
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
 		b.setText("Add ...");
 		b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
-		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
-				MWindow handler = MApplicationFactory.eINSTANCE.createWindow();
-				Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, handler);
+				EClass eClass = (EClass) ((IStructuredSelection)childrenDropDown.getSelection()).getFirstElement();
+				EObject handler = EcoreUtil.create(eClass);
+				
+				Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, handler);
 
 				if (cmd.canExecute()) {
 					getEditingDomain().getCommandStack().execute(cmd);
@@ -234,14 +257,14 @@
 		b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
 		b.setText("Remove");
 		b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
-		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+		b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false,2,1));
 		b.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				if (!viewer.getSelection().isEmpty()) {
 					List<?> windows = ((IStructuredSelection) viewer.getSelection()).toList();
 					MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
-					Command cmd = RemoveCommand.create(getEditingDomain(), container, MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, windows);
+					Command cmd = RemoveCommand.create(getEditingDomain(), container, UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, windows);
 					if (cmd.canExecute()) {
 						getEditingDomain().getCommandStack().execute(cmd);
 						if( container.getChildren().size() > 0 ) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowTrimEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowTrimEditor.java
index edb5656..9097a8a 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowTrimEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowTrimEditor.java
@@ -18,9 +18,9 @@
 import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider;
 import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
 import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplicationFactory;
-import org.eclipse.e4.ui.model.application.MApplicationPackage;
-import org.eclipse.e4.ui.model.application.MWindowTrim;
+import org.eclipse.e4.ui.model.application.ui.basic.MBasicFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
+import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.emf.edit.command.AddCommand;
@@ -118,8 +118,8 @@
 			b.addSelectionListener(new SelectionAdapter() {
 				@Override
 				public void widgetSelected(SelectionEvent e) {
-					MWindowTrim handler = MApplicationFactory.eINSTANCE.createWindowTrim();
-					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, handler);
+					MTrimBar handler = MBasicFactory.INSTANCE.createTrimBar();
+					Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS, handler);
 					
 					if( cmd.canExecute() ) {
 						getEditingDomain().getCommandStack().execute(cmd);
@@ -137,7 +137,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					if( ! viewer.getSelection().isEmpty() ) {
 						List<?> trimElements = ((IStructuredSelection)viewer.getSelection()).toList();
-						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), MApplicationPackage.Literals.ELEMENT_CONTAINER__CHILDREN, trimElements);
+						Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.TRIMMED_WINDOW__TRIM_BARS, trimElements);
 						if( cmd.canExecute() ) {
 							getEditingDomain().getCommandStack().execute(cmd);
 						}