Code cleanup and hierarchy fixes.
Category for Executors added.
diff --git a/org.eclipse.scout.nls.sdk.services/plugin.xml b/org.eclipse.scout.nls.sdk.services/plugin.xml
index 50a4b6f..f3fb63a 100644
--- a/org.eclipse.scout.nls.sdk.services/plugin.xml
+++ b/org.eclipse.scout.nls.sdk.services/plugin.xml
@@ -41,13 +41,11 @@
        point="org.eclipse.scout.sdk.ui.executor">
     <executor
           class="org.eclipse.scout.nls.sdk.services.ui.executor.TextProviderServiceDeleteExecutor"
-          id="org.eclipse.scout.nls.sdk.services.ui.action.TextProviderServiceDeleteAction"
-          order="0">
+          id="org.eclipse.scout.nls.sdk.services.ui.action.TextProviderServiceDeleteAction">
     </executor>
     <executor
           class="org.eclipse.scout.nls.sdk.services.ui.executor.TextProviderServiceNewExecutor"
-          id="org.eclipse.scout.nls.sdk.services.ui.action.TextProviderServiceNewAction"
-          order="0">
+          id="org.eclipse.scout.nls.sdk.services.ui.action.TextProviderServiceNewAction">
     </executor>
  </extension>
 </plugin>
diff --git a/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/jdt/NlsFolder.java b/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/jdt/NlsFolder.java
index 294be3b..61a57bc 100644
--- a/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/jdt/NlsFolder.java
+++ b/org.eclipse.scout.nls.sdk/src/org/eclipse/scout/nls/sdk/internal/jdt/NlsFolder.java
@@ -31,5 +31,4 @@
   public int getType() {
     return m_type;
   }
-
 }
diff --git a/org.eclipse.scout.sdk.rap.ui/plugin.xml b/org.eclipse.scout.sdk.rap.ui/plugin.xml
index 9eb6d6a..41e23ab 100644
--- a/org.eclipse.scout.sdk.rap.ui/plugin.xml
+++ b/org.eclipse.scout.sdk.rap.ui/plugin.xml
@@ -75,8 +75,7 @@
          point="org.eclipse.scout.sdk.ui.executor">
       <executor
             class="org.eclipse.scout.sdk.rap.ui.internal.executor.RapTargetNewExecutor"
-            id="org.eclipse.scout.sdk.rap.ui.internal.action.RapTargetNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.rap.ui.internal.action.RapTargetNewAction">
       </executor>
    </extension>
 </plugin>
diff --git a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/template/OutlineTemplateHomeFormCreateOperation.java b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/template/OutlineTemplateHomeFormCreateOperation.java
index a84cdd2..d70569f 100644
--- a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/template/OutlineTemplateHomeFormCreateOperation.java
+++ b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/template/OutlineTemplateHomeFormCreateOperation.java
@@ -180,7 +180,7 @@
         source.append(validator.getTypeName(outlinesTableFieldTableSignature)).append(" table = getOutlinesTableField().getTable();").append(lineDelimiter);
         String listTypeName = validator.getTypeName(SignatureCache.createTypeSignature(List.class.getName()));
         String outlineTypeName = validator.getTypeName(SignatureCache.createTypeSignature(IRuntimeClasses.IOutline));
-        source.append(listTypeName).append('<').append(outlineTypeName).append("> outlines = getDesktop().getAvailableOutlines();").append(lineDelimiter);
+        source.append(listTypeName).append(Signature.C_GENERIC_START).append(outlineTypeName).append(Signature.C_GENERIC_END).append(" outlines = getDesktop().getAvailableOutlines();").append(lineDelimiter);
         source.append("for (").append(outlineTypeName).append(" outline : outlines) {").append(lineDelimiter);
         source.append("if (outline.isVisible() && outline.getRootNode() != null) {").append(lineDelimiter);
         source.append(validator.getTypeName(SignatureCache.createTypeSignature(IRuntimeClasses.ITableRow))).append(" row = table.createRow(new Object[]{outline, outline.getTitle()});").append(lineDelimiter);
@@ -284,7 +284,7 @@
     ITypeSourceBuilder outlinesTableFieldBuilder = new TypeSourceBuilder(OUTLINE_TABLE_FIELD_NAME);
     String genericTableFqn = new StringBuilder(mainBoxFqn).append('.').append(outlinesTableFieldBuilder.getElementName()).append('.').append(tableBuilder.getElementName()).toString();
     outlinesTableFieldBuilder.setFlags(Flags.AccPublic);
-    outlinesTableFieldBuilder.setSuperTypeSignature(SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.ITableField, mobileClient) + "<" + genericTableFqn.toString() + ">"));
+    outlinesTableFieldBuilder.setSuperTypeSignature(SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.ITableField, mobileClient) + Signature.C_GENERIC_START + genericTableFqn.toString() + Signature.C_GENERIC_END));
     outlinesTableFieldBuilder.addAnnotationSourceBuilder(AnnotationSourceBuilderFactory.createOrderAnnotation(SdkProperties.ORDER_ANNOTATION_VALUE_STEP));
 
     // method getConfiguredLabelVisible
@@ -361,7 +361,7 @@
     outlineColumnBuilder.setFlags(Flags.AccPublic);
     IType superType = RuntimeClasses.getSuperType(IRuntimeClasses.IColumn, mobileClient);
     if (TypeUtility.isGenericType(superType)) {
-      outlineColumnBuilder.setSuperTypeSignature(SignatureCache.createTypeSignature(superType.getFullyQualifiedName() + "<" + IRuntimeClasses.IOutline + ">"));
+      outlineColumnBuilder.setSuperTypeSignature(SignatureCache.createTypeSignature(superType.getFullyQualifiedName() + Signature.C_GENERIC_START + IRuntimeClasses.IOutline + Signature.C_GENERIC_END));
     }
     else {
       outlineColumnBuilder.setSuperTypeSignature(SignatureCache.createTypeSignature(superType.getFullyQualifiedName()));
diff --git a/org.eclipse.scout.sdk.ui/plugin.xml b/org.eclipse.scout.sdk.ui/plugin.xml
index e68ed6a..7e6380d 100644
--- a/org.eclipse.scout.sdk.ui/plugin.xml
+++ b/org.eclipse.scout.sdk.ui/plugin.xml
@@ -1211,353 +1211,283 @@
          point="org.eclipse.scout.sdk.ui.executor">
             <executor
             class="org.eclipse.scout.sdk.ui.executor.AttributeNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.AttributeNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.AttributeNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.BeanPropertyNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.BeanPropertyNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.BeanPropertyNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.BookmarkStorageServiceNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.BookmarkStorageServiceNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.BookmarkStorageServiceNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.CalendarItemProviderNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.CalendarItemProviderNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.CalendarItemProviderNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.CalendarServiceNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.CalendarServiceNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.CalendarServiceNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ClientServiceNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.ClientServiceNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.ClientServiceNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.CodeNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.CodeNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.CodeNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.CodeTypeNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.CodeTypeNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.CodeTypeNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.DefaultTableColumnNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.DefaultTableColumnNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.DefaultTableColumnNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.DesktopMenuNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.DesktopMenuNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.DesktopMenuNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.EntityNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.EntityNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.EntityNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ExportScoutProjectExecutor"
-            id="org.eclipse.scout.sdk.ui.action.ExportScoutProjectAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.ExportScoutProjectAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.FormDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.FormDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormFieldNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.FormFieldNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.FormFieldNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormHandlerNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.FormHandlerNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.FormHandlerNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.FormNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.FormNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.GroupBoxNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.GroupBoxNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.GroupBoxNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.KeyStrokeNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.KeyStrokeNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.KeyStrokeNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.LibraryBundleNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.library.LibraryBundleNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.library.LibraryBundleNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.LocalLookupCallNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.LocalLookupCallNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.LocalLookupCallNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.LookupCallNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.LookupCallNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.LookupCallNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.LookupServiceNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.LookupServiceNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.LookupServiceNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.MenuNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.MenuNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.MenuNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.OutlineNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.OutlineNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.OutlineNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.PageLinkExecutor"
-            id="org.eclipse.scout.sdk.ui.action.PageLinkAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.PageLinkAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.PageNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.PageNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.PageNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.PermissionNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.PermissionNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.PermissionNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ProcessServiceNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.ProcessServiceNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.ProcessServiceNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.RadioButtonNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.RadioButtonNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.RadioButtonNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ScoutBundleNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.ScoutBundleNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.ScoutBundleNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ScoutProjectNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.ScoutProjectNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.ScoutProjectNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.SearchFormNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.SearchFormNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.SearchFormNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ServiceOperationNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.ServiceOperationNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.ServiceOperationNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.SharedContextBeanPropertyNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.SharedContextBeanPropertyNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.SharedContextBeanPropertyNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.SmartTableColumnNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.SmartTableColumnNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.SmartTableColumnNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.SmtpServiceNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.SmtpServiceNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.SmtpServiceNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.SqlServiceNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.SqlServiceNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.SqlServiceNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.TableColumnNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.TableColumnNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.TableColumnNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ToolbuttonNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.ToolbuttonNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.ToolbuttonNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.WizardNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.WizardNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.WizardNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.WizardStepNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.WizardStepNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.WizardStepNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ClassIdNewExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.ClassIdNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.ClassIdNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.CreateTemplateExecutor"
-            id="org.eclipse.scout.sdk.ui.action.create.CreateTemplateAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.create.CreateTemplateAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.DeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.DeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.DeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormFieldDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.FormFieldDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.FormFieldDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.LookupCallDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.LookupCallDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.LookupCallDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.MemberListDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.MemberListDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.MemberListDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.OutlineDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.OutlineDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.OutlineDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ServiceDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.ServiceDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.ServiceDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.TableColumnDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.TableColumnDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.TableColumnDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.WizardStepDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.WizardStepDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.WizardStepDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormDataUpdateExecutor"
-            id="org.eclipse.scout.sdk.ui.action.dto.FormDataUpdateAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.dto.FormDataUpdateAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.PageDataUpdateExecutor"
-            id="org.eclipse.scout.sdk.ui.action.dto.PageDataUpdateAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.dto.PageDataUpdateAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.LibrariesBundleUnlinkExecutor"
-            id="org.eclipse.scout.sdk.ui.action.library.LibrariesBundleUnlinkAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.library.LibrariesBundleUnlinkAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.LibraryBundleLinkExecutor"
-            id="org.eclipse.scout.sdk.ui.action.library.LibraryBundleLinkAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.library.LibraryBundleLinkAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.TableColumnWidthsPasteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.TableColumnWidthsPasteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.TableColumnWidthsPasteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormFieldRenameExecutor"
-            id="org.eclipse.scout.sdk.ui.action.rename.FormFieldRenameAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.rename.FormFieldRenameAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.PropertyBeansRenameExecutor"
-            id="org.eclipse.scout.sdk.ui.action.rename.PropertyBeansRenameAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.rename.PropertyBeansRenameAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ServiceRenameExecutor"
-            id="org.eclipse.scout.sdk.ui.action.rename.ServiceRenameAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.rename.ServiceRenameAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.TableColumnRenameExecutor"
-            id="org.eclipse.scout.sdk.ui.action.rename.TableColumnRenameAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.rename.TableColumnRenameAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.TypeRenameExecutor"
-            id="org.eclipse.scout.sdk.ui.action.rename.TypeRenameAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.rename.TypeRenameAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.WizardStepRenameExecutor"
-            id="org.eclipse.scout.sdk.ui.action.rename.WizardStepRenameAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.rename.WizardStepRenameAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.ShowJavaReferencesExecutor"
-            id="org.eclipse.scout.sdk.ui.action.ShowJavaReferencesAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.ShowJavaReferencesAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.FormDataSqlBindingValidateExecutor"
-            id="org.eclipse.scout.sdk.ui.action.FormDataSqlBindingValidateAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.FormDataSqlBindingValidateAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.TypeResolverPageDataExecutor"
-            id="org.eclipse.scout.sdk.ui.action.dto.TypeResolverPageDataAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.dto.TypeResolverPageDataAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.WellformScoutTypeExecutor"
-            id="org.eclipse.scout.sdk.ui.action.WellformScoutTypeAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.WellformScoutTypeAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.WellformExecutor"
-            id="org.eclipse.scout.sdk.ui.action.WellformAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.WellformAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.MultipleUpdateFormDataExecutor"
-            id="org.eclipse.scout.sdk.ui.action.dto.MultipleUpdateFormDataAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.dto.MultipleUpdateFormDataAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.TypeResolverFormDataExecutor"
-            id="org.eclipse.scout.sdk.ui.action.dto.TypeResolverFormDataAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.dto.TypeResolverFormDataAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ui.executor.PageWithTableDeleteExecutor"
-            id="org.eclipse.scout.sdk.ui.action.delete.PageWithTableDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ui.action.delete.PageWithTableDeleteAction">
       </executor>
    </extension>
 </plugin>
diff --git a/org.eclipse.scout.sdk.ui/schema/executor.exsd b/org.eclipse.scout.sdk.ui/schema/executor.exsd
index c78d95d..cb8141e 100644
--- a/org.eclipse.scout.sdk.ui/schema/executor.exsd
+++ b/org.eclipse.scout.sdk.ui/schema/executor.exsd
@@ -17,8 +17,8 @@
          </appinfo>
       </annotation>
       <complexType>
-         <sequence minOccurs="0" maxOccurs="unbounded">
-            <element ref="executor"/>
+         <sequence>
+            <element ref="executor" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
          <attribute name="point" type="string" use="required">
             <annotation>
@@ -71,10 +71,10 @@
                </documentation>
             </annotation>
          </attribute>
-         <attribute name="order" type="string" use="required">
+         <attribute name="category" type="string">
             <annotation>
                <documentation>
-                  The priority of the executor. Only the executor with the highest order number can be active for each Id. Must be an integer value.
+                  
                </documentation>
             </annotation>
          </attribute>
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/executor/TableColumnWidthsPasteExecutor.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/executor/TableColumnWidthsPasteExecutor.java
index 79faf14..d3ed0cb 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/executor/TableColumnWidthsPasteExecutor.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/executor/TableColumnWidthsPasteExecutor.java
@@ -198,6 +198,7 @@
       return IOUtility.getContent(reader, true);
     }
     catch (Exception e) {
+      ScoutSdkUi.logError("Unable to get content from clipboard", e);
       return null;
     }
   }
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/executor/ExecutorExtensionPoint.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/executor/ExecutorExtensionPoint.java
index 60665cf..884d0f8 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/executor/ExecutorExtensionPoint.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/executor/ExecutorExtensionPoint.java
@@ -11,9 +11,9 @@
 package org.eclipse.scout.sdk.ui.extensions.executor;
 
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
-import java.util.NavigableMap;
-import java.util.TreeMap;
+import java.util.Set;
 
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.runtime.IConfigurationElement;
@@ -23,9 +23,7 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.scout.commons.CollectionUtility;
-import org.eclipse.scout.commons.CompositeObject;
 import org.eclipse.scout.commons.StringUtility;
