diff --git a/org.eclipse.scout.maven.plugins.updatesite/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.maven.plugins.updatesite/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..f2acd14
--- /dev/null
+++ b/org.eclipse.scout.maven.plugins.updatesite/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,56 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Eclipse Scout
+formatter_settings_version=12
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/org.eclipse.scout.maven.plugins.updatesite/pom.xml b/org.eclipse.scout.maven.plugins.updatesite/pom.xml
index 256d4dd..74e653f 100644
--- a/org.eclipse.scout.maven.plugins.updatesite/pom.xml
+++ b/org.eclipse.scout.maven.plugins.updatesite/pom.xml
@@ -35,7 +35,7 @@
       <artifactId>maven-core</artifactId>
       <version>3.0</version>
     </dependency>
-        <dependency>
+    <dependency>
       <groupId>org.apache.maven.plugin-tools</groupId>
       <artifactId>maven-plugin-annotations</artifactId>
       <version>3.2</version>
@@ -48,8 +48,6 @@
     </dependency>
   </dependencies>
 
-
-
   <build>
     <plugins>
       <plugin>
@@ -102,15 +100,6 @@
             </configuration>
           </plugin>
         </plugins>
-        <pluginManagement>
-          <plugins>
-            <!-- <plugin> -->
-            <!-- <groupId>org.eclipse.tycho</groupId> -->
-            <!-- <artifactId>tycho-compiler-plugin</artifactId> -->
-            <!-- <version>0.16.0</version> -->
-            <!-- </plugin> -->
-          </plugins>
-        </pluginManagement>
       </build>
     </profile>
     <profile>
@@ -122,7 +111,5 @@
         </pluginManagement>
       </build>
     </profile>
-
   </profiles>
-
 </project>
diff --git a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/AbstractStagingMojo.java b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/AbstractStagingMojo.java
index 78707fe..acb54a4 100644
--- a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/AbstractStagingMojo.java
+++ b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/AbstractStagingMojo.java
@@ -5,9 +5,10 @@
 import org.apache.maven.plugin.AbstractMojo;
 
 public abstract class AbstractStagingMojo extends AbstractMojo {
+
   /**
    * The directory where the generated archive file will be put.
-   *
+   * 
    * @parameter default-value="${project.build.directory}"
    */
   private String outputDirectory;
@@ -20,9 +21,7 @@
     this.outputDirectory = outputDirectory;
   }
 
-  public File getStageTargetDir(){
-    return new File(getOutputDirectory(),"stageTarget");
+  public File getStageTargetDir() {
+    return new File(getOutputDirectory(), "stageTarget");
   }
-
-
 }
diff --git a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java
index 00a3c2a..09cf55f 100644
--- a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java
+++ b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/FileUtility.java
@@ -45,7 +45,7 @@
 
 /**
  * <h4>FileUtility</h4>
- *
+ * 
  * @author aho
  * @since 1.1.0 (22.01.2011)
  */
@@ -90,14 +90,11 @@
           catch (IOException e) {
             // void
           }
-
         }
-
       }
     }
   }
 
-
   public static void copyToDir(File input, File toDir) throws IOException {
     copyToDir(input, toDir, input.getParentFile().getAbsoluteFile().toURI());
   }
diff --git a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/PublishMojo.java b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/PublishMojo.java
index 88f38cf..101e8bf 100644
--- a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/PublishMojo.java
+++ b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/PublishMojo.java
@@ -53,5 +53,4 @@
   public void setStagingArea(String stagingArea) {
     this.stagingArea = stagingArea;
   }
-
 }