-import org.eclipse.scout.sdk.extensions.runtime.bundles.RuntimeBundles;
 import org.eclipse.scout.sdk.ui.internal.ScoutSdkUi;
 import org.eclipse.swt.widgets.Shell;
 import org.osgi.framework.Bundle;
@@ -38,6 +36,7 @@
  */
 public final class ExecutorExtensionPoint {
 
+  public static final String PROP_CURRENT_CATEGORY = ScoutSdkUi.PLUGIN_ID + ".propCurrentExecutorCategory";
   public static final IExecutor EMPTY_EXECUTOR = new IExecutor() {
     @Override
     public Object run(Shell shell, IStructuredSelection selection, ExecutionEvent event) {
@@ -49,25 +48,28 @@
       return true;
     }
   };
+  public static final String DEFAULT_CATEGORY = "Default";
   public static final String EXTENSION_POINT_NAME = "executor";
   public static final String TAG_NAME_EXECUTOR = "executor";
   public static final String ATTRIB_NAME_CLASS = "class";
   public static final String ATTRIB_NAME_ID = "id";
-  public static final String ATTRIB_NAME_ORDER = "order";
+  public static final String ATTRIB_NAME_CATEGORY = "category";
   public static final String ATTRIB_NAME_ACTIVE = "active";
 
   private static final Object LOCK = new Object();
-  private static volatile Map<String /* id */, NavigableMap<CompositeObject, Class<? extends IExecutor>>> executors = null;
+  private static volatile Map<String /* id */, Map<String /* category */, Class<? extends IExecutor>>> executors = null;
+  private static volatile Set<String> categories = null;
+  private static volatile String curCategory = null;
 
   private ExecutorExtensionPoint() {
   }
 
-  private static Map<String, NavigableMap<CompositeObject, Class<? extends IExecutor>>> getExectutors() {
+  private static Map<String, Map<String, Class<? extends IExecutor>>> getExecutors() {
     if (executors == null) {
       synchronized (LOCK) {
         if (executors == null) {
-          Map<String, NavigableMap<CompositeObject, Class<? extends IExecutor>>> tmp = new HashMap<String, NavigableMap<CompositeObject, Class<? extends IExecutor>>>();
-
+          Map<String, Map<String, Class<? extends IExecutor>>> tmp = new HashMap<String, Map<String, Class<? extends IExecutor>>>();
+          Set<String> tmpCats = new HashSet<String>();
           IExtensionRegistry reg = Platform.getExtensionRegistry();
           IExtensionPoint xp = reg.getExtensionPoint(ScoutSdkUi.PLUGIN_ID, EXTENSION_POINT_NAME);
           IExtension[] extensions = xp.getExtensions();
@@ -77,45 +79,47 @@
               if (TAG_NAME_EXECUTOR.equals(element.getName())) {
                 String clazz = StringUtility.trim(element.getAttribute(ATTRIB_NAME_CLASS));
                 String id = StringUtility.trim(element.getAttribute(ATTRIB_NAME_ID));
-                String order = StringUtility.trim(element.getAttribute(ATTRIB_NAME_ORDER));
+                String category = StringUtility.trim(element.getAttribute(ATTRIB_NAME_CATEGORY));
                 String active = StringUtility.trim(element.getAttribute(ATTRIB_NAME_ACTIVE));
-                if (!StringUtility.isNullOrEmpty(clazz) && !StringUtility.isNullOrEmpty(id) && !StringUtility.isNullOrEmpty(order)) {
+                if (!StringUtility.isNullOrEmpty(clazz) && !StringUtility.isNullOrEmpty(id)) {
                   if (StringUtility.isNullOrEmpty(active) || "true".equalsIgnoreCase(active)) {
-                    Integer orderInt = RuntimeBundles.parseOrder(order);
-                    if (orderInt != null) {
-                      String contribPlugin = element.getContributor().getName();
-                      Bundle bundle = Platform.getBundle(contribPlugin);
-                      if (bundle != null) {
-                        try {
-                          @SuppressWarnings("unchecked")
-                          Class<? extends IExecutor> execClass = (Class<? extends IExecutor>) bundle.loadClass(clazz);
-                          NavigableMap<CompositeObject, Class<? extends IExecutor>> map = tmp.get(id);
-                          if (map == null) {
-                            map = new TreeMap<CompositeObject, Class<? extends IExecutor>>();
-                            tmp.put(id, map);
-                          }
-                          map.put(new CompositeObject(orderInt, execClass.getName()), execClass);
+                    if (StringUtility.isNullOrEmpty(category)) {
+                      category = DEFAULT_CATEGORY;
+                    }
+                    tmpCats.add(category);
+                    String contribPlugin = element.getContributor().getName();
+                    Bundle bundle = Platform.getBundle(contribPlugin);
+                    if (bundle != null) {
+                      try {
+                        @SuppressWarnings("unchecked")
+                        Class<? extends IExecutor> execClass = (Class<? extends IExecutor>) bundle.loadClass(clazz);
+                        Map<String, Class<? extends IExecutor>> map = tmp.get(id);
+                        if (map == null) {
+                          map = new HashMap<String, Class<? extends IExecutor>>(3);
+                          tmp.put(id, map);
                         }
-                        catch (ClassNotFoundException e) {
-                          ScoutSdkUi.logError("Unable to load class '" + clazz + "'. Executor for id '" + id + "' will be skipped.", e);
+                        Class<? extends IExecutor> old = map.put(category, execClass);
+                        if (old != null) {
+                          ScoutSdkUi.logWarning("There are multiple executors with the same category registered for id '" + id + "'.");
                         }
                       }
-                      else {
-                        ScoutSdkUi.logError("Contributing bundle of executor '" + id + "' could not be found.");
+                      catch (ClassNotFoundException e) {
+                        ScoutSdkUi.logError("Unable to load class '" + clazz + "'. Executor for id '" + id + "' will be skipped.", e);
                       }
                     }
                     else {
-                      ScoutSdkUi.logError("Invalid order for executor with id '" + id + "': " + order);
+                      ScoutSdkUi.logError("Contributing bundle of executor '" + id + "' could not be found.");
                     }
                   }
                 }
                 else {
-                  ScoutSdkUi.logError("Invalid executor extension from bundle '" + element.getContributor().getName() + "'. At least " + ATTRIB_NAME_CLASS + ", " + ATTRIB_NAME_ID + " and " + ATTRIB_NAME_ORDER + " must be specified.");
+                  ScoutSdkUi.logError("Invalid executor extension from bundle '" + element.getContributor().getName() + "'. At least " + ATTRIB_NAME_CLASS + " and " + ATTRIB_NAME_ID + " must be specified.");
                 }
               }
             }
           }
 
+          categories = CollectionUtility.hashSet(tmpCats);
           executors = CollectionUtility.copyMap(tmp);
         }
       }
@@ -123,6 +127,44 @@
     return executors;
   }
 
+  public static Set<String> getAllCategories() {
+    getExecutors();
+    return CollectionUtility.hashSet(categories);
+  }
+
+  public static String getCurrentCategory() {
+    if (curCategory == null) {
+      synchronized (LOCK) {
+        if (curCategory == null) {
+          // read defaults
+          Set<String> allCategories = getAllCategories();
+          for (String c : allCategories) {
+            if (!DEFAULT_CATEGORY.equals(c)) {
+              curCategory = c;
+              break;
+            }
+          }
+          if (curCategory == null) {
+            curCategory = CollectionUtility.firstElement(allCategories);
+          }
+        }
+      }
+    }
+    return curCategory;
+  }
+
+  public static void setCurrentCategory(String newCategory) {
+    synchronized (LOCK) {
+      getExecutors();
+      if (categories.contains(newCategory)) {
+        curCategory = newCategory;
+      }
+      else {
+        curCategory = DEFAULT_CATEGORY;
+      }
+    }
+  }
+
   /**
    * Gets the executor for the given id.<br>
    * Executors must be registered with this id using the extension point.
@@ -132,15 +174,21 @@
    *         found. Never returns null.
    */
   public static IExecutor getExecutorFor(String id) {
-    Map<String, NavigableMap<CompositeObject, Class<? extends IExecutor>>> allExectutors = getExectutors();
-    NavigableMap<CompositeObject, Class<? extends IExecutor>> executorsForId = allExectutors.get(id);
+    Map<String, Map<String, Class<? extends IExecutor>>> allExectutors = getExecutors();
+    Map<String, Class<? extends IExecutor>> executorsForId = allExectutors.get(id);
     if (executorsForId != null && !executorsForId.isEmpty()) {
-      Class<? extends IExecutor> executorClass = executorsForId.lastEntry().getValue();
-      try {
-        return executorClass.newInstance();
+      Class<? extends IExecutor> executorClass = executorsForId.get(getCurrentCategory());
+      if (executorClass == null) {
+        // fallback to default if no executor is registered for the current category
+        executorClass = executorsForId.get(DEFAULT_CATEGORY);
       }
-      catch (Exception e) {
-        ScoutSdkUi.logError("unable to create executor for id '" + id + "'.", e);
+      if (executorClass != null) {
+        try {
+          return executorClass.newInstance();
+        }
+        catch (Exception e) {
+          ScoutSdkUi.logError("unable to create executor for id '" + id + "'.", e);
+        }
       }
     }
     ScoutSdkUi.logWarning("No executor found for id '" + id + "'.");
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/preferences/ScoutSdkPreferencePage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/preferences/ScoutSdkPreferencePage.java
index 42f7c93..9abc1a2 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/preferences/ScoutSdkPreferencePage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/extensions/preferences/ScoutSdkPreferencePage.java
@@ -10,11 +10,15 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.ui.extensions.preferences;
 
+import java.util.Set;
+
 import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.ComboFieldEditor;
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.scout.sdk.Texts;
 import org.eclipse.scout.sdk.extensions.classidgenerators.ClassIdGenerators;
 import org.eclipse.scout.sdk.extensions.targetpackage.DefaultTargetPackage;
+import org.eclipse.scout.sdk.ui.extensions.executor.ExecutorExtensionPoint;
 import org.eclipse.scout.sdk.ui.internal.ScoutSdkUi;
 import org.eclipse.scout.sdk.workspace.dto.IDtoAutoUpdateManager;
 import org.eclipse.ui.IWorkbench;
@@ -32,6 +36,7 @@
   private BooleanFieldEditor m_updateFormDataAutomaticallyField;
   private BooleanFieldEditor m_targetPackageConfigEnabledField;
   private BooleanFieldEditor m_automaticallyCreateClassIdAnnotation;
+  private ComboFieldEditor m_executorCategories;
 
   public ScoutSdkPreferencePage() {
     super(GRID);
@@ -55,6 +60,17 @@
 
     m_automaticallyCreateClassIdAnnotation = new BooleanFieldEditor(ClassIdGenerators.PROP_AUTOMATICALLY_CREATE_CLASS_ID_ANNOTATION, Texts.get("AutomaticallyCreateClassIdAnnotation"), getFieldEditorParent());
     addField(m_automaticallyCreateClassIdAnnotation);
+
+    Set<String> allCategories = ExecutorExtensionPoint.getAllCategories();
+    String[][] values = new String[allCategories.size()][];
+    int i = 0;
+    for (String c : allCategories) {
+      values[i] = new String[]{c, c};
+      i++;
+    }
+    m_executorCategories = new ComboFieldEditor(ExecutorExtensionPoint.PROP_CURRENT_CATEGORY, Texts.get("CodeStyle"), values, getFieldEditorParent());
+    addField(m_executorCategories);
+    m_executorCategories.setEnabled(allCategories.size() > 1, getFieldEditorParent());
   }
 
   @Override
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/proposal/javaelement/JavaElementAbstractTypeContentProvider.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/proposal/javaelement/JavaElementAbstractTypeContentProvider.java
index 215872d..f3a5b25 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/proposal/javaelement/JavaElementAbstractTypeContentProvider.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/proposal/javaelement/JavaElementAbstractTypeContentProvider.java
@@ -45,15 +45,14 @@
 
   @Override
   protected Object[][] computeProposals() {
-
     ITypeFilter filter = null;
     IType[] mostlyUsed = null;
     if (getFilter() == null) {
-      filter = TypeFilters.getMultiTypeFilterAnd(TypeFilters.getPrimaryTypeFilter(), TypeFilters.getNotInTypes(m_mostlyUsed));
+      filter = TypeFilters.getMultiTypeFilterAnd(TypeFilters.getNotInTypes(m_mostlyUsed), TypeFilters.getNoSurroundingContextTypeFilter());
       mostlyUsed = m_mostlyUsed;
     }
     else {
-      filter = TypeFilters.getMultiTypeFilterAnd(TypeFilters.getPrimaryTypeFilter(), TypeFilters.getNotInTypes(m_mostlyUsed), getFilter());
+      filter = TypeFilters.getMultiTypeFilterAnd(TypeFilters.getNotInTypes(m_mostlyUsed), TypeFilters.getNoSurroundingContextTypeFilter(), getFilter());
 
       // filter the mostly used
       if (m_mostlyUsed != null) {
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/ScoutSdkUi.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/ScoutSdkUi.java
index b5b67a2..77cb4aa 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/ScoutSdkUi.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/ScoutSdkUi.java
@@ -28,6 +28,7 @@
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.jface.viewers.DecorationOverlayIcon;
 import org.eclipse.jface.viewers.IDecoration;
+import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.sdk.ScoutSdkCore;
 import org.eclipse.scout.sdk.extensions.classidgenerators.ClassIdGenerators;
 import org.eclipse.scout.sdk.extensions.targetpackage.DefaultTargetPackage;
@@ -35,6 +36,7 @@
 import org.eclipse.scout.sdk.service.IMessageBoxService;
 import org.eclipse.scout.sdk.sourcebuilder.comment.IJavaElementCommentBuilderService;
 import org.eclipse.scout.sdk.ui.IScoutConstants;
+import org.eclipse.scout.sdk.ui.extensions.executor.ExecutorExtensionPoint;
 import org.eclipse.scout.sdk.ui.internal.service.SwtMessageBoxService;
 import org.eclipse.scout.sdk.ui.services.AstFlattenerProviderService;
 import org.eclipse.scout.sdk.ui.services.JavaElementCommentBuilderService;
@@ -134,6 +136,9 @@
     getPreferenceStore().setDefault(ClassIdGenerators.PROP_AUTOMATICALLY_CREATE_CLASS_ID_ANNOTATION, false);
     ClassIdGenerators.setAutomaticallyCreateClassIdAnnotation(getPreferenceStore().getBoolean(ClassIdGenerators.PROP_AUTOMATICALLY_CREATE_CLASS_ID_ANNOTATION));
 
+    getPreferenceStore().setDefault(ExecutorExtensionPoint.PROP_CURRENT_CATEGORY, ExecutorExtensionPoint.getCurrentCategory());
+    ExecutorExtensionPoint.setCurrentCategory(getPreferenceStore().getString(ExecutorExtensionPoint.PROP_CURRENT_CATEGORY));
+
     m_shutdownListener = new IWorkbenchListener() {
       @Override
       public boolean preShutdown(IWorkbench workbench, boolean forced) {
@@ -593,6 +598,12 @@
           ClassIdGenerators.setAutomaticallyCreateClassIdAnnotation(automaticallyCreate.booleanValue());
         }
       }
+      else if (ExecutorExtensionPoint.PROP_CURRENT_CATEGORY.equals(event.getProperty())) {
+        String newCategory = (String) event.getNewValue();
+        if (StringUtility.hasText(newCategory)) {
+          ExecutorExtensionPoint.setCurrentCategory(newCategory);
+        }
+      }
     }
   }
 
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/fields/code/CodeIdField.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/fields/code/CodeIdField.java
index e23e04d..5b739aa 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/fields/code/CodeIdField.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/internal/fields/code/CodeIdField.java
@@ -79,7 +79,7 @@
       setValue(null);
     }
 
-    m_nextCodeIdField.setEnabled(enabled);
+    m_nextCodeIdField.setEnabled(enabled && super.isEnabled());
   }
 
   private String getGenericSignature() {
@@ -162,6 +162,7 @@
   @Override
   public void setEnabled(boolean enabled) {
     if (m_nextCodeIdField != null) {
+      super.setEnabled(enabled);
       m_nextCodeIdField.setEnabled(enabled);
     }
   }
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/pages/AbstractScoutTypePage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/pages/AbstractScoutTypePage.java
index b3d7e39..651e59c 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/pages/AbstractScoutTypePage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/outline/pages/AbstractScoutTypePage.java
@@ -81,7 +81,7 @@
   @Override
   public int getQuality() {
     int quality = IMarker.SEVERITY_INFO;
-    if (getType().exists()) {
+    if (TypeUtility.exists(getType())) {
       quality = ScoutSeverityManager.getInstance().getSeverityOf(getType());
     }
     return quality;
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/CodeNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/CodeNewWizardPage.java
index d1228c4..90689d2 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/CodeNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/CodeNewWizardPage.java
@@ -183,12 +183,7 @@
         try {
           setStateChanging(true);
           m_superType = (IType) event.proposal;
-          if (TypeUtility.isGenericType(getSuperType())) {
-            m_genericTypeField.setEnabled(true);
-          }
-          else {
-            m_genericTypeField.setEnabled(false);
-          }
+          m_genericTypeField.setEnabled(TypeUtility.isGenericType(getSuperType()));
 
           IType genericTypeOfSuperClass = getGenericTypeOfSuperClass();
           if (TypeUtility.exists(genericTypeOfSuperClass)) {
@@ -275,7 +270,7 @@
     op.setTypeName(getTypeName());
     String sig = null;
     if (getGenericSignature() != null && TypeUtility.isGenericType(getSuperType())) {
-      sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+      sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
     }
     else {
       sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/type/CodeTypeNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/type/CodeTypeNewWizardPage.java
index 278f216..5a3bf77 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/type/CodeTypeNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/code/type/CodeTypeNewWizardPage.java
@@ -36,6 +36,7 @@
 import org.eclipse.scout.sdk.ui.fields.proposal.ContentProposalEvent;
 import org.eclipse.scout.sdk.ui.fields.proposal.IProposalAdapterListener;
 import org.eclipse.scout.sdk.ui.fields.proposal.ProposalTextField;
+import org.eclipse.scout.sdk.ui.fields.proposal.javaelement.AbstractJavaElementContentProvider;
 import org.eclipse.scout.sdk.ui.fields.proposal.javaelement.JavaElementAbstractTypeContentProvider;
 import org.eclipse.scout.sdk.ui.fields.proposal.signature.SignatureSubTypeProposalProvider;
 import org.eclipse.scout.sdk.ui.internal.ScoutSdkUi;
@@ -65,24 +66,24 @@
 
   private final IType iCodeType = TypeUtility.getType(IRuntimeClasses.ICodeType);
 
-  private String m_nextCodeId;
-  private String m_nextCodeIdSource;
-  private INlsEntry m_nlsName;
-  private String m_typeName;
-  private String m_packageName;
-  private IType m_superType;
-  private IType m_defaultCodeType;
-  private String m_genericSignature;
-  private String m_genericCodeIdSignature;
-  private List<ITypeParameter> m_superTypeParameters;
+  protected String m_nextCodeId;
+  protected String m_nextCodeIdSource;
+  protected INlsEntry m_nlsName;
+  protected String m_typeName;
+  protected String m_packageName;
+  protected IType m_superType;
+  protected IType m_defaultCodeType;
+  protected String m_genericSignature;
+  protected String m_genericCodeIdSignature;
+  protected List<ITypeParameter> m_superTypeParameters;
 
-  private CodeIdField m_nextCodeIdField;
-  private ProposalTextField m_nlsNameField;
-  private StyledTextField m_typeNameField;
-  private EntityTextField m_entityField;
-  private ProposalTextField m_superTypeField;
-  private ProposalTextField m_genericTypeField;
-  private ProposalTextField m_genericCodeIdField;
+  protected CodeIdField m_nextCodeIdField;
+  protected ProposalTextField m_nlsNameField;
+  protected StyledTextField m_typeNameField;
+  protected EntityTextField m_entityField;
+  protected ProposalTextField m_superTypeField;
+  protected ProposalTextField m_genericTypeField;
+  protected ProposalTextField m_genericCodeIdField;
 
   // process members
   private final IScoutBundle m_sharedBundle;
@@ -108,7 +109,7 @@
 
   @Override
   protected void createContent(Composite parent) {
-    int labelColWidthPercent = 35;
+    int labelColWidthPercent = 20;
     final boolean isEnabled = getSharedBundle() != null;
     m_nextCodeIdField = new CodeIdField(parent, getSharedBundle(), labelColWidthPercent);
     m_nextCodeIdField.addModifyListener(new ModifyListener() {
@@ -173,15 +174,14 @@
       m_entityField.setEnabled(isEnabled);
     }
 
-    final JavaElementAbstractTypeContentProvider contentProvider = new JavaElementAbstractTypeContentProvider(iCodeType, ScoutUtility.getJavaProject(getSharedBundle()), (ITypeFilter) null, m_defaultCodeType);
-    m_superTypeField = getFieldToolkit().createJavaElementProposalField(parent, Texts.get("SuperType"), contentProvider, labelColWidthPercent);
+    m_superTypeField = getFieldToolkit().createJavaElementProposalField(parent, Texts.get("SuperType"), createSuperTypeContentProvider(), labelColWidthPercent);
 
-    final SignatureSubTypeProposalProvider genericProposalProvider = new SignatureSubTypeProposalProvider(getGenericTypeOfSuperClass(IRuntimeClasses.TYPE_PARAM_CODETYPE__CODE_TYPE_ID), getSharedBundle().getJavaProject());
+    final SignatureSubTypeProposalProvider genericProposalProvider = new SignatureSubTypeProposalProvider(getGenericTypeOfSuperClass(IRuntimeClasses.TYPE_PARAM_CODETYPE__CODE_TYPE_ID), ScoutUtility.getJavaProject(getSharedBundle()));
     m_genericTypeField = getFieldToolkit().createProposalField(parent, Texts.get("CodeTypeIdDatatype"), ProposalTextField.STYLE_DEFAULT, labelColWidthPercent);
     m_genericTypeField.setContentProvider(genericProposalProvider);
     m_genericTypeField.setLabelProvider(genericProposalProvider.getLabelProvider());
 
-    final SignatureSubTypeProposalProvider genericCodeIdProposalProvider = new SignatureSubTypeProposalProvider(getGenericTypeOfSuperClass(IRuntimeClasses.TYPE_PARAM_CODETYPE__CODE_ID), getSharedBundle().getJavaProject());
+    final SignatureSubTypeProposalProvider genericCodeIdProposalProvider = new SignatureSubTypeProposalProvider(getGenericTypeOfSuperClass(IRuntimeClasses.TYPE_PARAM_CODETYPE__CODE_ID), ScoutUtility.getJavaProject(getSharedBundle()));
     m_genericCodeIdField = getFieldToolkit().createProposalField(parent, Texts.get("DatatypeOfNestedCodeIds"), ProposalTextField.STYLE_DEFAULT, labelColWidthPercent);
     m_genericCodeIdField.setContentProvider(genericCodeIdProposalProvider);
     m_genericCodeIdField.setLabelProvider(genericCodeIdProposalProvider.getLabelProvider());
@@ -241,6 +241,8 @@
         }
       }
     });
+    m_genericCodeIdField.setEnabled(isEnabled);
+    m_genericTypeField.setEnabled(isEnabled);
 
     // layout
     parent.setLayout(new GridLayout(1, true));
@@ -253,6 +255,10 @@
     m_genericCodeIdField.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL));
   }
 
+  protected AbstractJavaElementContentProvider createSuperTypeContentProvider() {
+    return new JavaElementAbstractTypeContentProvider(iCodeType, ScoutUtility.getJavaProject(getSharedBundle()), (ITypeFilter) null, m_defaultCodeType);
+  }
+
   /**
    * Enables/Disables and probably clears the generic type fields depending on which generics that are available on the
    * selected super type class.
@@ -295,7 +301,7 @@
     if (getGenericSignature() != null) {
       StringBuilder fqn = new StringBuilder(getSuperType().getFullyQualifiedName());
       if (m_superTypeParameters.size() > 0) {
-        fqn.append('<');
+        fqn.append(Signature.C_GENERIC_START);
         fqn.append(Signature.toString(getGenericSignature()));
         if (m_superTypeParameters.size() > 1) {
           fqn.append(", ");
@@ -303,12 +309,12 @@
           if (m_superTypeParameters.size() > 2) {
             fqn.append(", ");
             fqn.append(IRuntimeClasses.ICode);
-            fqn.append('<');
+            fqn.append(Signature.C_GENERIC_START);
             fqn.append(Signature.toString(getGenericCodeIdSignature()));
-            fqn.append('>');
+            fqn.append(Signature.C_GENERIC_END);
           }
         }
-        fqn.append('>');
+        fqn.append(Signature.C_GENERIC_END);
         sig = SignatureCache.createTypeSignature(fqn.toString());
       }
       else {
@@ -333,12 +339,12 @@
     multiStatus.add(getStatusSuperType());
     multiStatus.add(getStatusTargetPackge());
 
-    if (m_genericTypeField != null && !m_genericTypeField.isDisposed() && m_genericTypeField.isEnabled()) {
+    if (m_genericTypeField != null && !m_genericTypeField.isDisposed() && m_genericTypeField.isEnabled() && m_genericTypeField.isVisible()) {
       multiStatus.add(getStatusGenericType());
       multiStatus.add(getStatusGenericTypeToSuperClass(getGenericSignature(), IRuntimeClasses.TYPE_PARAM_CODETYPE__CODE_TYPE_ID));
     }
 
-    if (m_genericCodeIdField != null && !m_genericCodeIdField.isDisposed() && m_genericCodeIdField.isEnabled()) {
+    if (m_genericCodeIdField != null && !m_genericCodeIdField.isDisposed() && m_genericCodeIdField.isEnabled() && m_genericCodeIdField.isVisible()) {
       multiStatus.add(getStatusGenericCodeIdType());
       multiStatus.add(getStatusGenericTypeToSuperClass(getGenericCodeIdSignature(), IRuntimeClasses.TYPE_PARAM_CODETYPE__CODE_ID));
     }
@@ -397,15 +403,17 @@
   }
 
   protected IType getGenericTypeOfSuperClass(String typeArgName) {
-    try {
-      ITypeHierarchy superHierarchy = TypeUtility.getSupertypeHierarchy(getSuperType());
-      String typeParamSig = SignatureUtility.resolveGenericParameterInSuperHierarchy(getSuperType(), superHierarchy, IRuntimeClasses.ICodeType, typeArgName);
-      if (typeParamSig != null) {
-        return TypeUtility.getTypeBySignature(typeParamSig);
+    if (TypeUtility.exists(getSuperType())) {
+      try {
+        ITypeHierarchy superHierarchy = TypeUtility.getSupertypeHierarchy(getSuperType());
+        String typeParamSig = SignatureUtility.resolveGenericParameterInSuperHierarchy(getSuperType(), superHierarchy, IRuntimeClasses.ICodeType, typeArgName);
+        if (typeParamSig != null) {
+          return TypeUtility.getTypeBySignature(typeParamSig);
+        }
       }
-    }
-    catch (CoreException e) {
-      ScoutSdkUi.logError(e);
+      catch (CoreException e) {
+        ScoutSdkUi.logError(e);
+      }
     }
     return null;
   }
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/formfield/DefaultFormFieldNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/formfield/DefaultFormFieldNewWizardPage.java
index 28d1728..d5a41b0 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/formfield/DefaultFormFieldNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/formfield/DefaultFormFieldNewWizardPage.java
@@ -178,7 +178,7 @@
     if (getSuperType() != null) {
       String sig = null;
       if (getGenericSignature() != null) {
-        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
       }
       else {
         sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/listbox/ListBoxFieldNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/listbox/ListBoxFieldNewWizardPage.java
index c316786..42ee8f2 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/listbox/ListBoxFieldNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/listbox/ListBoxFieldNewWizardPage.java
@@ -261,7 +261,7 @@
     if (getSuperType() != null) {
       String sig = null;
       if (getGenericSignature() != null) {
-        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
       }
       else {
         sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobutton/RadioButtonNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobutton/RadioButtonNewWizardPage.java
index 238a52b..facb820 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobutton/RadioButtonNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobutton/RadioButtonNewWizardPage.java
@@ -227,7 +227,7 @@
     if (getSuperType() != null) {
       String sig = null;
       if (getGenericSignature() != null) {
-        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
       }
       else {
         sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobuttongroup/RadioButtonGroupFieldNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobuttongroup/RadioButtonGroupFieldNewWizardPage.java
index 2e4fda6..fc35b3e 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobuttongroup/RadioButtonGroupFieldNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/radiobuttongroup/RadioButtonGroupFieldNewWizardPage.java
@@ -159,7 +159,7 @@
     if (getSuperType() != null) {
       String sig = null;
       if (getGenericSignature() != null) {
-        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
       }
       else {
         sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/smartfield/SmartFieldNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/smartfield/SmartFieldNewWizardPage.java
index 7e8e6a0..fe41a00 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/smartfield/SmartFieldNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/smartfield/SmartFieldNewWizardPage.java
@@ -265,7 +265,7 @@
     if (getSuperType() != null) {
       String sig = null;
       if (getGenericSignature() != null) {
-        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+        sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
       }
       else {
         sig = SignatureCache.createTypeSignature(getSuperType().getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/treebox/TreeBoxNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/treebox/TreeBoxNewWizardPage.java
index e41b586..dd7484c 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/treebox/TreeBoxNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/form/fields/treebox/TreeBoxNewWizardPage.java
@@ -15,6 +15,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
 import org.eclipse.scout.sdk.Texts;
@@ -136,7 +137,7 @@
     if (getSuperType() != null) {
       String superTypeName = getSuperType().getFullyQualifiedName();
       if (TypeUtility.isGenericType(getSuperType())) {
-        superTypeName += "<" + Long.class.getName() + ">";
+        superTypeName += Signature.C_GENERIC_START + Long.class.getName() + Signature.C_GENERIC_END;
       }
       operation.setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeName));
     }
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LocalLookupCallNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LocalLookupCallNewWizardPage.java
index 93c59fb..c07894e 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LocalLookupCallNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LocalLookupCallNewWizardPage.java
@@ -203,9 +203,9 @@
     IType superTypeProp = getLookupCallSuperType();
     if (superTypeProp != null) {
       StringBuilder superType = new StringBuilder(superTypeProp.getFullyQualifiedName());
-      superType.append('<');
+      superType.append(Signature.C_GENERIC_START);
       superType.append(Signature.toString(getGenericTypeSignature()));
-      superType.append('>');
+      superType.append(Signature.C_GENERIC_END);
       op.setSuperTypeSignature(SignatureCache.createTypeSignature(superType.toString()));
     }
     op.validate();
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizard.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizard.java
index 385a740..89b8f6f 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizard.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizard.java
@@ -147,9 +147,9 @@
 
     StringBuilder superType = new StringBuilder();
     superType.append(RuntimeClasses.getSuperTypeName(IRuntimeClasses.ILookupCall, lookupCallBundle));
-    superType.append('<');
+    superType.append(Signature.C_GENERIC_START);
     superType.append(Signature.toString(m_page1.getGenericTypeSignature()));
-    superType.append('>');
+    superType.append(Signature.C_GENERIC_END);
 
     m_operation.setSuperTypeSignature(SignatureCache.createTypeSignature(superType.toString()));
 
@@ -174,9 +174,9 @@
         IType superTypeProp = m_page1.getServiceSuperType();
         if (superTypeProp != null) {
           StringBuilder svcSuperTypeSig = new StringBuilder(superTypeProp.getFullyQualifiedName());
-          svcSuperTypeSig.append('<');
+          svcSuperTypeSig.append(Signature.C_GENERIC_START);
           svcSuperTypeSig.append(Signature.toString(m_page1.getGenericTypeSignature()));
-          svcSuperTypeSig.append('>');
+          svcSuperTypeSig.append(Signature.C_GENERIC_END);
           m_operation.setServiceSuperTypeSignature(SignatureCache.createTypeSignature(svcSuperTypeSig.toString()));
           for (ServiceRegistrationDescription desc : getCheckedServiceRegistrations(m_page2.getTreeNodes(TYPE_SERVICE_REG_SERVER, true, true))) {
             m_operation.addServiceRegistration(desc);
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizardPage.java
index 89d4430..f480bc9 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/lookupcall/LookupCallNewWizardPage.java
@@ -507,7 +507,6 @@
 
     public P_LookupServiceStrategyButtonListener(LOOKUP_SERVICE_STRATEGY strategy) {
       m_strategy = strategy;
-
     }
 
     @Override
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/services/LookupServiceNewWizard.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/services/LookupServiceNewWizard.java
index bca43df..c189cb5 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/services/LookupServiceNewWizard.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/services/LookupServiceNewWizard.java
@@ -126,7 +126,7 @@
   protected boolean beforeFinish() throws CoreException {
     m_operation = new LookupServiceNewOperation(m_locationWizardPage.getTextOfNode(TYPE_SERVICE_INTERFACE, true, true), m_locationWizardPage.getTextOfNode(TYPE_SERVICE_IMPLEMENTATION, true, true));
     IType superType = m_serviceNewWizardPage.getSuperType();
-    String genericPart = "<" + Signature.toString(m_serviceNewWizardPage.getGenericTypeSignature()) + ">";
+    String genericPart = Signature.C_GENERIC_START + Signature.toString(m_serviceNewWizardPage.getGenericTypeSignature()) + Signature.C_GENERIC_END;
     if (superType != null) {
       m_operation.setImplementationSuperTypeSignature(SignatureCache.createTypeSignature(superType.getFullyQualifiedName() + genericPart));
     }
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/DefaultTableColumnNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/DefaultTableColumnNewWizardPage.java
index 8c7d7d7..ce77e02 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/DefaultTableColumnNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/DefaultTableColumnNewWizardPage.java
@@ -204,7 +204,7 @@
     if (superTypeProp != null) {
       String sig = null;
       if (getGenericSignature() != null) {
-        sig = SignatureCache.createTypeSignature(superTypeProp.getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+        sig = SignatureCache.createTypeSignature(superTypeProp.getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
       }
       else {
         sig = SignatureCache.createTypeSignature(superTypeProp.getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/SmartTableColumnNewWizardPage.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/SmartTableColumnNewWizardPage.java
index c9630a8..1d5dc7d 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/SmartTableColumnNewWizardPage.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/wizard/tablecolumn/SmartTableColumnNewWizardPage.java
@@ -316,7 +316,7 @@
     if (superType != null) {
       String sig = null;
       if (getGenericSignature() != null) {
-        sig = SignatureCache.createTypeSignature(superType.getFullyQualifiedName() + "<" + Signature.toString(getGenericSignature()) + ">");
+        sig = SignatureCache.createTypeSignature(superType.getFullyQualifiedName() + Signature.C_GENERIC_START + Signature.toString(getGenericSignature()) + Signature.C_GENERIC_END);
       }
       else {
         sig = SignatureCache.createTypeSignature(superType.getFullyQualifiedName());
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/AbstractCachedTypeHierarchy.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/AbstractCachedTypeHierarchy.java
index 6dbf113..c4d566b 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/AbstractCachedTypeHierarchy.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/AbstractCachedTypeHierarchy.java
@@ -139,23 +139,28 @@
     if (!isCreated()) {
       synchronized (this) {
         if (!isCreated()) {
+          HierarchyCache hierarchyCache = HierarchyCache.getInstance();
           if (getBaseType() == null) {
-            HierarchyCache.getInstance().removeCachedHierarchy(null);
+            hierarchyCache.removeCachedHierarchy(null);
             throw new IllegalArgumentException("Type 'null' does not exist.");
           }
-          if (!getBaseType().exists() || !TypeUtility.exists(getBaseType().getJavaProject())) {
-            // type does no longer exist: try new resolve
-            IType tmp = TypeUtility.getType(getBaseType().getFullyQualifiedName());
-            if (TypeUtility.exists(tmp) && TypeUtility.exists(tmp.getJavaProject())) {
-              setBaseType(tmp);
-            }
-            else {
-              // still does not exist
-              HierarchyCache.getInstance().removeCachedHierarchy(getBaseType());
-              throw new IllegalArgumentException("Type '" + getBaseType().getFullyQualifiedName() + "' does not exist");
+
+          // Always re-resolve the base IType to ensure we still have the most accurate
+          IType newBaseType = TypeUtility.getType(getBaseType().getFullyQualifiedName());
+          if (TypeUtility.exists(newBaseType) && TypeUtility.exists(newBaseType.getJavaProject())) {
+            if (!newBaseType.equals(getBaseType())) {
+              hierarchyCache.replaceCachedHierarchy(getBaseType(), newBaseType, this);
+              setBaseType(newBaseType);
             }
           }
+          else {
+            // base type does no longer exist -> remove
+            hierarchyCache.removeCachedHierarchy(getBaseType());
+            throw new IllegalArgumentException("Type '" + getBaseType().getFullyQualifiedName() + "' does not exist.");
+          }
+
           revalidate();
+
           m_created = getJdtHierarchy() != null;
           if (!m_created) {
             // re-validate failed. cancel
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/HierarchyCache.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/HierarchyCache.java
index ada235f..f66a325 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/HierarchyCache.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/HierarchyCache.java
@@ -10,7 +10,6 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.util.internal.typecache;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -54,7 +53,7 @@
   }
 
   public synchronized List<ICacheableTypeHierarchyResult> getAllCachedHierarchies() {
-    return CollectionUtility.arrayList(m_cachedHierarchyResults.values());
+    return getHierarchiesSafe();
   }
 
   @Override
@@ -109,6 +108,11 @@
     m_cachedHierarchyResults.remove(type);
   }
 
+  synchronized void replaceCachedHierarchy(Object oldKey, Object newKey, ICacheableTypeHierarchyResult hierarchyToAdd) {
+    m_cachedHierarchyResults.remove(oldKey);
+    m_cachedHierarchyResults.put(newKey, hierarchyToAdd);
+  }
+
   @Override
   public ITypeHierarchy getLocalTypeHierarchy(IRegion region) {
     try {
@@ -135,7 +139,8 @@
 
   @Override
   public synchronized void invalidateAll() {
-    for (ICacheableTypeHierarchyResult h : m_cachedHierarchyResults.values()) {
+    List<ICacheableTypeHierarchyResult> hierarchies = getHierarchiesSafe(); // get a copy to prevent ConcurrentModificationException
+    for (ICacheableTypeHierarchyResult h : hierarchies) {
       if (h.isCreated()) {
         h.invalidate();
       }
@@ -143,7 +148,7 @@
   }
 
   private synchronized List<ICacheableTypeHierarchyResult> getHierarchiesSafe() {
-    return new ArrayList<ICacheableTypeHierarchyResult>(m_cachedHierarchyResults.values());
+    return CollectionUtility.arrayList(m_cachedHierarchyResults.values());
   }
 
   private void handleTypeChange(IType t, ITypeHierarchy superTypeHierarchy) {
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/JavaResourceChangedEmitter.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/JavaResourceChangedEmitter.java
index 8d84213..cca1fe6 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/JavaResourceChangedEmitter.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/JavaResourceChangedEmitter.java
@@ -11,7 +11,6 @@
 package org.eclipse.scout.sdk.util.internal.typecache;
 
 import java.lang.ref.WeakReference;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -59,7 +58,7 @@
       | IJavaElementDelta.F_ANNOTATIONS
       | IJavaElementDelta.F_AST_AFFECTED;
 
-  private static final JavaResourceChangedEmitter INSTANCE = new JavaResourceChangedEmitter(HierarchyCache.getInstance());
+  private static final JavaResourceChangedEmitter INSTANCE = new JavaResourceChangedEmitter(HierarchyCache.getInstance(), TypeCache.getInstance());
 
   private final P_JavaElementChangedListener m_javaElementListener;
   private final Object m_resourceLock;
@@ -69,6 +68,7 @@
   private final Map<IType, List<WeakReference<IJavaResourceChangedListener>>> m_methodChangedListeners;
   private final Object m_eventListenerLock;
   private final HierarchyCache m_hierarchyCache;
+  private final TypeCache m_typeCache;
   private final IBufferChangedListener m_sourceBufferListener;
 
   public static ICompilationUnit[] getPendingWorkingCopies() {
@@ -77,7 +77,8 @@
     }
   }
 
-  private JavaResourceChangedEmitter(HierarchyCache hierarchyCache) {
+  private JavaResourceChangedEmitter(HierarchyCache hierarchyCache, TypeCache typeCache) {
+    m_typeCache = typeCache;
     m_hierarchyCache = hierarchyCache;
     m_eventCollectors = new HashMap<ICompilationUnit, JdtEventCollector>();
     m_eventListenerLock = new Object();
@@ -117,7 +118,7 @@
     synchronized (m_eventListenerLock) {
       List<WeakReference<IJavaResourceChangedListener>> listenerList = m_innerTypeChangedListeners.get(type);
       if (listenerList == null) {
-        listenerList = new ArrayList<WeakReference<IJavaResourceChangedListener>>();
+        listenerList = new LinkedList<WeakReference<IJavaResourceChangedListener>>();
         m_innerTypeChangedListeners.put(type, listenerList);
       }
       listenerList.add(new WeakReference<IJavaResourceChangedListener>(listener));
@@ -147,7 +148,7 @@
     synchronized (m_eventListenerLock) {
       List<WeakReference<IJavaResourceChangedListener>> listenerList = m_methodChangedListeners.get(type);
       if (listenerList == null) {
-        listenerList = new ArrayList<WeakReference<IJavaResourceChangedListener>>();
+        listenerList = new LinkedList<WeakReference<IJavaResourceChangedListener>>();
         m_methodChangedListeners.put(type, listenerList);
       }
       listenerList.add(new WeakReference<IJavaResourceChangedListener>(listener));
@@ -330,10 +331,10 @@
   }
 
   private void fireEvent(JdtEvent e) {
-    // first notify hierarchies which could be used by other listeners
-    if (m_hierarchyCache != null) {
-      m_hierarchyCache.elementChanged(e);
-    }
+    // first notify our caches which could be used by other listeners
+    m_typeCache.elementChanged(e);
+    m_hierarchyCache.elementChanged(e);
+
     for (IJavaResourceChangedListener l : m_eventListeners.getListeners(IJavaResourceChangedListener.class)) {
       try {
         l.handleEvent(e);
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/TypeCache.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/TypeCache.java
index 02d448a..7352c28 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/TypeCache.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/internal/typecache/TypeCache.java
@@ -26,6 +26,8 @@
 import org.eclipse.core.resources.IResourceDeltaVisitor;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaElementDelta;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.Signature;
 import org.eclipse.jdt.core.search.IJavaSearchConstants;
@@ -36,6 +38,7 @@
 import org.eclipse.jdt.core.search.SearchRequestor;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.sdk.util.internal.SdkUtilActivator;
+import org.eclipse.scout.sdk.util.jdt.JdtEvent;
 import org.eclipse.scout.sdk.util.type.TypeUtility;
 import org.eclipse.scout.sdk.util.typecache.ITypeCache;
 
@@ -241,4 +244,28 @@
       }
     }
   }
+
+  /**
+   * will be notified before events are passed through the event listener list from {@link JavaResourceChangedEmitter}
+   */
+  void elementChanged(JdtEvent e) {
+    switch (e.getEventType()) {
+      case IJavaElementDelta.ADDED:
+      case IJavaElementDelta.CHANGED: {
+        if (e.getElementType() == IJavaElement.JAVA_PROJECT) {
+          if ((e.getFlags() & IJavaElementDelta.F_OPENED) != 0 || e.getFlags() == 0) {
+            // a new java project has been created/imported/opened/added in the workspace
+            clearCache();
+          }
+        }
+        else if (e.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT) {
+          if ((e.getFlags() & (IJavaElementDelta.F_ADDED_TO_CLASSPATH | IJavaElementDelta.F_REMOVED_FROM_CLASSPATH | IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED | IJavaElementDelta.F_REORDER)) != 0 || e.getFlags() == 0) {
+            // the classpath has been changed
+            clearCache();
+          }
+        }
+        break;
+      }
+    }
+  }
 }
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java
index da11613..fbbcc04 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java
@@ -157,9 +157,7 @@
         if (name.equals(p.getMemberName())) {
           Object val = p.getValue();
           if (val != null) {
-            if (p.getValueKind() == IMemberValuePair.K_CHAR || p.getValueKind() == IMemberValuePair.K_STRING) {
-              return "" + val;
-            }
+            return "" + val;
           }
         }
       }
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeFilters.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeFilters.java
index 4b5f046..c405206 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeFilters.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeFilters.java
@@ -80,6 +80,18 @@
       }
     }
   };
+  private static final ITypeFilter NO_SURROUNDING_CONTEXT_TYPE_FILTER = new ITypeFilter() {
+    @Override
+    public boolean accept(IType type) {
+      try {
+        return type != null && !type.isAnonymous() && (type.getDeclaringType() == null || Flags.isStatic(type.getFlags()));
+      }
+      catch (JavaModelException e) {
+        SdkUtilActivator.logWarning("could not evalutate flags of type '" + type.getFullyQualifiedName() + "'.", e);
+        return false;
+      }
+    }
+  };
 
   protected TypeFilters() {
   }
@@ -294,6 +306,16 @@
     return getNotInTypes(excludedSet);
   }
 
+  /**
+   * Returns an {@link ITypeFilter} that accepts all {@link IType}s that have no surrounding context {@link IType}.<br>
+   * More formally: Accepts all {@link IType}s that are either static or primary types (= have no declaring type).
+   *
+   * @return an {@link ITypeFilter} that accepts all {@link IType}s that have no surrounding context {@link IType}.
+   */
+  public static ITypeFilter getNoSurroundingContextTypeFilter() {
+    return NO_SURROUNDING_CONTEXT_TYPE_FILTER;
+  }
+
   public static ITypeFilter getNotInTypes(final Set<IType> excludedTypes) {
     if (excludedTypes == null || excludedTypes.size() < 1) {
       return null; // no filter required
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeUtility.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeUtility.java
index 80d392d..317b6d3 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeUtility.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/type/TypeUtility.java
@@ -27,6 +27,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IClassFile;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IImportDeclaration;
@@ -353,7 +354,6 @@
   public static IMethod getFirstMethod(IType type, IMethodFilter filter) {
     try {
       for (IMethod method : type.getMethods()) {
-
         if (filter == null || filter.accept(method)) {
           return method;
         }
@@ -377,10 +377,7 @@
    */
   public static IMethod getMethod(IType type, final String methodName) {
     Set<IMethod> methods = getMethods(type, MethodFilters.getNameFilter(methodName));
-    if (CollectionUtility.hasElements(methods)) {
-      return CollectionUtility.firstElement(methods);
-    }
-    return null;
+    return CollectionUtility.firstElement(methods);
   }
 
   /**
@@ -611,24 +608,48 @@
    * &nbsp;&nbsp;&nbsp;&nbsp;}<br>
    * &nbsp;&nbsp;}<br>
    * }<br>
-   * // A.getTopLevelType() returns A<br>
-   * // D.getTopLevelType() returns A
+   * // A.getPrimaryType() returns A<br>
+   * // D.getPrimaryType() returns A
    * </code>
    *
    * @return the primary type of the compilation unit this type is declared in.
+   * @throws JavaModelException
    */
   public static IType getPrimaryType(IJavaElement e) {
-    if (e == null) {
+    if (!exists(e)) {
       return null;
     }
-    IType surroundingType = (IType) e.getAncestor(IJavaElement.TYPE);
+
+    IType surroundingType = null;
+    if (e.getElementType() == IJavaElement.TYPE) {
+      surroundingType = (IType) e;
+    }
+    else if (e.getElementType() == IJavaElement.COMPILATION_UNIT) {
+      try {
+        IType[] types = ((ICompilationUnit) e).getTypes();
+        if (types != null && types.length == 1) {
+          surroundingType = types[0];
+        }
+      }
+      catch (JavaModelException e1) {
+        SdkUtilActivator.logError("Unable to retrieve types of icu '" + e.getElementName() + "'.", e1);
+        return null;
+      }
+    }
+    else if (e.getElementType() == IJavaElement.CLASS_FILE) {
+      surroundingType = ((IClassFile) e).getType();
+    }
+    else {
+      surroundingType = (IType) e.getAncestor(IJavaElement.TYPE);
+    }
+
     if (!exists(surroundingType)) {
       return null; // element is not within a type.
     }
 
     IType result = null;
     IType tmp = surroundingType;
-    while (exists(tmp)) {
+    while (tmp != null && tmp.exists()) {
       result = tmp;
       tmp = tmp.getDeclaringType();
     }
diff --git a/org.eclipse.scout.sdk.ws.jaxws/plugin.xml b/org.eclipse.scout.sdk.ws.jaxws/plugin.xml
index 049419a..e5960d3 100644
--- a/org.eclipse.scout.sdk.ws.jaxws/plugin.xml
+++ b/org.eclipse.scout.sdk.ws.jaxws/plugin.xml
@@ -208,108 +208,87 @@
          point="org.eclipse.scout.sdk.ui.executor">
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.AuthenticationHandlerNewWizardExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.AuthenticationHandlerNewWizardAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.AuthenticationHandlerNewWizardAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.BindingFileNewExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.BindingFileNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.BindingFileNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.BuildPropertiesEditExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.BuildPropertiesEditAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.BuildPropertiesEditAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.CleanupPhantomJarFileExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.CleanupPhantomJarFileAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.CleanupPhantomJarFileAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.ConsumerNewWizardExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.ConsumerNewWizardAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.ConsumerNewWizardAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.CredentialValidationStrategyNewExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.CredentialValidationStrategyNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.CredentialValidationStrategyNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.FileOpenExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.FileOpenAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.FileOpenAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.HandlerAddExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerAddAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerAddAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.HandlerChainFilterEditExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerChainFilterEditAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerChainFilterEditAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.HandlerChainNewExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerChainNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerChainNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.HandlerChainRemoveExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerChainRemoveAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerChainRemoveAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.HandlerNewWizardExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerNewWizardAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.HandlerNewWizardAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.JaxWsAliasChangeWizardExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.JaxWsAliasChangeWizardAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.JaxWsAliasChangeWizardAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.ProviderNewWizardExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.ProviderNewWizardAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.ProviderNewWizardAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.RepairExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.RepairAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.RepairAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.SessionFactoryNewExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.SessionFactoryNewAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.SessionFactoryNewAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.StubRebuildExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.StubRebuildAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.StubRebuildAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.TypeOpenExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.TypeOpenAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.TypeOpenAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.WsConsumerDeleteExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.WsConsumerDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.WsConsumerDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.WsProviderCodeFirstDeleteExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.WsProviderCodeFirstDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.WsProviderCodeFirstDeleteAction">
       </executor>
       <executor
             class="org.eclipse.scout.sdk.ws.jaxws.executor.WsProviderDeleteExecutor"
-            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.WsProviderDeleteAction"
-            order="0">
+            id="org.eclipse.scout.sdk.ws.jaxws.swt.action.WsProviderDeleteAction">
       </executor>
    </extension>
 </plugin>
diff --git a/org.eclipse.scout.sdk/plugin.xml b/org.eclipse.scout.sdk/plugin.xml
index 61ad2a0..e961a6a 100644
--- a/org.eclipse.scout.sdk/plugin.xml
+++ b/org.eclipse.scout.sdk/plugin.xml
@@ -1030,6 +1030,15 @@
       <bundle
             symbolicName="org.eclipse.scout.rt.spec.client">
       </bundle>
+      <bundle
+            symbolicName="org.eclipse.scout.rt.server.jms">
+      </bundle>
+      <bundle
+            symbolicName="org.eclipse.scout.rt.server.servlet25">
+      </bundle>
+      <bundle
+            symbolicName="org.eclipse.scout.rt.server.servlet31">
+      </bundle>
       <!-- may be installed from the marketplace. -->
       <bundle
             symbolicName="com.bsiag.scout.rt.server.jdbc.mysql5117">
diff --git a/org.eclipse.scout.sdk/resources/texts/Texts.properties b/org.eclipse.scout.sdk/resources/texts/Texts.properties
index 66d92c4..ee0effb 100644
--- a/org.eclipse.scout.sdk/resources/texts/Texts.properties
+++ b/org.eclipse.scout.sdk/resources/texts/Texts.properties
@@ -66,6 +66,7 @@
 ClientServicesNodePage=Services
 CodeId=Code Id
 CodeIdNotValid=Code Id is not valid for the given generic type.
+CodeStyle=Code Style
 CodeType=Code Type
 CodeTypeDoesNotMatchGeneric=The selected CodeType does not match the given generic type.
 CodeTypeIdDatatype=Datatype of CodeType Id
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/codeid/CodeIdExtensionPoint.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/codeid/CodeIdExtensionPoint.java
index 02b12d8..8bbd68a 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/codeid/CodeIdExtensionPoint.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/codeid/CodeIdExtensionPoint.java
@@ -11,6 +11,8 @@
 package org.eclipse.scout.sdk.extensions.codeid;
 
 import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.TreeMap;
 
 import org.eclipse.core.runtime.IConfigurationElement;
@@ -20,6 +22,7 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.scout.commons.CollectionUtility;
 import org.eclipse.scout.commons.CompositeObject;
+import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.sdk.extensions.codeid.parsers.ICodeIdParser;
 import org.eclipse.scout.sdk.internal.ScoutSdk;
 import org.eclipse.scout.sdk.util.signature.SignatureCache;
@@ -35,10 +38,10 @@
   private static final String ATTRIB_PRIO = "priority";
 
   private static final Object CODE_ID_PROV_LOCK = new Object();
-  private static volatile ICodeIdProvider[] codeIdProviderExtensions;
+  private static volatile List<ICodeIdProvider> codeIdProviderExtensions;
 
   private static final Object CODE_ID_PARSER_LOCK = new Object();
-  private static HashMap<String, TreeMap<CompositeObject, ICodeIdParser>> codeIdParsers;
+  private static volatile Map<String, Map<CompositeObject, ICodeIdParser>> codeIdParsers;
 
   private CodeIdExtensionPoint() {
   }
@@ -46,32 +49,30 @@
   /**
    * @return all extensions in the prioritized order.
    */
-  private static ICodeIdProvider[] getCodeIdProviderExtensions() {
-    synchronized (CODE_ID_PROV_LOCK) {
-      if (codeIdProviderExtensions == null) {
-        TreeMap<CompositeObject, ICodeIdProvider> providers = new TreeMap<CompositeObject, ICodeIdProvider>();
-        IExtensionRegistry reg = Platform.getExtensionRegistry();
-        IExtensionPoint xp = reg.getExtensionPoint(ScoutSdk.PLUGIN_ID, EXTENSION_POINT_NAME);
-        IExtension[] extensions = xp.getExtensions();
-        for (IExtension extension : extensions) {
-          IConfigurationElement[] providerElememts = extension.getConfigurationElements();
-          for (int i = 0; i < providerElememts.length; i++) {
-            IConfigurationElement providerElememt = providerElememts[i];
-            if (CODE_ID_PROVIDER_EXT_NAME.equals(providerElememt.getName())) {
-              String className = providerElememt.getAttribute(ATTRIB_CLASS);
-
-              ScoutSdk.logInfo("found code id provider: " + className);
-              try {
-                ICodeIdProvider provider = (ICodeIdProvider) providerElememt.createExecutableExtension(ATTRIB_CLASS);
-                providers.put(new CompositeObject(getPriority(providerElememt), i, provider), provider);
-              }
-              catch (Exception t) {
-                ScoutSdk.logError("register code id provider: " + className, t);
+  private static List<ICodeIdProvider> getCodeIdProviderExtensions() {
+    if (codeIdProviderExtensions == null) {
+      synchronized (CODE_ID_PROV_LOCK) {
+        if (codeIdProviderExtensions == null) {
+          Map<CompositeObject, ICodeIdProvider> providers = new TreeMap<CompositeObject, ICodeIdProvider>();
+          IExtensionRegistry reg = Platform.getExtensionRegistry();
+          IExtensionPoint xp = reg.getExtensionPoint(ScoutSdk.PLUGIN_ID, EXTENSION_POINT_NAME);
+          IExtension[] extensions = xp.getExtensions();
+          for (IExtension extension : extensions) {
+            IConfigurationElement[] providerElememts = extension.getConfigurationElements();
+            for (IConfigurationElement providerElememt : providerElememts) {
+              if (CODE_ID_PROVIDER_EXT_NAME.equals(providerElememt.getName())) {
+                try {
+                  ICodeIdProvider provider = (ICodeIdProvider) providerElememt.createExecutableExtension(ATTRIB_CLASS);
+                  providers.put(new CompositeObject(getPriority(providerElememt), provider.getClass().getName()), provider);
+                }
+                catch (Exception t) {
+                  ScoutSdk.logError("Error registering code id provider '" + providerElememt.getNamespaceIdentifier() + "'.", t);
+                }
               }
             }
           }
+          codeIdProviderExtensions = CollectionUtility.arrayList(providers.values());
         }
-        codeIdProviderExtensions = providers.values().toArray(new ICodeIdProvider[providers.size()]);
       }
     }
     return codeIdProviderExtensions;
@@ -89,46 +90,46 @@
     return priority;
   }
 
-  private static HashMap<String, TreeMap<CompositeObject, ICodeIdParser>> getCodeIdParsers() {
-    synchronized (CODE_ID_PARSER_LOCK) {
-      if (codeIdParsers == null) {
-        HashMap<String, TreeMap<CompositeObject, ICodeIdParser>> parsers = new HashMap<String, TreeMap<CompositeObject, ICodeIdParser>>();
-        IExtensionRegistry reg = Platform.getExtensionRegistry();
-        IExtensionPoint xp = reg.getExtensionPoint(ScoutSdk.PLUGIN_ID, EXTENSION_POINT_NAME);
-        IExtension[] extensions = xp.getExtensions();
-        for (IExtension extension : extensions) {
-          IConfigurationElement[] codeIdElements = extension.getConfigurationElements();
-          for (int i = 0; i < codeIdElements.length; i++) {
-            IConfigurationElement parserElememt = codeIdElements[i];
-            if (CODE_ID_PARSER_EXT_NAME.equals(parserElememt.getName())) {
-              String className = parserElememt.getAttribute(ATTRIB_CLASS);
-              String genericTypeSignature = SignatureCache.createTypeSignature(parserElememt.getAttribute(ATTRIB_GENERIC_TYPE));
-              int prio = getPriority(parserElememt);
-              ScoutSdk.logInfo("found code id parser: " + className);
-
-              try {
-                ICodeIdParser parser = (ICodeIdParser) parserElememt.createExecutableExtension(ATTRIB_CLASS);
-                TreeMap<CompositeObject, ICodeIdParser> typeParsers = parsers.get(genericTypeSignature);
-                if (typeParsers == null) {
-                  typeParsers = new TreeMap<CompositeObject, ICodeIdParser>();
-                  parsers.put(genericTypeSignature, typeParsers);
+  private static Map<String, Map<CompositeObject, ICodeIdParser>> getCodeIdParsers() {
+    if (codeIdParsers == null) {
+      synchronized (CODE_ID_PARSER_LOCK) {
+        if (codeIdParsers == null) {
+          Map<String, Map<CompositeObject, ICodeIdParser>> parsers = new HashMap<String, Map<CompositeObject, ICodeIdParser>>();
+          IExtensionRegistry reg = Platform.getExtensionRegistry();
+          IExtensionPoint xp = reg.getExtensionPoint(ScoutSdk.PLUGIN_ID, EXTENSION_POINT_NAME);
+          IExtension[] extensions = xp.getExtensions();
+          for (IExtension extension : extensions) {
+            for (IConfigurationElement parserElememt : extension.getConfigurationElements()) {
+              if (CODE_ID_PARSER_EXT_NAME.equals(parserElememt.getName())) {
+                String genericType = parserElememt.getAttribute(ATTRIB_GENERIC_TYPE);
+                if (StringUtility.hasText(genericType)) {
+                  String genericTypeSignature = SignatureCache.createTypeSignature(genericType);
+                  try {
+                    int prio = getPriority(parserElememt);
+                    ICodeIdParser parser = (ICodeIdParser) parserElememt.createExecutableExtension(ATTRIB_CLASS);
+                    Map<CompositeObject, ICodeIdParser> typeParsers = parsers.get(genericTypeSignature);
+                    if (typeParsers == null) {
+                      typeParsers = new TreeMap<CompositeObject, ICodeIdParser>();
+                      parsers.put(genericTypeSignature, typeParsers);
+                    }
+                    typeParsers.put(new CompositeObject(prio, parser.getClass().getName()), parser);
+                  }
+                  catch (Exception t) {
+                    ScoutSdk.logError("Error registering code id parser '" + parserElememt.getNamespaceIdentifier() + "'.", t);
+                  }
                 }
-                typeParsers.put(new CompositeObject(prio, i, parser), parser);
-              }
-              catch (Exception t) {
-                ScoutSdk.logError("register code id parser: " + className, t);
               }
             }
           }
+          codeIdParsers = CollectionUtility.copyMap(parsers);
         }
-        codeIdParsers = parsers;
       }
-      return codeIdParsers;
     }
+    return codeIdParsers;
   }
 
   public static ICodeIdParser getCodeIdParser(String genericType) {
-    TreeMap<CompositeObject, ICodeIdParser> parsers = getCodeIdParsers().get(genericType);
+    Map<CompositeObject, ICodeIdParser> parsers = getCodeIdParsers().get(genericType);
     if (parsers != null) {
       return CollectionUtility.firstElement(parsers.values());
     }
@@ -136,19 +137,17 @@
   }
 
   public static String getNextCodeId(IScoutBundle projectGroup, String genericSignature) {
-    String value = null;
-    ICodeIdProvider[] providers = getCodeIdProviderExtensions();
-    for (ICodeIdProvider p : providers) {
+    for (ICodeIdProvider p : getCodeIdProviderExtensions()) {
       try {
-        value = p.getNextId(projectGroup, genericSignature);
+        String value = p.getNextId(projectGroup, genericSignature);
         if (value != null) {
-          break;
+          return value;
         }
       }
       catch (Exception e) {
-        ScoutSdk.logWarning("Exception in codeIdExtension '" + p.getClass().getName() + "'", e);
+        ScoutSdk.logWarning("Exception in codeIdExtension '" + p.getClass().getName() + "'.", e);
       }
     }
-    return value;
+    return null;
   }
 }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/runtime/bundles/RuntimeBundles.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/runtime/bundles/RuntimeBundles.java
index bd6cd2e..8b522c6 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/runtime/bundles/RuntimeBundles.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/extensions/runtime/bundles/RuntimeBundles.java
@@ -126,7 +126,7 @@
     }
   }
 
-  public static Integer parseOrder(String order) {
+  private static Integer parseOrder(String order) {
     try {
       return Integer.parseInt(order);
     }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractDtoTypeSourceBuilder.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractDtoTypeSourceBuilder.java
index af51418..e6d1b05 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractDtoTypeSourceBuilder.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractDtoTypeSourceBuilder.java
@@ -252,7 +252,7 @@
             TypeSourceBuilder propertyTypeBuilder = new TypeSourceBuilder(propName);
             propertyTypeBuilder.setFlags(Flags.AccPublic | Flags.AccStatic);
             String superTypeSig = SignatureCache.createTypeSignature(IRuntimeClasses.AbstractPropertyData);
-            superTypeSig = DtoUtility.ENDING_SEMICOLON_PATTERN.matcher(superTypeSig).replaceAll("<" + unboxedSignature + ">;");
+            superTypeSig = DtoUtility.ENDING_SEMICOLON_PATTERN.matcher(superTypeSig).replaceAll(Signature.C_GENERIC_START + unboxedSignature + Signature.C_GENERIC_END + Signature.C_SEMICOLON);
             propertyTypeBuilder.setSuperTypeSignature(superTypeSig);
             IFieldSourceBuilder serialVersionUidBuilder = FieldSourceBuilderFactory.createSerialVersionUidBuilder();
             propertyTypeBuilder.addSortedFieldSourceBuilder(SortedMemberKeyFactory.createFieldSerialVersionUidKey(serialVersionUidBuilder), serialVersionUidBuilder);
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractTableBeanSourceBuilder.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractTableBeanSourceBuilder.java
index a9db5aa..54bb8f4 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractTableBeanSourceBuilder.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/workspace/dto/AbstractTableBeanSourceBuilder.java
@@ -384,7 +384,7 @@
     addSortedMethodSourceBuilder(SortedMemberKeyFactory.createMethodAnyKey(createRowSourceBuilder), createRowSourceBuilder);
 
     IMethodSourceBuilder getRowTypeSourceBuilder = MethodSourceBuilderFactory.createOverrideMethodSourceBuilder(this, "getRowType");
-    getRowTypeSourceBuilder.setReturnTypeSignature(SignatureCache.createTypeSignature(Class.class.getName() + "<? extends " + IRuntimeClasses.AbstractTableRowData + ">"));
+    getRowTypeSourceBuilder.setReturnTypeSignature(SignatureCache.createTypeSignature(Class.class.getName() + Signature.C_GENERIC_START + "? extends " + IRuntimeClasses.AbstractTableRowData + Signature.C_GENERIC_END));
     getRowTypeSourceBuilder.setMethodBodySourceBuilder(new IMethodBodySourceBuilder() {
 
       @Override
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/CodeTypeNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/CodeTypeNewOperation.java
index 0f20548..691ea4d 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/CodeTypeNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/CodeTypeNewOperation.java
@@ -35,6 +35,9 @@
 
 public class CodeTypeNewOperation extends PrimaryTypeNewOperation {
 
+  public static final String ID_FIELD_NAME = "ID";
+  public static final String GET_ID_METHOD_NAME = "getId";
+
   private String m_nextCodeId;
   private INlsEntry m_nlsEntry;
 
@@ -63,8 +66,9 @@
   public void run(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException {
     // serial version UID
     addFieldSourceBuilder(FieldSourceBuilderFactory.createSerialVersionUidBuilder());
+
     // field ID
-    FieldSourceBuilder idFieldBuilder = new FieldSourceBuilder("ID") {
+    FieldSourceBuilder idFieldBuilder = new FieldSourceBuilder(ID_FIELD_NAME) {
       @Override
       public void createSource(StringBuilder source, String lineDelimiter, IJavaProject ownerProject, IImportValidator validator) throws CoreException {
         super.createSource(source, lineDelimiter, ownerProject, validator);
@@ -73,7 +77,6 @@
         }
       }
     };
-
     if (StringUtility.isNullOrEmpty(getNextCodeId())) {
       idFieldBuilder.setValue("null");
     }
@@ -83,17 +86,10 @@
     idFieldBuilder.setCommentSourceBuilder(CommentSourceBuilderFactory.createPreferencesFieldCommentBuilder());
     idFieldBuilder.setFlags(Flags.AccPublic | Flags.AccStatic | Flags.AccFinal);
 
-    IMethodSourceBuilder getIdSourceBuilder = MethodSourceBuilderFactory.createOverrideMethodSourceBuilder(getSourceBuilder(), "getId");
+    IMethodSourceBuilder getIdSourceBuilder = MethodSourceBuilderFactory.createOverrideMethodSourceBuilder(getSourceBuilder(), GET_ID_METHOD_NAME);
     getIdSourceBuilder.setMethodBodySourceBuilder(MethodBodySourceBuilderFactory.createSimpleMethodBody("return ID;"));
-
     idFieldBuilder.setSignature(getIdSourceBuilder.getReturnTypeSignature());
     addFieldSourceBuilder(idFieldBuilder);
-    // constructor
-    IMethodSourceBuilder constructorSourceBuilder = MethodSourceBuilderFactory.createConstructorSourceBuilder(getElementName());
-    constructorSourceBuilder.setCommentSourceBuilder(CommentSourceBuilderFactory.createPreferencesMethodCommentBuilder());
-    constructorSourceBuilder.addExceptionSignature(SignatureCache.createTypeSignature(IRuntimeClasses.ProcessingException));
-    constructorSourceBuilder.setMethodBodySourceBuilder(MethodBodySourceBuilderFactory.createSimpleMethodBody("super();"));
-    addSortedMethodSourceBuilder(SortedMemberKeyFactory.createMethodConstructorKey(constructorSourceBuilder), constructorSourceBuilder);
 
     // nls
     if (getNlsEntry() != null) {
@@ -101,13 +97,23 @@
       nlsSourceBuilder.setMethodBodySourceBuilder(MethodBodySourceBuilderFactory.createNlsEntryReferenceBody(getNlsEntry()));
       addSortedMethodSourceBuilder(SortedMemberKeyFactory.createMethodGetConfiguredKey(nlsSourceBuilder), nlsSourceBuilder);
     }
-    // get id method
 
+    // get id method
     addSortedMethodSourceBuilder(SortedMemberKeyFactory.createMethodAnyKey(getIdSourceBuilder), getIdSourceBuilder);
 
+    addConstructorSourceBuilders();
+
     super.run(monitor, workingCopyManager);
   }
 
+  protected void addConstructorSourceBuilders() {
+    IMethodSourceBuilder constructorSourceBuilder = MethodSourceBuilderFactory.createConstructorSourceBuilder(getElementName());
+    constructorSourceBuilder.setCommentSourceBuilder(CommentSourceBuilderFactory.createPreferencesMethodCommentBuilder());
+    constructorSourceBuilder.addExceptionSignature(SignatureCache.createTypeSignature(IRuntimeClasses.ProcessingException));
+    constructorSourceBuilder.setMethodBodySourceBuilder(MethodBodySourceBuilderFactory.createSimpleMethodBody("super();"));
+    addSortedMethodSourceBuilder(SortedMemberKeyFactory.createMethodConstructorKey(constructorSourceBuilder), constructorSourceBuilder);
+  }
+
   public void setNextCodeId(String nextCodeId) {
     m_nextCodeId = nextCodeId;
   }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/MenuNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/MenuNewOperation.java
index 37394e2..e7b9c38 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/MenuNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/MenuNewOperation.java
@@ -19,6 +19,7 @@
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
 import org.eclipse.scout.sdk.extensions.runtime.classes.IRuntimeClasses;
@@ -103,7 +104,7 @@
           String treeMenuTypeName = validator.getTypeName(SignatureCache.createTypeSignature(IRuntimeClasses.TreeMenuType));
           String valueFieldMenuTypeName = validator.getTypeName(SignatureCache.createTypeSignature(IRuntimeClasses.ValueFieldMenuType));
 
-          source.append("return ").append(collUtilityName).append(".<").append(iMenuTypeName).append("> hashSet(");
+          source.append("return ").append(collUtilityName).append(".").append(Signature.C_GENERIC_START).append(iMenuTypeName).append(Signature.C_GENERIC_END).append(" hashSet(");
           if (superTypeHierarchy.contains(TypeUtility.getType(IRuntimeClasses.ITable))) {
             source.append(tableMenuTypeName).append(".EmptySpace");
           }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/WizardStepNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/WizardStepNewOperation.java
index 0dd1e42..6f70c21 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/WizardStepNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/WizardStepNewOperation.java
@@ -16,6 +16,7 @@
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.CompareUtility;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
@@ -103,7 +104,7 @@
       if (CompareUtility.equals(superTypeFqn, IRuntimeClasses.AbstractWizardStep)) {
         // update generic in supertype signature
         StringBuilder superTypeSigBuilder = new StringBuilder(superTypeFqn);
-        superTypeSigBuilder.append("<").append(getForm().getFullyQualifiedName()).append(">");
+        superTypeSigBuilder.append(Signature.C_GENERIC_START).append(getForm().getFullyQualifiedName()).append(Signature.C_GENERIC_END);
         wizardStepOp.setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeSigBuilder.toString()));
         // execActivate method
         IMethodSourceBuilder execActivateBuilder = MethodSourceBuilderFactory.createOverrideMethodSourceBuilder(wizardStepOp.getSourceBuilder(), "execActivate");
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/SearchFormFromTablePageHelper.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/SearchFormFromTablePageHelper.java
index 58944e7..9a1aa6b 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/SearchFormFromTablePageHelper.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/SearchFormFromTablePageHelper.java
@@ -18,6 +18,7 @@
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
 import org.eclipse.scout.nls.sdk.model.util.Language;
 import org.eclipse.scout.nls.sdk.model.workspace.NlsEntry;
@@ -194,7 +195,7 @@
       if (TypeUtility.exists(codeTypeMethod)) {
         final IType codeType = PropertyMethodSourceUtility.parseReturnParameterClass(PropertyMethodSourceUtility.getMethodReturnValue(codeTypeMethod), codeTypeMethod);
         // listbox
-        ITypeSourceBuilder listBoxBuilder = addFormField(fieldNamePlain + SdkProperties.SUFFIX_FORM_FIELD, nlsEntry, SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.IListBox, searchFormProject) + "<" + Long.class.getName() + ">"), orderNr, fieldOwnerFqn, fieldOwnerBuilder, fieldGetterOwnerBuilder);
+        ITypeSourceBuilder listBoxBuilder = addFormField(fieldNamePlain + SdkProperties.SUFFIX_FORM_FIELD, nlsEntry, SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.IListBox, searchFormProject) + Signature.C_GENERIC_START + Long.class.getName() + Signature.C_GENERIC_END), orderNr, fieldOwnerFqn, fieldOwnerBuilder, fieldGetterOwnerBuilder);
         if (TypeUtility.exists(codeType)) {
           // getConfiguredCodeType method
           IMethodSourceBuilder getConfiguredCodeTypeBuilder = MethodSourceBuilderFactory.createOverrideMethodSourceBuilder(listBoxBuilder, "getConfiguredCodeType");
@@ -207,7 +208,7 @@
         if (TypeUtility.exists(lookupCallMethod)) {
           final IType lookupCall = PropertyMethodSourceUtility.parseReturnParameterClass(PropertyMethodSourceUtility.getMethodReturnValue(lookupCallMethod), lookupCallMethod);
           // smartfield
-          ITypeSourceBuilder smartFieldBuilder = addFormField(fieldNamePlain + SdkProperties.SUFFIX_FORM_FIELD, nlsEntry, SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.ISmartField, searchFormProject) + "<" + Long.class.getName() + ">"), orderNr, fieldOwnerFqn, fieldOwnerBuilder, fieldGetterOwnerBuilder);
+          ITypeSourceBuilder smartFieldBuilder = addFormField(fieldNamePlain + SdkProperties.SUFFIX_FORM_FIELD, nlsEntry, SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.ISmartField, searchFormProject) + Signature.C_GENERIC_START + Long.class.getName() + Signature.C_GENERIC_END), orderNr, fieldOwnerFqn, fieldOwnerBuilder, fieldGetterOwnerBuilder);
           if (TypeUtility.exists(lookupCall)) {
             // getConfiguredLookupCall method
             IMethodSourceBuilder getConfiguredCodeTypeBuilder = MethodSourceBuilderFactory.createOverrideMethodSourceBuilder(smartFieldBuilder, "getConfiguredLookupCall");
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/CalendarFieldNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/CalendarFieldNewOperation.java
index 722d260..8b9edad 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/CalendarFieldNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/CalendarFieldNewOperation.java
@@ -15,6 +15,7 @@
 import org.eclipse.jdt.core.Flags;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.CompareUtility;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
@@ -95,7 +96,7 @@
       newOp.addTypeSourceBuilder(calendarBuilder);
       // update generic in super type signature
       StringBuilder superTypeSigBuilder = new StringBuilder(superTypeFqn);
-      superTypeSigBuilder.append("<").append(calendarBuilder.getFullyQualifiedName().replace('$', '.')).append(">");
+      superTypeSigBuilder.append(Signature.C_GENERIC_START).append(calendarBuilder.getFullyQualifiedName().replace('$', '.')).append(Signature.C_GENERIC_END);
       newOp.setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeSigBuilder.toString()));
     }
 
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/ListBoxFieldNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/ListBoxFieldNewOperation.java
index 9cd9ae8..0227544 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/ListBoxFieldNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/ListBoxFieldNewOperation.java
@@ -56,7 +56,7 @@
     m_declaringType = declaringType;
     m_formatSource = formatSource;
     // default
-    setSuperTypeSignature(SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.IListBox, getDeclaringType().getJavaProject()) + "<" + Long.class.getName() + ">"));
+    setSuperTypeSignature(SignatureCache.createTypeSignature(RuntimeClasses.getSuperTypeName(IRuntimeClasses.IListBox, getDeclaringType().getJavaProject()) + Signature.C_GENERIC_START + Long.class.getName() + Signature.C_GENERIC_END));
   }
 
   @Override
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/PlannerFieldNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/PlannerFieldNewOperation.java
index 58a9ace..0519217 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/PlannerFieldNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/PlannerFieldNewOperation.java
@@ -15,6 +15,7 @@
 import org.eclipse.jdt.core.Flags;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.CompareUtility;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
@@ -77,9 +78,9 @@
     if (CompareUtility.equals(superTypeFqn, IRuntimeClasses.AbstractPlannerField)) {
       // super type sig
       StringBuilder superTypeSigBuilder = new StringBuilder(superTypeFqn);
-      superTypeSigBuilder.append("<").append(getTypeName()).append(".").append(SdkProperties.TYPE_NAME_PLANNERFIELD_TABLE).append(",");
+      superTypeSigBuilder.append(Signature.C_GENERIC_START).append(getTypeName()).append(".").append(SdkProperties.TYPE_NAME_PLANNERFIELD_TABLE).append(",");
       superTypeSigBuilder.append(getTypeName()).append(".").append(SdkProperties.TYPE_NAME_PLANNERFIELD_ACTIVITYMAP).append(",");
-      superTypeSigBuilder.append(Long.class.getName()).append(",").append(Long.class.getName()).append(">");
+      superTypeSigBuilder.append(Long.class.getName()).append(",").append(Long.class.getName()).append(Signature.C_GENERIC_END);
       newOp.setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeSigBuilder.toString()));
       createPlannerTable(newOp.getSourceBuilder(), monitor, workingCopyManager);
       createActivityMap(newOp.getSourceBuilder(), monitor, workingCopyManager);
@@ -137,8 +138,8 @@
         || CompareUtility.equals(superTypeFqn, IRuntimeClasses.AbstractExtensibleActivityMap)) {
       // super type sig
       StringBuilder superTypeSigBuilder = new StringBuilder(superTypeFqn);
-      superTypeSigBuilder.append('<').append(Long.class.getName()).append(',');
-      superTypeSigBuilder.append(Long.class.getName()).append('>');
+      superTypeSigBuilder.append(Signature.C_GENERIC_START).append(Long.class.getName()).append(',');
+      superTypeSigBuilder.append(Long.class.getName()).append(Signature.C_GENERIC_END);
       activityMapSuperTypeSig = SignatureCache.createTypeSignature(superTypeSigBuilder.toString());
     }
     activityMapBuilder.setSuperTypeSignature(activityMapSuperTypeSig);
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/SmartFieldNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/SmartFieldNewOperation.java
index 4bea005..1153f85 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/SmartFieldNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/SmartFieldNewOperation.java
@@ -15,6 +15,7 @@
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
 import org.eclipse.scout.sdk.extensions.runtime.classes.IRuntimeClasses;
@@ -56,7 +57,7 @@
     m_formatSource = formatSource;
     // default
     String superTypeName = RuntimeClasses.getSuperTypeName(IRuntimeClasses.ISmartField, getDeclaringType().getJavaProject());
-    setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeName + "<" + Long.class.getName() + ">"));
+    setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeName + Signature.C_GENERIC_START + Long.class.getName() + Signature.C_GENERIC_END));
   }
 
   @Override
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/TreeBoxNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/TreeBoxNewOperation.java
index 3f2fbe9..538256c 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/TreeBoxNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/form/field/TreeBoxNewOperation.java
@@ -15,6 +15,7 @@
 import org.eclipse.jdt.core.Flags;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.CompareUtility;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
@@ -90,7 +91,7 @@
       newOp.addSortedTypeSourceBuilder(SortedMemberKeyFactory.createTypeTeeKey(treeBuilder), treeBuilder);
       // update generic in supertype signature
       StringBuilder superTypeSigBuilder = new StringBuilder(superTypeFqn);
-      superTypeSigBuilder.append("<").append(newOp.getElementName()).append(".").append(SdkProperties.TYPE_NAME_TREEBOX_TREE).append(">");
+      superTypeSigBuilder.append(Signature.C_GENERIC_START).append(newOp.getElementName()).append(".").append(SdkProperties.TYPE_NAME_TREEBOX_TREE).append(Signature.C_GENERIC_END);
       setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeSigBuilder.toString()));
     }
     newOp.setFormatSource(isFormatSource());
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/jdt/annotation/AnnotationNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/jdt/annotation/AnnotationNewOperation.java
index 74505b9..a875a7d 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/jdt/annotation/AnnotationNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/jdt/annotation/AnnotationNewOperation.java
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.operation.jdt.annotation;
 
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -215,7 +216,7 @@
    * @return
    * @see org.eclipse.scout.sdk.sourcebuilder.annotation.AnnotationSourceBuilder#getParameters()
    */
-  public String[] getParameters() {
+  public List<String> getParameters() {
     return m_sourceBuilder.getParameters();
   }
 }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LocalLookupCallNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LocalLookupCallNewOperation.java
index ec81017..22ddb2b 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LocalLookupCallNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LocalLookupCallNewOperation.java
@@ -92,8 +92,8 @@
             refGenericType = validator.getTypeName(SignatureCache.createTypeSignature(Object.class.getName()));
           }
 
-          source.append(refList).append("< ? extends ").append(refLookupRow).append('<').append(refGenericType).append('>').append("> rows = new ");
-          source.append(refArrayList).append('<').append(refLookupRow).append('<').append(refGenericType).append('>').append(">();").append(lineDelimiter);
+          source.append(refList).append(Signature.C_GENERIC_START).append("? extends ").append(refLookupRow).append(Signature.C_GENERIC_START).append(refGenericType).append(Signature.C_GENERIC_END).append(Signature.C_GENERIC_END).append(" rows = new ");
+          source.append(refArrayList).append(Signature.C_GENERIC_START).append(refLookupRow).append(Signature.C_GENERIC_START).append(refGenericType).append(Signature.C_GENERIC_END).append(Signature.C_GENERIC_END).append("();").append(lineDelimiter);
           source.append("  ").append(ScoutUtility.getCommentBlock("Create lookup rows here.")).append(lineDelimiter);
           source.append("  return rows;");
         }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LookupCallNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LookupCallNewOperation.java
index f708e36..9172cd3 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LookupCallNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/lookupcall/LookupCallNewOperation.java
@@ -92,9 +92,9 @@
         StringBuilder ifcSuperInterface = new StringBuilder(IRuntimeClasses.ILookupService);
         String[] typeParams = Signature.getTypeArguments(getServiceSuperTypeSignature());
         if (typeParams != null && typeParams.length > 0) {
-          ifcSuperInterface.append('<');
+          ifcSuperInterface.append(Signature.C_GENERIC_START);
           ifcSuperInterface.append(Signature.toString(typeParams[0]));
-          ifcSuperInterface.append('>');
+          ifcSuperInterface.append(Signature.C_GENERIC_END);
         }
 
         serviceOp.addInterfaceInterfaceSignature(SignatureCache.createTypeSignature(ifcSuperInterface.toString()));
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/outline/OutlineNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/outline/OutlineNewOperation.java
index 9ee6005..056f517 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/outline/OutlineNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/outline/OutlineNewOperation.java
@@ -22,6 +22,7 @@
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jface.text.Document;
 import org.eclipse.scout.commons.CollectionUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
@@ -158,7 +159,7 @@
     String classRef = validator.getTypeName(SignatureCache.createTypeSignature(Class.class.getName()));
     String iOutlineRef = validator.getTypeName(SignatureCache.createTypeSignature(IRuntimeClasses.IOutline));
 
-    StringBuilder genericPart = new StringBuilder().append('<').append(classRef).append("<? extends ").append(iOutlineRef).append(">>");
+    StringBuilder genericPart = new StringBuilder().append(Signature.C_GENERIC_START).append(classRef).append(Signature.C_GENERIC_START).append("? extends ").append(iOutlineRef).append(Signature.C_GENERIC_END).append(Signature.C_GENERIC_END);
 
     source.append(listRef).append(genericPart).append(" outlines = ").append("new ").append(arrayListRef).append(genericPart).append("();").append(lineDelimiter);
     if (outlineTypes != null && outlineTypes.size() > 0) {
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/page/PageNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/page/PageNewOperation.java
index 8a069c0..5140b3c 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/page/PageNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/page/PageNewOperation.java
@@ -15,6 +15,7 @@
 import org.eclipse.jdt.core.Flags;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.scout.commons.CompareUtility;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.nls.sdk.model.INlsEntry;
@@ -130,7 +131,7 @@
 
       // update generic in supertype signature
       StringBuilder superTypeSigBuilder = new StringBuilder(superTypeFqn);
-      superTypeSigBuilder.append("<").append(newOp.getPackageName()).append(".").append(newOp.getElementName()).append(".").append(SdkProperties.TYPE_NAME_OUTLINE_WITH_TABLE_TABLE).append(">");
+      superTypeSigBuilder.append(Signature.C_GENERIC_START).append(newOp.getPackageName()).append(".").append(newOp.getElementName()).append(".").append(SdkProperties.TYPE_NAME_OUTLINE_WITH_TABLE_TABLE).append(Signature.C_GENERIC_END);
       newOp.setSuperTypeSignature(SignatureCache.createTypeSignature(superTypeSigBuilder.toString()));
     }
 
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/service/CalendarServiceNewOperation.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/service/CalendarServiceNewOperation.java
index bd27cdc..22fa0a5 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/service/CalendarServiceNewOperation.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/operation/service/CalendarServiceNewOperation.java
@@ -54,7 +54,7 @@
     TypeSourceBuilder interfaceSourceBuilder = getInterfaceSourceBuilder();
     IMethodSourceBuilder interfaceGetItemsBuilder = new MethodSourceBuilder("getItems");
     interfaceGetItemsBuilder.setFlags(Flags.AccInterface);
-    interfaceGetItemsBuilder.setReturnTypeSignature(SignatureCache.createTypeSignature(Set.class.getName() + "<" + IRuntimeClasses.ICalendarItem + ">"));
+    interfaceGetItemsBuilder.setReturnTypeSignature(SignatureCache.createTypeSignature(Set.class.getName() + Signature.C_GENERIC_START + IRuntimeClasses.ICalendarItem + Signature.C_GENERIC_END));
     interfaceGetItemsBuilder.setCommentSourceBuilder(CommentSourceBuilderFactory.createPreferencesMethodCommentBuilder());
     interfaceGetItemsBuilder.addParameter(new MethodParameter("minDate", SignatureCache.createTypeSignature(Date.class.getName())));
     interfaceGetItemsBuilder.addParameter(new MethodParameter("maxDate", SignatureCache.createTypeSignature(Date.class.getName())));
@@ -65,7 +65,7 @@
     interfaceStoreItemsBuilder.setFlags(Flags.AccInterface);
     interfaceStoreItemsBuilder.setReturnTypeSignature(Signature.SIG_VOID);
     interfaceStoreItemsBuilder.setCommentSourceBuilder(CommentSourceBuilderFactory.createPreferencesMethodCommentBuilder());
-    interfaceStoreItemsBuilder.addParameter(new MethodParameter("items", SignatureCache.createTypeSignature(Set.class.getName() + "<" + IRuntimeClasses.ICalendarItem + ">")));
+    interfaceStoreItemsBuilder.addParameter(new MethodParameter("items", SignatureCache.createTypeSignature(Set.class.getName() + Signature.C_GENERIC_START + IRuntimeClasses.ICalendarItem + Signature.C_GENERIC_END)));
     interfaceStoreItemsBuilder.addParameter(new MethodParameter("delta", Signature.SIG_BOOLEAN));
     interfaceStoreItemsBuilder.addExceptionSignature(SignatureCache.createTypeSignature(IRuntimeClasses.ProcessingException));
     interfaceSourceBuilder.addSortedMethodSourceBuilder(SortedMemberKeyFactory.createMethodAnyKey(interfaceStoreItemsBuilder), interfaceStoreItemsBuilder);
@@ -75,7 +75,7 @@
     IMethodSourceBuilder implementationGetItemsBuilder = new MethodSourceBuilder("getItems");
     implementationGetItemsBuilder.addAnnotationSourceBuilder(AnnotationSourceBuilderFactory.createOverrideAnnotationSourceBuilder());
     implementationGetItemsBuilder.setFlags(Flags.AccPublic);
-    implementationGetItemsBuilder.setReturnTypeSignature(SignatureCache.createTypeSignature(Set.class.getName() + "<" + IRuntimeClasses.ICalendarItem + ">"));
+    implementationGetItemsBuilder.setReturnTypeSignature(SignatureCache.createTypeSignature(Set.class.getName() + Signature.C_GENERIC_START + IRuntimeClasses.ICalendarItem + Signature.C_GENERIC_END));
     implementationGetItemsBuilder.addParameter(new MethodParameter("minDate", SignatureCache.createTypeSignature(Date.class.getName())));
     implementationGetItemsBuilder.addParameter(new MethodParameter("maxDate", SignatureCache.createTypeSignature(Date.class.getName())));
     implementationGetItemsBuilder.addExceptionSignature(SignatureCache.createTypeSignature(IRuntimeClasses.ProcessingException));
@@ -93,7 +93,7 @@
     implementationStoreItemsBuilder.addAnnotationSourceBuilder(AnnotationSourceBuilderFactory.createOverrideAnnotationSourceBuilder());
     implementationStoreItemsBuilder.setFlags(Flags.AccPublic);
     implementationStoreItemsBuilder.setReturnTypeSignature(Signature.SIG_VOID);
-    implementationStoreItemsBuilder.addParameter(new MethodParameter("items", SignatureCache.createTypeSignature(Set.class.getName() + "<" + IRuntimeClasses.ICalendarItem + ">")));
+    implementationStoreItemsBuilder.addParameter(new MethodParameter("items", SignatureCache.createTypeSignature(Set.class.getName() + Signature.C_GENERIC_START + IRuntimeClasses.ICalendarItem + Signature.C_GENERIC_END)));
     implementationStoreItemsBuilder.addParameter(new MethodParameter("delta", Signature.SIG_BOOLEAN));
     implementationStoreItemsBuilder.addExceptionSignature(SignatureCache.createTypeSignature(IRuntimeClasses.ProcessingException));
     implementationStoreItemsBuilder.setMethodBodySourceBuilder(MethodBodySourceBuilderFactory.createSimpleMethodBody(ScoutUtility.getCommentBlock("business logic here.")));
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/AbstractAnnotatableSourceBuilder.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/AbstractAnnotatableSourceBuilder.java
index e25f79f..f7c360a 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/AbstractAnnotatableSourceBuilder.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/AbstractAnnotatableSourceBuilder.java
@@ -11,6 +11,8 @@
 package org.eclipse.scout.sdk.sourcebuilder;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -33,8 +35,8 @@
 
   private int m_flags;
 
-  private List<IAnnotationSourceBuilder> m_annotationSourceBuilders;
-  private Map<CompositeObject, IAnnotationSourceBuilder> m_sortedAnnotationSourceBuilders;
+  private final List<IAnnotationSourceBuilder> m_annotationSourceBuilders;
+  private final Map<CompositeObject, IAnnotationSourceBuilder> m_sortedAnnotationSourceBuilders;
 
   public AbstractAnnotatableSourceBuilder(String elementName) {
     super(elementName);
@@ -50,13 +52,37 @@
   }
 
   protected void createAnnotations(StringBuilder sourceBuilder, String lineDelimiter, IJavaProject ownerProject, IImportValidator validator) throws CoreException {
-    for (IAnnotationSourceBuilder annotationOp : getAnnotationSourceBuilders()) {
-      if (annotationOp != null) {
-        // use as source builder
-        annotationOp.createSource(sourceBuilder, lineDelimiter, ownerProject, validator);
+    List<IAnnotationSourceBuilder> asbs = getAnnotationSourceBuilders();
+    if (m_sortedAnnotationSourceBuilders.isEmpty()) {
+      // unsorted list: use length of source as order
+      List<StringBuilder> annotSrc = new ArrayList<StringBuilder>(asbs.size());
+      for (IAnnotationSourceBuilder sb : asbs) {
+        if (sb != null) {
+          StringBuilder src = new StringBuilder();
+          sb.createSource(src, lineDelimiter, ownerProject, validator);
+          annotSrc.add(src);
+        }
+      }
+      Collections.sort(annotSrc, new Comparator<StringBuilder>() {
+        @Override
+        public int compare(StringBuilder o1, StringBuilder o2) {
+          return Integer.valueOf(o1.length()).compareTo(Integer.valueOf(o2.length()));
+        }
+      });
+
+      for (StringBuilder sb : annotSrc) {
+        sourceBuilder.append(sb);
         sourceBuilder.append(lineDelimiter);
       }
     }
+    else {
+      for (IAnnotationSourceBuilder sb : asbs) {
+        if (sb != null) {
+          sb.createSource(sourceBuilder, lineDelimiter, ownerProject, validator);
+          sourceBuilder.append(lineDelimiter);
+        }
+      }
+    }
   }
 
   public void setFlags(int flags) {
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilder.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilder.java
index 18a1113..9472b4f 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilder.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilder.java
@@ -15,6 +15,7 @@
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.scout.commons.CollectionUtility;
 import org.eclipse.scout.commons.StringUtility;
 import org.eclipse.scout.sdk.util.signature.IImportValidator;
 import org.eclipse.scout.sdk.util.signature.SignatureUtility;
@@ -45,12 +46,11 @@
   @Override
   public void createSource(StringBuilder source, String lineDelimiter, IJavaProject ownerProject, IImportValidator validator) throws CoreException {
     source.append("@" + SignatureUtility.getTypeReference(getSignature(), validator));
-    String[] params = getParameters();
-    if (params != null && params.length > 0) {
+    if (m_parameters.size() > 0) {
       source.append("(");
-      for (int i = 0; i < params.length; i++) {
-        source.append(params[i]);
-        if (i < (params.length - 1)) {
+      for (int i = 0; i < m_parameters.size(); i++) {
+        source.append(m_parameters.get(i));
+        if (i < (m_parameters.size() - 1)) {
           source.append(",");
         }
       }
@@ -74,8 +74,8 @@
   }
 
   @Override
-  public String[] getParameters() {
-    return m_parameters.toArray(new String[m_parameters.size()]);
+  public List<String> getParameters() {
+    return CollectionUtility.arrayList(m_parameters);
   }
 
 }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/IAnnotationSourceBuilder.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/IAnnotationSourceBuilder.java
index 681c221..3be7ce9 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/IAnnotationSourceBuilder.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/IAnnotationSourceBuilder.java
@@ -10,6 +10,8 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.sourcebuilder.annotation;
 
+import java.util.List;
+
 import org.eclipse.scout.sdk.sourcebuilder.ISourceBuilder;
 
 /**
@@ -40,6 +42,6 @@
   /**
    * @return
    */
-  String[] getParameters();
+  List<String> getParameters();
 
 }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java
index 4382105..2052f5c 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java
@@ -57,6 +57,7 @@
 import org.eclipse.scout.sdk.util.signature.SignatureUtility;
 import org.eclipse.scout.sdk.util.type.IMethodFilter;
 import org.eclipse.scout.sdk.util.type.ITypeFilter;
+import org.eclipse.scout.sdk.util.type.MethodFilters;
 import org.eclipse.scout.sdk.util.type.TypeComparators;
 import org.eclipse.scout.sdk.util.type.TypeFilters;
 import org.eclipse.scout.sdk.util.type.TypeUtility;
@@ -736,7 +737,7 @@
       if (codeIdSig == null) {
         return null;
       }
-      return SignatureCache.createTypeSignature(IRuntimeClasses.ICode + '<' + Signature.toString(codeIdSig) + '>');
+      return SignatureCache.createTypeSignature(IRuntimeClasses.ICode + Signature.C_GENERIC_START + Signature.toString(codeIdSig) + Signature.C_GENERIC_END);
     }
   }
 
@@ -877,35 +878,46 @@
       Iterator<IType> topDownIterator = bottomUpAffectedTypes.descendingIterator();
       while (topDownIterator.hasNext()) {
         IType t = topDownIterator.next();
-        IMethod m = TypeUtility.getMethod(t, methodName);
-        if (TypeUtility.exists(m)) {
-          if (newMethod != null) {
-            newMethod.pushMethod(m);
-          }
-          else {
-            if (methodType == 0) {
-              IAnnotation configPropAnnotation = JdtUtility.getAnnotation(m, IRuntimeClasses.ConfigProperty);
-              if (TypeUtility.exists(configPropAnnotation)) {
-                methodType = ConfigurationMethod.PROPERTY_METHOD;
-
-                if (!StringUtility.hasText(configPropertyType)) {
-                  configPropertyType = JdtUtility.getAnnotationValueString(configPropAnnotation, "value");
-                }
-              }
-              else {
-                IAnnotation configOpAnnotation = JdtUtility.getAnnotation(m, IRuntimeClasses.ConfigOperation);
-                if (TypeUtility.exists(configOpAnnotation)) {
-                  methodType = ConfigurationMethod.OPERATION_METHOD;
-                }
-              }
-            }
-
-            if (methodType != 0) {
-              newMethod = new ConfigurationMethod(declaringType, superTypeHierarchy, methodName, methodType);
+        Set<IMethod> methods = TypeUtility.getMethods(t, MethodFilters.getNameFilter(methodName));
+        for (IMethod m : methods) {
+          if (TypeUtility.exists(m)) {
+            if (newMethod != null) {
               newMethod.pushMethod(m);
+            }
+            else {
+              if (methodType == 0) {
+                IAnnotation configPropAnnotation = JdtUtility.getAnnotation(m, IRuntimeClasses.ConfigProperty);
+                if (TypeUtility.exists(configPropAnnotation)) {
+                  methodType = ConfigurationMethod.PROPERTY_METHOD;
 
-              if (methodType == ConfigurationMethod.PROPERTY_METHOD && StringUtility.hasText(configPropertyType)) {
-                newMethod.setConfigAnnotationType(configPropertyType);
+                  if (!StringUtility.hasText(configPropertyType)) {
+                    String annotValue = JdtUtility.getAnnotationValueString(configPropAnnotation, "value");
+                    if (annotValue != null) {
+                      int lastDot = annotValue.lastIndexOf('.');
+                      if (lastDot > 0 && annotValue.length() > lastDot) {
+                        annotValue = annotValue.substring(lastDot + 1);
+                      }
+                    }
+                    if (StringUtility.hasText(annotValue)) {
+                      configPropertyType = annotValue;
+                    }
+                  }
+                }
+                else {
+                  IAnnotation configOpAnnotation = JdtUtility.getAnnotation(m, IRuntimeClasses.ConfigOperation);
+                  if (TypeUtility.exists(configOpAnnotation)) {
+                    methodType = ConfigurationMethod.OPERATION_METHOD;
+                  }
+                }
+              }
+
+              if (methodType != 0) {
+                newMethod = new ConfigurationMethod(declaringType, superTypeHierarchy, methodName, methodType);
+                newMethod.pushMethod(m);
+
+                if (methodType == ConfigurationMethod.PROPERTY_METHOD && StringUtility.hasText(configPropertyType)) {
+                  newMethod.setConfigAnnotationType(configPropertyType);
+                }
               }
             }
           }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/config/parser/MenuTypeParsers.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/config/parser/MenuTypeParsers.java
index f66b25b..5882f8f 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/config/parser/MenuTypeParsers.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/config/parser/MenuTypeParsers.java
@@ -64,7 +64,7 @@
     if (validator != null) {
       String iMenuTypeName = validator.getTypeName(SignatureCache.createTypeSignature(IRuntimeClasses.IMenuType));
       String collUtilityName = validator.getTypeName(SignatureCache.createTypeSignature(IRuntimeClasses.CollectionUtility));
-      source.append(collUtilityName).append(".<").append(iMenuTypeName).append("> hashSet(");
+      source.append(collUtilityName).append(".").append(Signature.C_GENERIC_START).append(iMenuTypeName).append(Signature.C_GENERIC_END).append(" hashSet(");
     }
 
     boolean itemFound = false;