diff --git a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/StagingMojo.java b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/StagingMojo.java
index 6b545ff..cda3bdb 100644
--- a/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/StagingMojo.java
+++ b/org.eclipse.scout.maven.plugins.updatesite/src/main/java/org/eclipse/scout/maven/plugins/updatesite/StagingMojo.java
@@ -33,7 +33,7 @@
 
 /**
  * Stage the updatesite to staging area of the build server.
- *
+ * 
  * @goal stage
  */
 public class StagingMojo extends AbstractStagingMojo {
@@ -48,14 +48,14 @@
 
   /**
    * The directory where the generated archive file will be put.
-   *
+   * 
    * @parameter default-value="${project.build.directory}/repository"
    */
   private String p2InputDirectory;
 
   /**
    * The directory where the generated archive file will be put.
-   *
+   * 
    * @parameter
    */
   private String updatesiteDir;
@@ -70,7 +70,6 @@
    */
   private String repositoryUrl;
 
-
   /**
    * @parameter default-value=100
    */
@@ -105,7 +104,7 @@
   }
 
   public String getCompositeUrl() {
-    return getRepositoryUrl()+ "/" + getCompositeDirName();
+    return getRepositoryUrl() + "/" + getCompositeDirName();
   }
 
   private File getStageDir() {
@@ -119,8 +118,8 @@
     File stageTargetDir = getStageTargetDir();
     stageTargetDir.mkdirs();
     String timestamp = createTimestamp();
-    File zipFile = createStageZip(getStageDir(),timestamp);
-    createDoStageFile(zipFile,timestamp);
+    File zipFile = createStageZip(getStageDir(), timestamp);
+    createDoStageFile(zipFile, timestamp);
   }
 
   public File createCompositeRepo() throws MojoExecutionException {
@@ -331,11 +330,10 @@
   }
 
   /**
-   * @param repositoryUrl the repositoryUrl to set
+   * @param repositoryUrl
+   *          the repositoryUrl to set
    */
   public void setRepositoryUrl(String repositoryUrl) {
     this.repositoryUrl = repositoryUrl;
   }
-
-
 }
diff --git a/org.eclipse.scout.maven.plugins.updatesite/src/test/java/org/eclipse/scout/maven/plugins/updatesite/StagingTest.java b/org.eclipse.scout.maven.plugins.updatesite/src/test/java/org/eclipse/scout/maven/plugins/updatesite/StagingTest.java
index 311b17f..f54b4cf 100644
--- a/org.eclipse.scout.maven.plugins.updatesite/src/test/java/org/eclipse/scout/maven/plugins/updatesite/StagingTest.java
+++ b/org.eclipse.scout.maven.plugins.updatesite/src/test/java/org/eclipse/scout/maven/plugins/updatesite/StagingTest.java
@@ -24,8 +24,7 @@
 /**
  *
  */
-public class StagingTest
-{
+public class StagingTest {
 
   private File tempDir;
 
@@ -47,7 +46,7 @@
 
   @After
   public void tearDown() throws IOException {
-      FileUtility.deleteFile(tempDir);
+    FileUtility.deleteFile(tempDir);
   }
 
   /**
@@ -68,7 +67,7 @@
   public void testCreateStageZip() throws MojoExecutionException {
     StagingMojo stagingMojo = new StagingMojo();
     stagingMojo.setOutputDirectory(targetDirectory.getPath());
-    File zipFile = stagingMojo.createStageZip(sourceDirectory,"");
+    File zipFile = stagingMojo.createStageZip(sourceDirectory, "");
     assertTrue(zipFile.exists());
   }
 
@@ -87,6 +86,4 @@
     String pathname = getClass().getResource("/compositeContent.jar").getFile();
     return new File(pathname);
   }
-
-
 }
diff --git a/org.eclipse.scout.parent/pom.xml b/org.eclipse.scout.parent/pom.xml
index f25b01d..94f6833 100755
--- a/org.eclipse.scout.parent/pom.xml
+++ b/org.eclipse.scout.parent/pom.xml
@@ -9,7 +9,6 @@
   Contributors:
      Stephan Leicht Vogt - initial implementation
 -->
-
 <project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -238,13 +237,15 @@
           </configuration>
         </plugin>
 
-        <plugin><!-- Used for attaching target-files to the artifact in org.eclipse.scout.target  -->
+        <plugin>
+          <!-- Used for attaching target-files to the artifact in org.eclipse.scout.target -->
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>build-helper-maven-plugin</artifactId>
           <version>1.7</version>
         </plugin>
 
-        <plugin><!-- Activates Tycho so Maven knows the new packaging types eclipse-plugin... -->
+        <plugin>
+          <!-- Activates Tycho so Maven knows the new packaging types eclipse-plugin... -->
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-maven-plugin</artifactId>
           <version>${tycho.version}</version>
@@ -294,8 +295,8 @@
             </extraClasspathElements>
             <compilerArgument>-warn:-deprecation,raw,unchecked</compilerArgument>
             <compilerArguments>
-              <inlineJSR/>
-              <enableJavadoc/>
+              <inlineJSR />
+              <enableJavadoc />
               <encoding>${project.build.sourceEncoding}</encoding>
               <log>${project.build.directory}/@dot.xml</log>
             </compilerArguments>
@@ -323,13 +324,13 @@
             <format>yyyyMMdd-HHmm</format>
             <timestampProvider>jgit</timestampProvider>
             <jgit.ignore>
-            pom.xml
+              pom.xml
             </jgit.ignore>
             <sourceReferences>
               <generate>true</generate>
             </sourceReferences>
             <archive>
-               <addMavenDescriptor>false</addMavenDescriptor>
+              <addMavenDescriptor>false</addMavenDescriptor>
             </archive>
             <additionalFileSets>
               <fileSet>
@@ -347,13 +348,13 @@
           <artifactId>tycho-surefire-plugin</artifactId>
           <version>${tycho.version}</version>
           <configuration>
-<!--             <debugPort>5050</debugPort> -->
+            <!-- <debugPort>5050</debugPort> -->
             <!-- don't run tests in UI thread and harness per default (i.e., run them headless) -->
             <!-- see http://wiki.eclipse.org/Minerva#Headless_Tests -->
             <!-- see http://wiki.eclipse.org/Tycho/Packaging_Types#eclipse-test-plugin for semantics of useUIHarness etc. -->
             <useUIHarness>false</useUIHarness>
             <useUIThread>false</useUIThread>
-            <!-- Convention: We don't use test suites. All Test classes should end with "*Test.java". Everything else is not executed by default.-->
+            <!-- Convention: We don't use test suites. All Test classes should end with "*Test.java". Everything else is not executed by default. -->
             <includes>
               <include>**/*Test.java</include>
             </includes>
@@ -395,8 +396,8 @@
           <groupId>org.eclipse.tycho.extras</groupId>
           <artifactId>tycho-source-feature-plugin</artifactId>
           <version>${tycho-extras.version}</version>
-           <configuration>
-             <archive>
+          <configuration>
+            <archive>
               <addMavenDescriptor>false</addMavenDescriptor>
             </archive>
           </configuration>
@@ -650,11 +651,10 @@
               <artifactId>tycho-compiler-plugin</artifactId>
               <version>${tycho.version}</version>
               <configuration>
-                <!--
-                  this tells Tycho to use JRE libraries that match bundle runtime execution environment
-                  http://wiki.eclipse.org/Tycho/Release_Notes/0.14
-                  TODO provide CBI-specific wiki that explains how to setup BREE libraries and toolchain.xml
-                -->
+                <!-- this tells Tycho to use JRE libraries that match bundle
+                  runtime execution environment http://wiki.eclipse.org/Tycho/Release_Notes/0.14
+                  TODO provide CBI-specific wiki that explains how to setup BREE libraries
+                  and toolchain.xml -->
                 <useJDK>BREE</useJDK>
               </configuration>
             </plugin>
@@ -682,23 +682,23 @@
       <build>
         <pluginManagement>
           <plugins>
-             <plugin>
-               <groupId>org.jacoco</groupId>
-               <artifactId>jacoco-maven-plugin</artifactId>
-               <version>${jacoco.version}</version>
-               <executions>
-                 <execution>
-                   <goals>
-                       <goal>prepare-agent</goal>
-                   </goals>
-                   <configuration>
-                       <append>true</append>
-                       <destFile>${sonar.jacoco.reportPath}</destFile>
-                   </configuration>
-                 </execution>
-               </executions>
-             </plugin>
-           </plugins>
+            <plugin>
+              <groupId>org.jacoco</groupId>
+              <artifactId>jacoco-maven-plugin</artifactId>
+              <version>${jacoco.version}</version>
+              <executions>
+                <execution>
+                  <goals>
+                    <goal>prepare-agent</goal>
+                  </goals>
+                  <configuration>
+                    <append>true</append>
+                    <destFile>${sonar.jacoco.reportPath}</destFile>
+                  </configuration>
+                </execution>
+              </executions>
+            </plugin>
+          </plugins>
         </pluginManagement>
         <plugins>
           <plugin>
@@ -900,13 +900,5 @@
         <platform-version>[3.9,3.10)</platform-version>
       </properties>
     </profile>
-
-<!-- 	<profile> -->
-<!-- 		<id>stage-scout-nightly</id> -->
-<!-- 		<properties> -->
-<!-- 			<stageTargetDir>nightly/3.9</stageTargetDir> -->
-<!-- 			<buildType>N</buildType> -->
-<!-- 		</properties> -->
-<!-- 	</profile> -->
   </profiles>
 </project>
diff --git a/org.eclipse.scout.rap.repository/pom.xml b/org.eclipse.scout.rap.repository/pom.xml
index 970bf6f..1c46572 100644
--- a/org.eclipse.scout.rap.repository/pom.xml
+++ b/org.eclipse.scout.rap.repository/pom.xml
@@ -10,7 +10,6 @@
      Ken Lee - initial contribution
      Stephan Leicht Vogt - small corrections
 -->
-
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <modelVersion>4.0.0</modelVersion>
diff --git a/org.eclipse.scout.repository/pom.xml b/org.eclipse.scout.repository/pom.xml
index d8b8097..735b944 100644
--- a/org.eclipse.scout.repository/pom.xml
+++ b/org.eclipse.scout.repository/pom.xml
@@ -9,7 +9,6 @@
   Contributors:
      Stephan Leicht Vogt - initial implementation
 -->
-
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <modelVersion>4.0.0</modelVersion>
@@ -147,36 +146,36 @@
       </build>
     </profile>
 
-	<profile>
-		<id>eclipse-stage</id>
-		<properties>
-			<stageTargetDir>nightly/3.9</stageTargetDir>
-		</properties>
+    <profile>
+      <id>eclipse-stage</id>
+      <properties>
+        <stageTargetDir>nightly/3.9</stageTargetDir>
+      </properties>
 
-		<build>
-			<plugins>
-				<plugin>
-					<groupId>org.eclipse.scout.maven.plugins</groupId>
-					<artifactId>org.eclipse.scout.maven.plugins.updatesite</artifactId>
-					<version>1.0.0-SNAPSHOT</version>
-					<configuration>
-						<updatesiteDir>${buildId}</updatesiteDir>
-						<compositeDir>${stageTargetDir}/scout.main</compositeDir>
-						<maxSize>3</maxSize>
-					</configuration>
-					<executions>
-						<execution>
-							<id>stage</id>
-							<phase>install</phase>
-							<goals>
-								<goal>stage</goal>
-								<goal>publish</goal>
-							</goals>
-						</execution>
-					</executions>
-				</plugin>
-			</plugins>
-		</build>
-	</profile>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.eclipse.scout.maven.plugins</groupId>
+            <artifactId>org.eclipse.scout.maven.plugins.updatesite</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+            <configuration>
+              <updatesiteDir>${buildId}</updatesiteDir>
+              <compositeDir>${stageTargetDir}/scout.main</compositeDir>
+              <maxSize>3</maxSize>
+            </configuration>
+            <executions>
+              <execution>
+                <id>stage</id>
+                <phase>install</phase>
+                <goals>
+                  <goal>stage</goal>
+                  <goal>publish</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 </project>
